由於業務本身的需求,有時需要構建分布式數據庫。一個具有較好設計的分布式數據庫,對於用戶(調用者)來說透明,跟使用本地數據庫一樣。
本文准備使用中間件的架構,實現分布式數據庫的構建。簡單點說,調用者與中間件通信,有中間件與各個數據庫通訊,完成基本數據操作,將結果返回給調用者。
注意:本文篇幅看似短小,文字間引用的文章鏈接都是需要各位讀者詳細閱讀的。

本文中Amoeba+Mysql架構示意圖
1,在虛擬機上構建Mysql server
本文使用的VM虛擬機,系統為ubuntu 14.04,安裝好系統之后,通過apt安裝mysql server,比較方便。安裝完成之后,記得打開3306端口。
參考下面兩個教程步驟,完成第一步的安裝要求。
mysql安裝 (安裝完mysql即可,Apache等不需要裝)
2,鏈接數據庫
通過上一步可以構建若干(你開心就好)Mysql數據庫,本文建了兩個僅做實驗驗證。完成后在本地安裝Navicat,驗證數據連接無誤。
點擊【連接】按鈕,輸入上一步建立的sever的ip,用戶名和密碼。順利連接會跟下圖一樣,顯示鏈接成功。

3,配置Amoeba
安裝Amoeba 直接執行以下命令即可:
wget https://jaist.dl.sourceforge.net/project/amoeba/Amoeba%20for%20mysql/2.x/amoeba-mysql-binary-2.0.1-BETA.tar.gz mkdir /usr/local/amoeba-2.0.1 tar xf amoeba-mysql-binary-2.0.1-BETA.tar.gz -C /usr/local/amoeba-2.0.1/
配置鏈接 (配置參考鏈接中第三步之后對amoeba配置方式),連接兩個數據庫。
然后可以執行下列代碼運行Amoeba中間件:
/usr/local/amoeba-2.0.1/bin/amoeba start
權限問題出現的話,可能需要在代碼前加 sudo
順利的話可以直接連上數據庫(怎么可能這么順利吶?!),如果發生錯誤很大的可能性為常見的兩種錯誤。
參考下面鏈接的解決辦法: Amoeba報錯解決方案
ubuntu 14.04默認java的安裝在/usr/lib/jvm/java-7-openjdk-amd64下
設置JAVA_HOME環境變量,在bashrc文件最后加上:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
重啟命令行窗口,再次運行Amoeba
如果正確配置的話,執行啟動amoeba命令后,會有如下面的輸出。此時amoeba對外提供MYSQL的服務可以看做是一個虛擬的MySQL數據庫。
該數據庫的地址為amoeba的ip,端口在配置過程中會有設置,默認為8066(從下圖也能看出來)。

4,設置分片
上一步中筆者默認忽略了對數據庫分片的設置。然而實際上分布式數據庫最終要的就是對水平分片和豎直分片的設置。在amoeba中,是通過對conf文件夾中rule.xml文件進行配置實現的。
默認的rule.xml文件如下圖。

所謂水平切分就是按照一定規則將記錄存儲在不同的服務器上,官方文檔有詳細的 示例解釋
而垂直區分則是將一條記錄的不同列按照約定存儲在不同服務器上,可以對敏感重要資料起到一定的保護作用。官方示例
---------------------------------------------------------------------------------------
完成以上的步驟之后,你就可以的得到一個自己的分布式數據庫,之后調用完全跟普通MYSQL數據庫一樣。筆者使用寫了一個簡單點JAVA小界面連接測試了搭建的數據庫,over。
