標籤:使用mysql-proxy實現mysql讀寫分離
650) this.width=650;" src="http://note.youdao.com/yws/res/20877/3864DBFB8D264513BA966AF24160FCE4" alt="QQ20150726194151.png" />
靜態分離:直接將伺服器位址寫入程式
優點:
缺點:
動態分離:通過Proxy 伺服器進行讀寫操作,由Proxy 伺服器判定讀寫操作,在主伺服器上寫資料,在從伺服器上讀資料。
(Proxy 伺服器不需要安裝Mysql)
#=======================================================
(1)使用mysql-proxy實現讀寫分離
# iptables -F
(master,slave,proxy,client伺服器各一台)
注意:(首先進行主從複製配置。然後開始在Proxy 伺服器上使用mysql-proxy進行讀寫分離。最後在用戶端測試)
650) this.width=650;" src="http://note.youdao.com/yws/res/20497/6506BFE7C3884C57B8E0A9FADCD62FE6" alt="mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz" title="mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz" id="userfile_d1akkn78a" />
Proxy 伺服器進行的操作(10.0.199.3):
# tar -xvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
# mv mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy
# vim /etc/ld.so.conf
/usr/local/mysql-proxy/lib (匯入)
# cd /usr/local/mysql-proxy/bin
# ./mysql-proxy --proxy-backend-addresses=10.0.199.1:3306 --proxy-read-only-backend-
addresses=10.0.199.2:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon --user=mysql --log-level=warning --log-file=/var/log/mysql-proxy.log --max-open-files=2048 --event-threads=4 --proxy-address=10.0.199.3:3306
解釋:
--proxy-backend-addresses 指定主伺服器地址(寫資料) 10.0.199.1
--proxy-read-only-backend-addresses 指定從伺服器位址(讀資料) 10.0.199.2
--proxy-lua-script 指定用於讀寫分離的指令碼程式
--daemon 指定以守護進程的方式運行
--user=mysql 指定啟動並執行使用者
--log-level 指定日誌記錄層級
--log-file 指定記錄檔位置
--max-open-files 指定最大課開啟的檔案數,受作業系統限制
--event-threads 設定背景工作執行緒數
--proxy-address 設定監聽的本機地址和連接埠 10.0.199.3(Proxy 伺服器)
# lsof -i:3306 查看是否啟動
主從伺服器進行的操作(199.1、199.2):
# iptables -F
在主從伺服器上對Proxy 伺服器進行授權,使Proxy 伺服器能夠使用主從伺服器上的此使用者進行串連主從。
mysql> grant all on *.* to ‘repuser‘@‘10.0.199.3‘ identified by ‘aixocm‘;
mysql> flush privileges;
repuser是任意使用者名稱 需要在Proxy 伺服器上建立該使用者
因為下面在用戶端進行測試時,需要用被授權的使用者即該使用者進行登入操作資料庫 mysql> create user repuser;
用戶端進行的操作(10.0.199.4):
測試:
用戶端不必安裝Mysql,但是必須要有mysql命令
# yum install mysql
# mysql -u repuser -h 10.0.199.3 -paixocm -e "select * from sxkj.stu"
# mysql -u repuser -h 10.0.199.3 -paixocm -e "create table sxkj.class(id int primary key,name varchar(10) not null)"
也可以進入mysql進行操作
再查看主從伺服器資料
測試時 若出現以下錯誤:
650) this.width=650;" src="http://note.youdao.com/yws/res/20699/0C8941BA7BE748CF84131C6CA1549EDF" alt="QQ20150724175503.png" />
解決辦法:
在主從伺服器上:mysql> select user,host,password from mysql.user;
mysql> drop user [email protected]; 然後再重新進行授權。
本文出自 “張露露” 部落格,請務必保留此出處http://zhanglulu913.blog.51cto.com/10592685/1688947
使用mysql-proxy實現mysql讀寫分離