docker mysql 讀寫分離
下載mysql-proxy
https://downloads.mysql.com/archives/proxy/
解壓並配置mysql-proxy
# tar zxvf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
# cd mysql-proxy-0.8.5-linux-el6-x86-64bit
# vim /etc/mysql-proxy.cnf
[mysql-proxy]
user=root #執行mysql-proxy使用者
admin-username=proxy #主從mysql共有的使用者
admin-password=proxy123 #共有使用者密碼
proxy-read-only-backend-addresses=xxx.xxx.xxx.xxx:3340 #備庫地址
proxy-backend-addresses=xxx.xxx.xxx.xxx:3339 #主庫地址
proxy-lua-script=/usr/local/mysql-proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit/share/doc/mysql-proxy/rw-splitting.lua #指定讀寫分離配置檔案位置
admin-lua-script=/usr/local/mysql-proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit/share/doc/mysql-proxy/admin-sql.lua #指定管理指令碼
daemon=true #以守護程序方式執行
keepalive=true #mysql-proxy崩潰時,嘗試重啟
修改讀寫分離配置檔案
# vim /usr/local/mysql-proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit/share/doc/mysql-proxy/rw-splitting.lua
min_idle_connections = 1, #預設超過4個連線數時才開始讀寫分離,改為1
max_idle_connections = 1,
mysql-proxy的bin目錄下啟動mysql-proxy
# ./mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
主庫和從庫分別建立使用者
mysql>GRANT ALL ON *.* TO 'proxy'@'xxx.xxx.xxx' identified by 'proxy123';
建立mysql-proxy的資料裡連線(預設埠4040),可以看到之前驗證主從複製時簡歷的test庫和student表
只修改從庫的資料,然後通過mysql-proxy查詢,可以看到讀取的資料是從庫修改過的資料,讀分離驗證成功
停止從庫的docker容器,通過mysql-proxy插入一條資料,主庫中重新整理也有新增的資料,寫分離驗證成功至此,mysql的主從複製已經通過mysql-proxy實現讀寫分離已實現。
tags: