1. 程式人生 > >docker mysql 讀寫分離

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: