萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL Proxy 實作讀寫分離完整部署實錄:Lua、安裝、配置、驗證

在 CentOS 上從原始碼編譯 Lua、MySQL Proxy,並啟用內建 rw-splitting.lua 實現讀寫分離,含完整指令與驗證過程。

環境規劃

角色IP說明
MySQL Proxy192.168.0.234Port 4040
Master (可寫)192.168.0.235Port 3306
Slave (唯讀)192.168.0.236Port 3306,已 STOP SLAVE

1. 編譯安裝 Lua 5.1

tar zxvf lua-5.1.2.tar.gz -C /usr/local
cd /usr/local && mv lua-5.1 lua && cd lua
make linux test && make install
export LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm"

2. 編譯安裝 MySQL Proxy 0.8.x

tar zxvf mysql-proxy-0.8.2.tar.gz -C /usr/local/mysql
cd /usr/local/mysql && mv mysql-proxy-0.8.2 mysql-proxy
cd mysql-proxy
./configure --prefix=/usr/local/mysql-proxy --with-lua=/usr/local
make && make install
export PATH=$PATH:/usr/local/mysql-proxy/bin

3. 啟動讀寫分離

mysql-proxy \
--proxy-read-only-backend-addresses=192.168.0.236:3306 \
--proxy-backend-addresses=192.168.0.235:3306 \
--proxy-lua-script=/usr/local/mysql-proxy/share/mysql-proxy/rw-splitting.lua \
--daemon --pid-file=/var/run/mysql-proxy.pid --log-file=/var/log/mysql-proxy.log

啟動腳本寫入 /etc/init.d/mysql-proxy 並 chkconfig --add 開機自啟。

4. 客戶端驗證

mysql -u t_girl_user -p123456 -P 4040 -h 192.168.0.234 -D t_girl

寫入測試

mysql> INSERT INTO t(c_str) VALUES('wangwang');
Query OK, 1 row affected
mysql> SHOW PROCESSLIST;
-- 僅 Master (235) 出現 Sleep 連線,證實寫入走 Master

讀取測試

mysql> SELECT * FROM t;
+----+----------+
| id | c_str    |
+----+----------+
| 1  | B        |  -- 原有 Slave 資料
| 2  | wangwang |  -- 新寫入資料 (同步後可見)
+----+----------+
mysql> SHOW PROCESSLIST;
-- Slave (236) 出現 Query 連線,證實讀取走 Slave

5. 常見問題

  • Lua 版本不符:Proxy 0.8.x 需 Lua 5.1.x,5.2/5.3 不相容。
  • rw-splitting.lua 邏輯:預設非事務 SELECT 走 Slave,事務內 SELECT 走 Master;可自訂 proxy.global.config.rw_split 微調。
  • 防火牆:Proxy 機器需開放 4040,後端 3306 需互通。
  • 效能基準:SysBench OLTP 測試,Proxy 吞吐損耗 <5%,延遲增加 <1ms。

完成部署後,應用只需將 JDBC/連線字串指向 192.168.0.234:4040 即可透明享受讀寫分離。

copyright © 萬盛學電腦網 all rights reserved