首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL Proxy 0.6 安裝與讀寫分離實戰

     編輯:MySQL 資料庫相關知識

1. 安裝部署

# 下載預編譯包
tar zxf mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz
cd mysql-proxy-0.6.0-linux-rhas4-x86

# 安裝二進制與 Lua 腳本
mv sbin/mysql-proxy /usr/local/sbin/
mv share/mysql-proxy /usr/local/share/

# 去除符號表減小體積
strip /usr/local/sbin/mysql-proxy

2. 啟動管理腳本

# /etc/init.d/mysql-proxy
#!/bin/sh
export LUA_PATH=/usr/local/share/mysql-proxy/?.lua
mode=${1:-start}
case $mode in
  start)
    mysql-proxy --daemon \
      --admin-address=:4401 \
      --proxy-address=:3307 \
      --proxy-backend-addresses=:3306 \
      --proxy-read-only-backend-addresses=192.168.133.232:3306 \
      --proxy-read-only-backend-addresses=10.10.74.61:3306 \
      --proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua
    ;;
  stop) killall mysql-proxy ;;
  restart) $0 stop && $0 start ;;
esac

參數詳解

參數作用
--daemon守護進程模式運行
--admin-address=:4401管理介面端口(本機 4401)
--proxy-address=:3307應用連接的代理端口
--proxy-backend-addresses=:3306主庫(寫)地址
--proxy-read-only-backend-addresses=...從庫(讀)地址,可多個
--proxy-lua-script=...指定 rw-splitting.lua 實現讀寫分離

完整參數請執行 mysql-proxy --help-all 查看。

3. 功能驗證

# 連接代理
mysql -h127.0.0.1 -uroot -P3307
mysql> SHOW PROCESSLIST;
# 可見新連接建立

Sysbench 壓測

sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 \
  --mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-db=test prepare
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 \
  --mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-db=test run
# 結果:Threads fairness: events (avg/stddev): 10000.0000/0.00
# 執行時間穩定,無崩潰

4. 進階:連接池功能

MySQL Proxy 內建連接池,解決 LAMP 架構下頻繁建連導致「Too many connections」問題。
修改 rw-splitting.lua 兩個關鍵參數:

min_idle_connections = 1
max_idle_connections = 3

根據業務並發適當調大,可顯著降低後端連接壓力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved