| 角色 | IP | 說明 |
|---|---|---|
| MySQL Proxy | 192.168.0.234 | 代理節點 A |
| MySQL Master (可寫) | 192.168.0.235 | 節點 B |
| MySQL Slave (唯讀) | 192.168.0.236 | 節點 C,已停止複制 |
tar zxvf lua-5.1.2.tar.gz -C /usr/local
cd /usr/local && mv lua-5.1 lua && cd lua
make local && make install
export LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm"
tar zxvf mysql-proxy-0.6.1-linux-rhel4-x86-32bit.tar.gz -C /usr/local/mysql/
cd /usr/local/mysql && mv mysql-proxy-0.6.1-linux-rhel4-x86-32bit mysql-proxy
export PATH=$PATH:/usr/local/mysql/mysql-proxy/sbin/
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/mysql-proxy/share/mysql-proxy/rw-splitting.lua &
監聽預設 4040 埠。rw-splitting.lua 內建讀寫分離邏輯。
#!/bin/sh
export PATH=$PATH:/usr/local/mysql-proxy
cd /usr/local/mysql-proxy
./mysql-proxy \
--proxy-read-only-backend-addresses=192.168.0.236:3306 \
--proxy-backend-addresses=192.168.0.235:3306 \
--proxy-lua-script=rw-splitting.lua >> /tmp/log 2>&1 &
mysql -u t_girl_user -p123456 -P 4040 -h 192.168.0.234 -D t_girl
INSERT INTO t(c_str) VALUES ('wangwang');
-- Master B 可見新資料
SELECT * FROM t; -- 顯示 B, wangwang
SELECT * FROM t; -- 僅顯示 C (原始資料),Master 新寫入不可見
-- 因 Slave 停止複制,驗證路由生效
INSERT INTO t(c_str) VALUES ('wangwei');
SELECT * FROM t; -- Slave 仍只見 C,Master 見 B, wangwang, wangwei
SHOW PROCESSLIST 確認連線分佈--proxy-pool-no-change-user、--max-open-files--admin-username/--admin-password/--admin-lua-script