標籤:centos6.5 資料庫 amoeba mysql
Amoeba是一個以MySQL為底層資料存放區,並對應用提供MySQL協議介面的proxy。它集中地響應應用的請求,依據使用者事先設定的規則,將SQL請求發送到特定的資料庫上執行。基於此可以實現負載平衡、讀寫分離、高可用性等需求。與MySQL官方的MySQL Proxy相比,作者強調的是amoeba配置的方便(基於XML的設定檔,用SQLJEP文法書寫規則,比基於lua指令碼的MySQL Proxy簡單)
不足
a)、目前還不支援事務b)、暫時不支援預存程序(近期會支援)
c)、不適合從amoeba導資料的情境或者對大資料量查詢的query並不合適(比如一次請求返回10w以上甚至更多資料的場合)
d)、暫時不支援分庫分表,amoeba目前只做到分資料庫執行個體,每個被切分的節點需要保持庫表結構一致:
Amoeba:阿米巴原蟲
實驗環境:ip
master:192.168.122.26
slave:192.168.122.165
client:192.168.122.62
第一步:兩台mysql實現主從複製。從可以有多台(不再贅述)
第二部:安裝Amoeba
安裝Amoeba需要java環境,
yum localinsatll jdk-7ull-linux-x64.rpm
A. JAVA環境
[[email protected] ~]# java -version //查看java安裝高本版的
java version "1.7.0_09-icedtea"
OpenJDK Runtime Environment (rhel-2.3.4.1.el6_3-x86_64)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)
d第三部:
vim/etc/profile
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/70/F5/wKioL1XCHAjgvDr1AADN-EqRUa8441.jpg" title="21.png" alt="wKioL1XCHAjgvDr1AADN-EqRUa8441.jpg" />
source /etc/profile
Amoeba 不許要安裝,只需要解壓即可
mkdir /usr/local/amoeba
# tar xf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
在master端授權一個使用者給讀寫權限
mysql> grant select, insert, update,delete on *.* to [email protected]‘192.168.122.%‘ identified by ‘123‘;
mysql> flush privileges;
查看slave伺服器使用者
mysql> select user host from mysql.user;
mysql> delete from mysql.user where user=‘amoeba‘; 刪除自動同步的使用者
mysql>grant select on *.* to [email protected]‘192.168.122.%‘identified by ‘123‘; 建立一個唯讀用 戶
mysql> flush privileges;
mysql> show grants for ‘amoeba‘@‘192.168.122.%‘; 查詢授權使用者
設定資料庫的串連池
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/70/F5/wKioL1XCIQaymxgSAAFaGDTMFss095.jpg" title="21.png" alt="wKioL1XCIQaymxgSAAFaGDTMFss095.jpg" />
vim dbServers.xml
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/70/F5/wKioL1XCIR2QbGlWAAKUFIIB6io218.jpg" title="22.png" alt="wKioL1XCIR2QbGlWAAKUFIIB6io218.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/70/F9/wKiom1XCHzTwBXpDAAME3o3IMZA861.jpg" title="23.png" alt="wKiom1XCHzTwBXpDAAME3o3IMZA861.jpg" />
vim amoeba.xml 的修改
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/70/F9/wKiom1XCIT-ieMqvAAILtcggO2Q705.jpg" title="21.png" alt="wKiom1XCIT-ieMqvAAILtcggO2Q705.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/70/F9/wKiom1XCIVHiVme6AAI58pdPYd4055.jpg" title="22.png" alt="wKiom1XCIVHiVme6AAI58pdPYd4055.jpg" />
提示:
defaultPool:配置了預設的資料庫節點,一些除了SELECTUPDATE INSERT DELETE的語句都會在defaultPool執行。
writePool:配置了資料庫寫庫,通常配為Master,如這裡就配置為之前定義的Master資料庫。
readPool:配置了資料庫讀庫,通常配為Slave或者Slave組成的資料庫池,如這裡就配置之前的virtualSlave資料庫池。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/70/F5/wKioL1XCI1mxQ4AHAAKPkLEFkL4552.jpg" title="23.png" alt="wKioL1XCI1mxQ4AHAAKPkLEFkL4552.jpg" />
四、啟動並測試
1. 啟動
[[email protected] conf]# /usr/local/amoeba/bin/amoeba start
The stack size specified is too small, Specify at least 160k //提示棧太小128k
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
[[email protected] conf]# vim /usr/local/amoeba/bin/amoeba
DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"
測試的討論
1,在master端建立一個庫,他會被同時複製到slave端。
2,在slave端,停掉主從複製 ( mysql>slave stop;)
3在master端,建立的庫裡插入一張表1,(slave端不會有)
4,在slave端的新庫裡插入一張表2 (master端不會有)
5,mysql>slave start; 開啟複製
6.在client端插入一張表3,在master端查看,slave端沒有,成功。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/70/F5/wKioL1XCJnOxXxb8AAGLEgo7nGE201.jpg" title="24.png" alt="wKioL1XCJnOxXxb8AAGLEgo7nGE201.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/70/F9/wKiom1XCJIqzpPbTAAHMcf1Ylsw441.jpg" title="35.png" alt="wKiom1XCJIqzpPbTAAHMcf1Ylsw441.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/70/F5/wKioL1XCJqDilgliAAC5Sb_admc440.jpg" title="客胡端查詢1.png" alt="wKioL1XCJqDilgliAAC5Sb_admc440.jpg" />
本文出自 “學習日誌” 部落格,請務必保留此出處http://feibendeqie.blog.51cto.com/10208202/1682083
Amoeba實現mysql的讀寫分離 CentOS6.5下