MySQL基於Amoeba實現讀寫分離

讀寫分離應用分析:
在企業用戶中,在大量的數據請求下,單臺數據庫將沒法承擔全部讀寫操做。解決方法:
配置多臺數據庫服務器以實現主從複製+讀寫分離。

 

 一、基於程序代碼內部實現java

在代碼中根據select、 insert 進行路由分類,這種方法目前生產環境中應用最普遍。優勢是性能較好,由於在程序代碼中實現,不須要增長額外的設備做爲硬件開支。缺點是須要開發人員能來實現,運維人員無從下手。
二、基於中間代理層實現
代理通常位於客戶端和服務器之間,代理服務器接到客戶端請求後經過判斷後轉發到後端數據庫。
常見的代理服務器:
MySQL-Proxy
Amoeba
實驗環境:
amoeba: 192.168.200.114
master:192.168.200.111
slave1:192.168.200.112
slave2:192.168.200.113
client:192.168.200.123
前提是主從服務器支持主從複製
 
配置amoeba服務器:
1.安裝amoeba軟件
準備好jdk-6u14-linux-x64.bin文件
2.給與該文件執行權限
 
chmod +x jdk-6u14-linux-x64.bin
3.執行該文件
./jdk-6u14-linux-x64.bin
執行後會進入閱讀模式,一直按回車,提示是否安裝是輸入yes
4.將文件移動
mv jdk1.6.0_14/ /usr/local/jdk1.6
5.修改配置文件
vim /etc/profile
在最後末行添加如下信息:
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin
6.查看java版本信息(不建議安裝1.7以上的版本,推薦使用1.6及如下)
java -version

 顯示1.7的版本mysql

7.刪除java文件linux

rm -rf /usr/bin/java算法

8.從新加載文件信息sql

source /etc/profile數據庫

9.再次查看版本信息vim

java -version後端

10.安裝配置amoeba服務器

事先準備amoeba包負載均衡

amoeba-mysql-binary-2.2.0.tar.gz

11建立文件目錄

mkdir /usr/local/amoeba

解包:

tar xf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

12.給與755的權限

chmod -R 755 /usr/local/amoeba/

 13.執行amoeba

/usr/local/amoeba/bin/amoeba

 

 

 #出現amoeba start|stop證實配置沒有問題

在MySQL數據庫服務器上對amoeba受權:

1.在每一臺服務器上登陸數據庫執行:

grant all on *.* to 'admin'@'192.168.200.%'identified by'123123';

2.刷新受權表:

flush privileges;

在amoeba服務器上編輯amoeba.xml配置文件,設置讀寫分離:

cd /usr/local/amoeba/conf/

cp amoeba.xml amoeba.xml.origin

vim amoeba.xml

 

 

 設置一個用戶,後面的客戶端訪問時使用

 

 設置登陸密碼

 

 

將註釋去掉,設置默認的服務器池||寫服務器池||讀服務器池

在amoeba服務器上編輯配置文件,設置登陸MySQL服務器的用戶及密碼、MySQL服務器節點的IP地址、負載均衡的算法:

 

cd /usr/local/amoeba/conf/

cp dbServers.xml dbServers.xml.origin

vim dbServers.xml

 

 

 默認端口爲3306,設置訪問MySQL數據庫的所用的用戶名和密碼

 

 依次爲:主MySQL服務器的名稱和IP地址

    從MySQL服務器1的名稱和IP地址

    從MySQL服務器2的名稱和IP地址

與主從MySQL服務器對應

 

 

 設置readpool

 

 負載均衡算法值爲1,輪詢算法

 

 前面定義的服務器節點名

測試環境:

啓動amoeba

1.檢查配置是否出錯

 /usr/local/amoeba/bin/amoeba

amoeba start|stop表示沒出錯

2.起服務

/usr/local/amoeba/bin/amoeba &

3.檢查端口8066

 netstat -lnpt|grep java

相關文章
相關標籤/搜索