您好,登錄后才能下訂單哦!
一 環境以及軟件版本:
系統:CentOS Linux release 7.2.1511 (Core)
mysql:Server version: 5.6.33
Amoeba:amoeba-mysql-3.0.5-RC-distribution
JDK:1.7.0_80-b15 (Amoeba的運行需要jdk)
二 安裝Amoeba:
1 下載好所需軟件:
amoeba-mysql-3.0.5-RC-distribution.zip jdk-7u80-linux-x64.rpm
2 安裝jdk
# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
3 解壓Amoeba
# mv amoeba-mysql-3.0.5-RC /usr/local/amoeba
# mv amoeba-mysql-3.0.5-RC /usr/local/amoeba
# cd /usr/local/amoeba/conf/
# vim amoeba.xml
<property name="port">3306</property> #設置amoeba監聽的端口,默認是8066
<property name="ipAddress">10.0.0.159</property> #設置amoeba監聽的ip地址
<property name="user">root</property> #設置連接amoeba的用戶
<property name="password">123456</property> #設置連接amoeba的密碼
#(這里的賬號密碼和amoeba連接后端數據庫服務器的密碼無關)
<property name="defaultPool">master</property> #設置amoeba默認的池,這里設置為matster
#這兩個選項默認是注銷掉的,需要取消注釋,這里用來指定寫庫和讀庫
<property name="writePool">master</property>
<property name="readPool">multiPool</property> #這給的是一個組,如果這個組里有多個dbServers則可以負載均衡,此組在 dbServers.xml中設置
設置mysql庫的信息,在當前目錄下的dbServers.xml文件里
<!-- mysql port --> #設置amoeba連接后端mysql的端口
<property name="port">3306</property>
<!-- mysql schema --> #設置缺省的數據庫,當連接amoeba時,操作表必須顯式的指定數據庫名,即采用dbname.tablename的方式,不支持 use dbname指定缺省庫,因為操作會調度到各個后端dbserver
<property name="schema">test</property>
<!-- mysql user --> #設置amoeba連接后端mysql的用戶名和密碼
<property name="user">amoeba</property>
<property name="password">123456</property>
<dbServer name="master" parent="abstractServer">#設置一個后端的dbServer,這里設置連接可寫的master庫,此名字可自定義,但要和amoeba.xml中調用的名字一致即可。
<factoryConfig>
<!-- mysql ip --> #后端mysql的ip地址
<property name="ipAddress">10.0.0.176</property>
</factoryConfig>
</dbServer>
<dbServer name="slave" parent="abstractServer"> #設置一個后端的dbServer,這里設置連接可讀的salve,此名字可自定義,但要和amoeba.xml中調用的名字一致即可。
<factoryConfig>
<!-- mysql ip --> #后端mysql的ip地址
<property name="ipAddress">10.0.0.193</property>
</factoryConfig>
</dbServer>
<dbServer name="multiPool" virtual="true"> #定義一個dbserver組
<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
<!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
##選擇調度算法,1表示輪詢負載均衡,2表示權重,3表示HA, 這里選擇1
<property name="loadbalance">1</property>
<!-- Separated by commas,such as: server1,server2,server1 -->
<property name="poolNames">slave</property> #組成員,當有多個時用逗號分隔
</poolConfig>
</dbServer>
三 mysql授權amoeba用戶登錄(此處我的兩臺mysql服務器master和slave已經做好了主從同步,并且已經驗證成功,需要做主從同步請看https://blog.51cto.com/zengzeyang/1911173)
master上授權:
mysql> grant select,insert,update,delete on . to 'amoeba'@'10.0.0.%' identified by '123456';
mysql> flush privileges;
slave上授權:
mysql> grant select on . to 'amoeba'@'10.0.0.%' identified by '123456';
mysql> flush privileges;
注意:此處授權的用戶密碼要和dbServers.xml中配置的一致。如果你的mysql開啟所有庫主從同步則你在主上授權的用戶會同步到從庫,解決方法是:1在從庫上降權;2主從同步時不讓mysql庫同步
四 啟動amoeba:
#cd /usr/local/amoeba/bin
添加JAVA_HOME:
JAVA_HOME=/usr/java/jdk1.7.0_80
# cd /usr/local/amoeba/
# vim jvm.properties
修改VM_OPTIONS:
JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"
# /usr/local/amoeba/bin/launcher
2018-01-02 23:34:21 [INFO] Project Name=Amoeba-MySQL, PID=48981 , starting...
log4j:WARN log4j config load completed from file:/usr/local/amoeba/conf/log4j.xml
2018-01-02 23:34:22,152 INFO context.MysqlRuntimeContext - Amoeba for Mysql current versoin=5.1.45- mysql-amoeba-proxy-3.0.4-BETA
log4j:WARN ip access config load completed from file:/usr/local/amoeba/conf/access_list.conf
2018-01-02 23:34:22,520 INFO net.ServerableConnectionManager - Server listening on /10.0.0.159:3306.
#啟動成功
# ss -tanlp
LISTE 128 ::ffff:10.0.0.159:3306 :::*
五 測試:用另外的mysql客戶端連接amoeba,測試時我暫停了主從同步,以便更直接的看出效果
主庫上新增一條數據
從庫上加入一條數據
回到mysql連接的客戶端驗證:
只能查看從庫的數據,說明基本成功,進一步驗證,在客戶端插入一條數據
并且客戶端在從庫上沒有查詢到新插入的數據,回到主庫確認下:
到此驗證成功,開啟主從同步即可實現讀寫分離(開始同步前,請自行清理掉有差異的數據,以便主從能正常運行)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。