今天,我們繼續(xù)mysql的話題,今天為大家?guī)硪黄赼moeba實(shí)現(xiàn)mysql讀寫分離的方案文章,好我們直接進(jìn)入今天的正題吧。
一、服務(wù)器規(guī)劃
主機(jī)名 | IP地址 | 節(jié)點(diǎn) |
liuyazhuang152 | 192.168.0.152 | amoeba |
liuyazhuang153 | 192.168.0.153 | 寫庫 |
liuyazhuang154 | 192.168.0.154 | 讀庫 |
二、測試方案
我們在192.168.0.152上安裝amoeba,在192.168.0.153和192.168.0.154上安裝mysql,這兩臺mysql服務(wù)器無任何交集,通過配置amoeba,將192.168.0.153上的mysql配置成寫庫,將192.168.0.154上的MySQL配置成讀庫;我們客戶端連接到amoeba,由amoeba操作數(shù)據(jù)庫,我們通過amoeba向相應(yīng)數(shù)據(jù)庫中寫入數(shù)據(jù),通過mysql:192.168.0.153服務(wù)器MySQL中有插入的相關(guān)數(shù)據(jù),192.168.0.154上的MySQL服務(wù)器則沒有;那么,我們就認(rèn)為amoeba幫我們的程序完成了讀寫分離功能;
三、安裝MySQL
請參見博文《MySQL之-CentOS6.5 編譯安裝MySQL5.6.16的詳細(xì)代碼介紹》
四、安裝并配置Amoeba
1、下載Amoeba
我們可以到https://sourcemysqlge.net/projects/amoeba/下載Amoeba,我這里下載的是amoeba-mysql-binary-2.2.0.tar.gz
2、安裝Amoeba
Amoeba是Java寫的,所以,需要我們的服務(wù)器配置java運(yùn)行環(huán)境,這里我就不講如何配置Java運(yùn)行環(huán)境了
由于Amoeba解壓后直接沒有文件了,所以我們要提前建立好文件夾,我這里在/usr/local下建立文件夾:amoeba-mysql-binary-2.2.0
然后在命令行輸入如下命令
tar?-zxvf?amoeba-mysql-binary-2.2.0.tar.gz??-C?/usr/local/amoeba-mysql-binary-2.2.0
將Amoeba解壓到/usr/local/amoeba-mysql-binary-2.2.0 目錄下,此時,我們完成了安裝。
3、配置Amoeba
我們到Amoeba的conf目錄下可以看到如下mysql:
這里我們重點(diǎn)關(guān)注amoeba.mysql和dbServers.xml文件。
3.1配置amoeba.xml
我們打開amoeba.xml文件,找到如下代碼:
我們配置好用戶名和密碼,其中8066是Amoeba默認(rèn)端口,配置好的效果如下:
找到如下代碼:
將mysql去掉,效果如下:
這就配置好了amoeba文件,當(dāng)我們配置好后,我們訪問mysql時,需要訪問amoeba.xml文件中配置的端口和用戶名、密碼,通過Amoeba來鏈接MySQL。
3.2配置dbServers.xml
在dbServers.xml文件中找到如下代碼:
我們在這里進(jìn)行相關(guān)數(shù)據(jù)庫的配置,要注意:這些數(shù)據(jù)庫的配置指定要讀寫分離的數(shù)據(jù)庫、用戶名、密碼,其中用戶名和密碼是配置成在終端訪問Amoeba的用戶名和密碼。我修改后的效果如下:
此時的用戶名和密碼需要MySQL服務(wù)器授權(quán)給Amoeba服務(wù)器,使其能夠登錄到MySQL服務(wù)器。
然后我們找到如下代碼:
將其修改為兩臺MySQL服務(wù)器所在的IP地址,如下圖:
至此,我們配置好了基于Amoeba的讀寫分離。
4、在MySQL中為Amoeba訪問授權(quán)
分別登陸兩臺MySQL服務(wù)器,執(zhí)行以下命令為Amoeba授權(quán)
?grant?all?on?lyz.*?to?lyz@192.168.0.152?identified?by?'lyz';
其中這里的用戶名和密碼是我們在dbServers.xml文件中配置的用戶名和密碼。此時完成了MySQL的授權(quán)
5、運(yùn)行Amoeba
我們進(jìn)入到Amoeba的bin目錄在命令行輸入如下命令運(yùn)行Amoeba
./amoeba?start?&
其中,&代表在后臺運(yùn)行,此時我們發(fā)現(xiàn)啟動失敗:信息如下:
這個是說配置的Java stack太小了,最少要228K,此時我們打開bin目錄下的amoeba腳本文件,找到如下代碼:
將上圖的128K改為256K(你可以根據(jù)你的實(shí)際情況修改),如下圖:
此時我們重新輸入命令
./amoeba?start?&
啟動成功
6、測試
6.1 查詢數(shù)據(jù)
我們先分別查詢MySQL數(shù)據(jù)庫表上的相關(guān)數(shù)據(jù),未通過Amoeba操作數(shù)據(jù)庫的時候,我們是新建的數(shù)據(jù)庫lyz和表t1,此時192.168.0.153和192.168.0.154上MySQL數(shù)據(jù)表都應(yīng)該為空,如下圖:
6.2登錄Amoeba
我們在192.168.0.152上輸入如下命令登錄Amoeba,通過Amoeba訪問數(shù)據(jù)庫
mysql?-h192.168.0.152?-uroot?-proot?-P?8066
注意:我們這里輸入的端口是8066,此端口是Amoeba配置的端口,我們需要登錄Amoeba而不是直接登錄MySQL
登錄成功如下圖所示:
6.3測試
? 此時我們在終端查詢數(shù)據(jù)表數(shù)據(jù),顯示為空,如下圖:
我們在Amoeba服務(wù)器終端插入一條數(shù)據(jù),如下:
同時,我們在Amoeba上查詢數(shù)據(jù)如下:
數(shù)據(jù)為空。
我們登錄192.168.0.153數(shù)據(jù)庫,查看表數(shù)據(jù)如下:
如圖,說明Amoeba向192.168.0.153庫插入了數(shù)據(jù)。
我們在登錄192.168.0.154數(shù)據(jù)庫查看數(shù)據(jù)信息,如下:
說明Amoeba沒有向192.168.0.154庫mysql,并從192.168.0.154庫讀取數(shù)據(jù)。
至此,基于Amoeba實(shí)現(xiàn)MySQL讀寫分離全部配置完成。
五、附錄
./amoeba?start?&?啟動amoeba ./amoeba?stop??關(guān)閉amoeba