MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

今天,我們繼續(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

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

這里我們重點(diǎn)關(guān)注amoeba.mysql和dbServers.xml文件。

3.1配置amoeba.xml

我們打開amoeba.xml文件,找到如下代碼:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

我們配置好用戶名和密碼,其中8066是Amoeba默認(rèn)端口,配置好的效果如下:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

找到如下代碼:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

mysql去掉,效果如下:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

這就配置好了amoeba文件,當(dāng)我們配置好后,我們訪問mysql時,需要訪問amoeba.xml文件中配置的端口和用戶名、密碼,通過Amoeba來鏈接MySQL。

3.2配置dbServers.xml

在dbServers.xml文件中找到如下代碼:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

我們在這里進(jìn)行相關(guān)數(shù)據(jù)庫的配置,要注意:這些數(shù)據(jù)庫的配置指定要讀寫分離的數(shù)據(jù)庫、用戶名、密碼,其中用戶名和密碼是配置成在終端訪問Amoeba的用戶名和密碼。我修改后的效果如下:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

此時的用戶名和密碼需要MySQL服務(wù)器授權(quán)給Amoeba服務(wù)器,使其能夠登錄到MySQL服務(wù)器。

然后我們找到如下代碼:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

將其修改為兩臺MySQL服務(wù)器所在的IP地址,如下圖:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

至此,我們配置好了基于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)啟動失敗:信息如下:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

這個是說配置的Java stack太小了,最少要228K,此時我們打開bin目錄下的amoeba腳本文件,找到如下代碼:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

將上圖的128K改為256K(你可以根據(jù)你的實(shí)際情況修改),如下圖:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

此時我們重新輸入命令

./amoeba?start?&

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)
啟動成功

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)該為空,如下圖:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

6.2登錄Amoeba

我們在192.168.0.152上輸入如下命令登錄Amoeba,通過Amoeba訪問數(shù)據(jù)庫

mysql?-h192.168.0.152?-uroot?-proot?-P?8066

注意:我們這里輸入的端口是8066,此端口是Amoeba配置的端口,我們需要登錄Amoeba而不是直接登錄MySQL

登錄成功如下圖所示:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

6.3測試

? 此時我們在終端查詢數(shù)據(jù)表數(shù)據(jù),顯示為空,如下圖:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

我們在Amoeba服務(wù)器終端插入一條數(shù)據(jù),如下:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

同時,我們在Amoeba上查詢數(shù)據(jù)如下:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

數(shù)據(jù)為空。

我們登錄192.168.0.153數(shù)據(jù)庫,查看表數(shù)據(jù)如下:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

如圖,說明Amoeba向192.168.0.153庫插入了數(shù)據(jù)。

我們在登錄192.168.0.154數(shù)據(jù)庫查看數(shù)據(jù)信息,如下:

MySQL之-基于Amoeba實(shí)現(xiàn)讀寫分離詳解(圖文)

說明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

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊14 分享