1. 程式人生 > >Linux MySQL Proxy 讀寫分離

Linux MySQL Proxy 讀寫分離

導讀

  因為讀寫分離是建立在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是一個官方提供的框架,具備良好的擴充套件性,可以用來完成:

  1. sql攔截與修改
  2. 效能分析與監控
  3. 讀寫分離
  4. 請求路由

下載

官網連結:點我直達

百度雲盤地址:https://pan.baidu.com/s/1Aw1laIWYJVvHYshHXw4p_Q  密碼: 9qif

需求

  1. 1臺MySQL-Proxy機器,IP:192.168.1.106
  2. 1臺MySQl主伺服器(可讀可寫),IP:192.168.1.107
  3. 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了,是