Linux MySQL Proxy 讀寫分離
阿新 • • 發佈:2020-06-18
導讀
因為讀寫分離是建立在MySQL叢集主從複製的基礎上,還不瞭解的,先看我另一篇部落格:點我直達
MySQL-Proxy簡介
mysql-proxy是mysql官方提供的mysql中介軟體服務,上游可接入若干個mysql-client,後端可連線若干個mysql-server。它使用mysql協議,任何使用mysql-client的上游無需修改任何程式碼,即可遷移至mysql-proxy上。mysql-proxy最基本的用法,就是作為一個請求攔截,請求中轉的中間層:
進一步的,mysql-proxy可以分析與修改請求。攔截查詢和修改結果,需要通過編寫Lua指令碼來完成。mysql-proxy允許使用者指定Lua指令碼對請求進行攔截,對請求進行分析與修改,它還允許使用者指定Lua指令碼對伺服器的返回結果進行修改,加入一些結果集或者去除一些結果集均可。
根本上,mysql-proxy是一個官方提供的框架,具備良好的擴充套件性,可以用來完成:
- sql攔截與修改
- 效能分析與監控
- 讀寫分離
- 請求路由
下載
官網連結:點我直達
百度雲盤地址:https://pan.baidu.com/s/1Aw1laIWYJVvHYshHXw4p_Q 密碼: 9qif
需求
- 1臺MySQL-Proxy機器,IP:192.168.1.106
- 1臺MySQl主伺服器(可讀可寫),IP:192.168.1.107
- 1臺MySQL從伺服器(只讀),IP:192.168.1.109
解壓MySQL-Proxy
在192.168.1.106上解壓:mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
重新命名檔案
MySQL配置
建立mysql-proxy.cnf
vim mysql-proxy.cnf
[mysql-proxy] admin-username=root #admin使用者名稱 admin-password=root admin密碼 proxy-address=192.168.1.106:4040 # 代理地址 proxy-backend-addresses=192.168.1.107:3306 #mysql主伺服器ip地址,預設埠3306 proxy-read-only-backend-addresses=192.168.1.109:3306 #mysql從伺服器ip地址,有多個逗號隔開 ip:port,ip:port,ip:port proxy-lua-script=/cyb/soft/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua #lua位置 log-file=/cyb/soft/mysql-proxy/log/mysql-proxy.log #日誌檔案儲存路徑 log-level=debug daemon=true # mysql-proxy以守護程序方式執行 keepalive=true #保持連線啟動程序會有2個, 一號程序用來監視二號程序
建立log目錄
修改mysql-proxy.cnf檔案的許可權
chmod 660 mysql-proxy.cnf
修改rw-splitting.lua
vim /cyb/soft/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
min_idle_connections:最小閒置連線數
max_idle_connections:最大閒置連線數
MySQL-Proxy啟動
./mysql-proxy --defaults-file=/cyb/soft/mysql-proxy.cnf
測試
在192.168.1.106上關閉防火牆
service iptables stop chkconfig iptables off
演示過程中,有2次連不上,原因不明,還有待查證,目前功能是已經實現了,注意,此時連mysql-proxy的埠已經不是3306了,是