mysql-proxy 是一個輕量級中間件,位於客戶端與 MySQL 之間,支持 Lua 腳本實現讀寫分離、SQL 過濾、審計、分片等功能。本文記錄 CentOS 下依賴安裝、編譯部署與基礎驗證流程。
yum install -y lua-devel glib2-devel
wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
tar -zxvf libevent-2.1.12-stable.tar.gz
cd libevent-2.1.12-stable
./configure --prefix=/usr/local/libevent
make && make install
echo "/usr/local/libevent/lib" > /etc/ld.so.conf.d/libevent.conf
ldconfig
wget https://dev.mysql.com/get/Downloads/MySQL-Proxy/mysql-proxy-0.8.5.tar.gz
tar -zxvf mysql-proxy-0.8.5.tar.gz
cd mysql-proxy-0.8.5
./configure --prefix=/usr/local/mysql-proxy --with-libevent=/usr/local/libevent
make && make check && make install
ldconfig
場景:後端 MySQL 192.168.1.245:3306,Proxy 監聽 192.168.1.201:3308
mysql-proxy -P 192.168.1.201:3308 \
--proxy-backend-addresses=192.168.1.245:3306 \
--daemon --pid-file=/var/run/mysql-proxy.pid \
--log-file=/var/log/mysql-proxy.log --log-level=info
客戶端連接 192.168.1.201:3308 即透明訪問後端數據庫。
-- rw_splitting.lua (官方示例簡化)
local rw_splitting = require("mysql-proxy.rw_splitting")
rw_splitting.enable({
max_idle_connections = 10,
min_idle_connections = 2,
is_debug = false
})
啟動參數增加:--proxy-lua-script=/usr/local/mysql-proxy/share/rw_splitting.lua
max_idle_connections、檢查後端 max_connections。--log-level=debug 日志,確認 Lua 版本兼容性 (建議 Lua 5.1)。⚠️ 注意:mysql-proxy 官方已停止維護 (GA 版本 0.8.5 發布於 2010 年)。生產環境強烈建議遷移至 ProxySQL、MyCat、ShardingSphere-Proxy 等活躍維護的中間件。