標籤:mysql 主從複製 讀寫分離 (mariadb)
MYSQL主:192.168.26.210(centos6.6,Mariadb10)
MYSQL從:192.168.26.211(centos6.6,Mariadb10)
讀寫分離器mysql-proxy:192.168.26.212
主:mysql設定檔編輯:
vim /etc/my.cnf.d/server.cnf
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/8C/29/wKioL1hkZcuxBx87AAAG8lxYgW4066.png-wh_500x0-wm_3-wmp_4-s_2906837876.png" title="1.png" alt="wKioL1hkZcuxBx87AAAG8lxYgW4066.png-wh_50" />
設定檔中加入以下兩項:
log-bin=mysql-bin
server-id = 210
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/8C/29/wKioL1hkZjPxwZafAAAdEF2HK6A084.png-wh_500x0-wm_3-wmp_4-s_862373779.png" title="2.png" alt="wKioL1hkZjPxwZafAAAdEF2HK6A084.png-wh_50" />
從:mysql設定檔編輯:
vim /etc/my.cnf.d/server.cnf
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/8C/2D/wKiom1hkZk3CvrYEAAAPHEMvtlk255.png-wh_500x0-wm_3-wmp_4-s_3525250367.png" title="3.png" alt="wKiom1hkZk3CvrYEAAAPHEMvtlk255.png-wh_50" />
設定檔中加入以下兩項:
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/8C/29/wKioL1hkZmvAHEkLAAAq59S8d8Q145.png-wh_500x0-wm_3-wmp_4-s_789161894.png" title="4.png" alt="wKioL1hkZmvAHEkLAAAq59S8d8Q145.png-wh_50" />
讀寫分離調度器:mysql-proxy(0.8.5版本)
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/8C/2D/wKiom1hkZpegZle1AAAsJCx0MtQ592.png-wh_500x0-wm_3-wmp_4-s_396882799.png" title="5.png" alt="wKiom1hkZpegZle1AAAsJCx0MtQ592.png-wh_50" />
直接YUM安裝:yum list msyql-proxy
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/8C/29/wKioL1hkZrvSW3bJAAAScaV8v6c995.png-wh_500x0-wm_3-wmp_4-s_3758647507.png" title="6.png" alt="wKioL1hkZrvSW3bJAAAScaV8v6c995.png-wh_50" />
mysql-proxy安裝完成後編輯設定檔:vim /etc/mysql-proxy
[mysql-proxy]
daemon = true
pid-file = /var/run/mysql-proxy.pid
log-file = /var/log/mysql-proxy.log
log-level = debug
max-open-files = 1024
plugins = admin,proxy
user = mysql-proxy
#
#Proxy Configuration
proxy-address = 0.0.0.0:3306 #分離器地址預設本是4040,若本機安裝了MYSQL則改用其它連接埠
proxy-backend-addresses =192.168.26.210:3306 #可讀寫伺服器位址
proxy-read-only-backend-addresses = 192.168.26.211:3306 #唯讀伺服器位址列表,多台伺服器用,分隔
proxy-lua-script = /usr/share/doc/mysql-proxy-0.8.5/examples/rw-splitting.lua #指定讀寫分離指令碼路徑位置
proxy-skip-profiling = true
#
# Admin Configuration
admin-address = 0.0.0.0:4041 #管理地址
admin-lua-script = /usr/lib64/mysql-proxy/lua/admin.lua #mysql-proxy不對使用者做身分識別驗證,而是下身分識別驗證交予後端伺服器進行驗證的,因此需要在後端伺服器上對mysql-proxy開放許可權
admin-username = admin #管理帳號
admin-password = admin #管理密碼
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/8C/2D/wKiom1hkZu6gWubAAABlFl6f45Q698.png-wh_500x0-wm_3-wmp_4-s_2428972646.png" title="7.png" alt="wKiom1hkZu6gWubAAABlFl6f45Q698.png-wh_50" />
儲存退出,記得加入開機服務啟動項:chkconfig mysql-proxy on
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/8C/2D/wKiom1hkZx2RXW82AAAQBhaU1ek491.png-wh_500x0-wm_3-wmp_4-s_3680503793.png" title="8.png" alt="wKiom1hkZx2RXW82AAAQBhaU1ek491.png-wh_50" />
說明下:YUM安裝後lua指令碼路徑: /usr/share/doc/mysql-proxy-0.8.5/examples/rw-splitting.lua
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/8C/29/wKioL1hkZ6aC3ee4AABjk_3ax-c083.png-wh_500x0-wm_3-wmp_4-s_1668792063.png" title="9.png" alt="wKioL1hkZ6aC3ee4AABjk_3ax-c083.png-wh_50" />
admin.lua指令碼路徑: /usr/lib64/mysql-proxy/lua/admin.lua
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/8C/29/wKioL1hkZ-qC0dmCAAAzKo-NCmw253.png-wh_500x0-wm_3-wmp_4-s_1039321452.png" title="10.png" alt="wKioL1hkZ-qC0dmCAAAzKo-NCmw253.png-wh_50" />
啟動服務:service mysql-proxy start
用管理帳號登陸mysql-proxy
mysql -uadmin -padmin -h192.168.26.212 --port=4041
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/8C/2D/wKiom1hkaAzAxBrdAABUl9vGZ08463.png-wh_500x0-wm_3-wmp_4-s_1248001696.png" title="11.png" alt="wKiom1hkaAzAxBrdAABUl9vGZ08463.png-wh_50" />
執行命令查看:SELECT * FROM backends;
兩台伺服器主和從都已經添加進mysql-proxy,主伺服器rw表示可讀寫,ro表示唯讀。
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/8C/2D/wKiom1hkaGiQqfNQAABY7O8B6U4261.png-wh_500x0-wm_3-wmp_4-s_1309516406.png" title="12.png" alt="wKiom1hkaGiQqfNQAABY7O8B6U4261.png-wh_50" />
再回到主伺服器:192.168.26.210建立一個訪問帳號和密碼,供測試使用。
grant all on *.* to ‘bdadmin‘@‘192.168.%.%‘ IDENTIFIED BY ‘jerrypass‘;
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/8C/29/wKioL1hkboygdIkPAAA_2d3FvoU819.png-wh_500x0-wm_3-wmp_4-s_1638008923.png" title="13.png" alt="wKioL1hkboygdIkPAAA_2d3FvoU819.png-wh_50" />
為了測試效果可以用tcpdump進行抓包觀察效果:
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/8C/29/wKioL1hkbquTYIUoAAB_NuvZB24806.png-wh_500x0-wm_3-wmp_4-s_923208088.png" title="14.png" alt="wKioL1hkbquTYIUoAAB_NuvZB24806.png-wh_50" />
任一找一台同網路中的主機登陸mysql伺服器(210,211,212都可以,注意登陸時連接埠號碼,這裡我是我手動
改為3306了的):
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/8C/2D/wKiom1hkbuTg3KrrAAAXit09Vzs701.png-wh_500x0-wm_3-wmp_4-s_489644619.png" title="15.png" alt="wKiom1hkbuTg3KrrAAAXit09Vzs701.png-wh_50" />
執行建立資料庫操作:
create database bdtest;
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/8C/29/wKioL1hkbvzTYpEWAABAkkuWDvI275.png-wh_500x0-wm_3-wmp_4-s_2564341645.png" title="16.png" alt="wKioL1hkbvzTYpEWAABAkkuWDvI275.png-wh_50" />
觀察狀態:
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/8C/2D/wKiom1hkbyaTQTuiAABq7uR9Plg126.png-wh_500x0-wm_3-wmp_4-s_2364889196.png" title="17.png" alt="wKiom1hkbyaTQTuiAABq7uR9Plg126.png-wh_50" />
1 台主多台從配置:
[mysql-proxy]
daemon = true
pid-file = /var/run/mysql-proxy.pid
log-file = /var/log/mysql-proxy.log
log-level = debug
max-open-files = 1024
plugins = admin,proxy
user = mysql-proxy
#
#Proxy Configuration
proxy-address = 0.0.0.0:3306
proxy-backend-addresses = 192.168.26.210:3306
proxy-read-only-backend-addresses = 192.168.26.211:3306,192.168.26.212:3306
proxy-lua-script = /usr/share/doc/mysql-proxy-0.8.5/examples/rw-splitting.lua
#proxy-skip-profiling = true
#
# Admin Configuration
#admin-address = 0.0.0.0:4041
admin-lua-script = /usr/lib64/mysql-proxy/lua/admin.lua
admin-username = admin
admin-password = admin
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/8C/29/wKioL1hkb0Cj7K_WAABtOefdyJA668.png-wh_500x0-wm_3-wmp_4-s_394172906.png" title="18.png" alt="wKioL1hkb0Cj7K_WAABtOefdyJA668.png-wh_50" />
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/8C/2D/wKiom1hkb1zQH9deAABmvCBelhw967.png-wh_500x0-wm_3-wmp_4-s_4033125086.png" title="19.png" alt="wKiom1hkb1zQH9deAABmvCBelhw967.png-wh_50" />650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/8C/29/wKioL1hkb2HAVeLJAAAp9enz2iQ084.png-wh_500x0-wm_3-wmp_4-s_701949931.png" title="20.png" alt="wKioL1hkb2HAVeLJAAAp9enz2iQ084.png-wh_50" />
特別提示,測試中需要多執行幾次查詢(因為操作要受串連數限制)操作,才能更好的觀察效果。
本文出自 “在路上……找回丟失的記憶” 部落格,請務必保留此出處http://jdonghong.blog.51cto.com/3473478/1887164
MYSQL主從複製與讀寫分離(MariaDB)