Amoeba for mysql 讀寫分離


        Amoeba(變形蟲)項目 http://docs.hexnova.com/amoeba/ ,該開源框架於2008年 開始發佈一款 Amoeba for Mysql軟件。這個軟件致力於MySQL的分佈式數據庫前端代理層,它主要在應用層訪問MySQL的 時候充當SQL路由功能,專一於分佈式數據庫代理層(Database Proxy)開發。座落與 Client、DB Server(s)之間,對客戶端透明。具備負載均衡、高可用性、SQL 過濾、讀寫分離、可路由相關的到目標數據庫、可併發請求多臺數據庫合併結果。 經過Amoeba你可以完成多數據源的高可用、負載均衡、數據切片的功能,目前Amoeba已在不少 企業的生產線上面使用,但amoeba目前不支持事務。

環境:數據庫master服務器 192.168.32.131
數據庫slave服務器 192.168.32.132 
amoeba for mysql 192.168.32.130

1、主從配置過程略(見上下文)

2、master 建立讀寫分離鏈接用戶
mysql > grant all on *.* to 'proxy'@'192.168.32.130' identified by 'proxy'; #從服務器會自動同步

3、amoeba代理服務器 
一、amoeba基於Java開發,首先安裝jdk
官網最新jdk wget -c  http://download.oracle.com/otn-pub/java/jdk/8u31-b13/jdk-8u31-linux-i586.rpm
chmod 755 jdk-8u31-linux-i586.rpm
rpm -ivh jdk-8u31-linux-i586.rpm
vim /etc/profile #配置jdk環境變量
# set JAVA declare
JAVA_HOME=/usr/java/jdk1.8.0_31
CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

. /etc/profile 
java -version #驗證版本

二、安裝amoeba
官網  http://sourceforge.net/projects/amoeba/files/
mkdir /usr/local/amoeba
unzip -d /usr/local/amoeba/ amoeba-mysql-3.0.5-RC-distribution.zip #解壓
cd /usr/local/amoeba/amoeba-mysql-3.0.5-RC/

配置文件:
amoeba.xml #主配置文件
dbServers.xml #後端服務器配置文件
rule.xml #Query路由規則的信息
access_list.conf #訪問控制

vim amoeba.xml 
 <property name="port">8066</property>     #監聽端口

 <!-- bind ipAddress -->
 <property name="ipAddress">192.168.32.130</property>    #監聽IP

<property name="user">amoeba</property>     #鏈接賬號
<property name="password">amoeba</property> 

<property name="writePool">server2</property>   #定義寫組
<property name="readPool">server1</property>    #定義讀組



vim conf/dbServers.xml
 <!-- mysql port -->
 <property name="port">3306</property>   #鏈接後端數據庫使用的用戶,密碼

 <!-- mysql schema -->
 <property name="schema">test</property>  #定義適用數據庫
 <property name="schema">testing</property>
 <!-- mysql user -->
 <property name="user">proxy</property>
<property name="password">proxy</property>

 <dbServer name="server1"  parent="abstractServer">    #定義後端2臺server信息
                <factoryConfig>
                        <!-- mysql ip -->
                        <property name="ipAddress">192.168.32.131</property>
                </factoryConfig>
        </dbServer>

        <dbServer name="server2"  parent="abstractServer">
                <factoryConfig>
                        <!-- mysql ip -->
                        <property name="ipAddress">192.168.32.132</property>
                </factoryConfig>
        </dbServer>

         <dbServer name="multiPool" virtual="true">    #集羣和負載均衡
                <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
                        <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
                        <property name="loadbalance">1</property>

                        <!-- Separated by commas,such as: server1,server2,server1 -->
                        <property name="poolNames">server1</property>
                </poolConfig>
        </dbServer>



/usr/local/amoeba/amoeba-mysql-3.0.5-RC/bin/launcher & #啓動服務

4、客戶端鏈接測試

一、讀
關閉master數據庫
mysql -h 192.168.32.130 -u amoeba -p -P 8066 #鏈接amoeba
mysql> show databases; #查詢的是slave上的數據庫

二、寫
mysql -h 192.168.32.130 -u amoeba -p -P 8066
寫到master後,slave會自動同步
相關文章
相關標籤/搜索