Ubuntu10下MySQL搭建Amoeba_基礎


一、背景知識

Amoeba 是阿里巴巴的技術陳思儒開始的一個開源項目,它是分布式數據庫Proxy解決方案。Amoeba框架是基於Java SE 1.5開發的,在安裝Amoeba之前需要先安裝Java環境。經驗證,Amoeba在Java SE 1.5和Java SE 1.6上能正常運行。

(一) Amoeba包括3個產品:Amoeba From Sourceforge

1.      Amoeba for MySQL是Amoeba開源社區發布的一款MySQL數據庫中間層代理軟件,致力於數據庫的切分整合、負載均衡、高可用性等;

2.      Amoeba for Aladdin支持所有提供jdbc驅動的數據庫(Oracle、SQL Server、MySQL等) ;

3.      Amoeba for MongoDB支持NoSQL數據庫MongoDB;

(二) 其他的MySQL分布式數據庫系統的中間層軟件還有MySQL Proxy,HiveDB。Amoeba for MySQL相較於其他軟件有以下優勢

1.      基於XML的配置文件,用SQLJEP語法編寫規則,配置比較簡單(MySQL Proxy需要編寫大量Lua腳本才能實現),有比較完善的使用幫助文檔

2.      同時支持水平切分和垂直切分(HiveDB只支持水平切分)

3.      目前的版本已經比較穩定,已有很多企業用於生產環境

4.      支持HA機制、支持活動連接數均衡、支持權重配置

相較於其他軟件有以下劣勢

1.      Amoeba for MySQL不支持事務:其實,分布式事務的問題是所有數據庫中間層普遍面臨的問題,不是Amoeba獨有的問題;目前通常的解決辦法是,將事務拆分成幾個單數據庫內的小事務,由應用程序進行總控。

2.      Amoeba for MySQL不支持跨節點JOIN:同樣,這個問題也不是Amoeba獨有的,通常的解決辦法是由應用程序先從一個節點取出數據,然后由應用程序去其他節點JOIN。

3.      Amoeba for MySQL不支持跨節點排序:這個問題也不是Ameoba獨有的,通常的解決辦法是由應用程序從多個節點中取出數據,然后進行排序。

4.      Amoeba for MySQL不適合返回大量(超過10萬)數據的查詢。

5.      Amoeba for MySQL不支持分庫分表,只能做到分數據庫實例。

 

二、配置過程

下面是Amoeba for MySQL的基礎搭建(不包含讀寫分離和數據分片):

(一) 下載JDK:jdk-6u30-linux-i586.bin(解壓版安裝)

(二) 安裝和驗證JDK:Ubuntu10下安裝JAVA JDK

(三) 下載Amoeba for MySQL:amoeba-mysql-binary-2.1.0-RC5.tar.gz

(四) 安裝和驗證Amoeba for MySQL:

1.      拷貝文件到/tmp目錄:E:\>pscp.exe amoeba-mysql-binary-2.1.0-RC5.tar.gz chen@192.168.1.147:/tmp/

2.      /usr/local創建文件夾:#mkdir amoeba

3.      進入文件夾:#cd amoeba

4.      解壓文件到/usr/local/amoeba

#tar -zxvf /tmp/amoeba-mysql-binary-2.1.0-RC5.tar.gz

5.      驗證Amoeba是否安裝成功的命令(如下圖):/usr/local/amoeba/bin/amoeba


(圖1:安裝成功)

6.      啟動amoeba:/usr/local/amoeba/bin/amoeba start


(圖2:啟動成功)

7.      修改/usr/local/amoeba/conf/dbServers.xml文件:(需要根據自己的情況)

<property name="schema">mysql</property>

<property name="user">gaizai</property>

<property name="password">123456</property>

<property name="ipAddress">192.168.1.145</property>

8.      只要上面的參數對了,amoeba.xml是不需要修改的,直接輸入下面的命令,密碼為空(默認為空),直接回車就可以進入了:

#mysql -u root -p -h 192.168.1.147 -P 8066

或者#mysql -u root -p -h 127.0.0.1 -P 8066

如果開啟的amoeba的終端沒有報錯,恭喜你,搭建amoeba for mysql成功了!!下面是對配置的一些不錯測試:

9.      使用SQLyog進行測試:


(圖3:測試空密碼)

10.   可以嘗試修改amoeba.xml:

<property name="user">testuser</property>

<property name="password">password</property>

登陸應該改為:#mysql -u testuser -p -h 192.168.1.147 -P 8066,密碼為password,這樣一樣能登陸成功。

11.   可以嘗試使用SQLyog進行登陸


(圖4:測試帳號密碼)

 

三、注意事項

(一) 驗證Amoeba是否安裝成功的命令:/usr/local/amoeba/bin/amoeba 要全部輸入,如果是進入到bin執行amoeba是不行的。

(二) #mysql -u root -p -h 127.0.0.1 -P 8066其中root和密碼表示的是在amoeba.xml中配置的帳號密碼。

(三) Amoeba主要配置文件:#/usr/local/amoeba/conf/*.xml

1.      amoeba.xml用來配置Amoeba服務的基本參數,如Amoeba主機地址、端口、認證方式、用於連接的用戶名、密碼、線程數、超時時間、其他配置文件的位置等。

2.      dbServers.xml用來存儲和配置Amoeba所代理的數據庫服務器的信息,如:主機IP、端口、用戶名、密碼等。

3.      rule.xml用來配置切分規則。

4.      ruleFunctionMap.xml用來配置切分規則中使用的用戶自定義函數的處理方法。

5.      functionMap.xml用來配置數據庫函數的處理方法,Amoeba將使用該配置文件中的方法解析數據庫函數。

6.      access_list.conf用來授權或禁止某些服務器IP訪問Amoeba。

7.      log4j.xml,用來配置Amoeba輸出日志的級別和方式。

(四) dbServers.xml中的loadbalance標簽選項的3個定義:

1=ROUNDROBIN round robin

2=WEIGHTBASED weight based

3=HA high availability

 

四、錯誤與疑問

1.      amoeba start之后,再用終端連接上mysql,出現了下面的錯誤:


(圖5:錯誤信息)

這個錯誤是dbServers.xml中配置的mysql的連接存在問題,可以先使用里面的帳號測試登陸,進一步排除問題。

2.      下面兩個圖是啟動amoeba的不同界面,為什么會有區別呢?用於調試:


(圖6:有及時信息輸出)


(圖7:回到命令行了)

3.      Amoeba的啟動用戶,需要是root嘛?

4.      如果你修改了配置,不要以為重啟amoeba就可以了,如果你還是使用之前遺留的鏈接到MySQL的操作界面,那么你修改的文件是不會生效的,需要重新登錄數據庫,比如我是在IP147的機器上搭建amoeba的,如果是在本機打開終端的就需要關掉終端,重新打開,如果還是使用SQLyog的,那就需要斷開,重新鏈接。

5.      Amoeba Monitor Server的使用?

6.      什么是tar.gz

解壓:$ tar zxvf FileName.tar.gz

壓縮:$ tar zcvf FileName.tar.gz DirName

 

五、參考文獻

Amoeba使用指南

通過Amoeba對一個數據庫實例進行操作

Amoeba for MySQL學習研究之介紹

Amoeba for MySQL學習研究之安裝

Amoeba for MySQL學習研究之配置

UBUNTU11.10下安裝 JDK-6U30-LINUX-I586.BIN

linux解壓 tar命令

tar.gz


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM