用 mysql-proxy 實踐 讀/寫 分離

起因是不想要動到舊的程式碼 , 若用 mysql-proxy 把讀寫分離出來 , 那舊的程式連接資料庫的 connect 段就不用改了 , 而且 mysql-proxy 官網還寫了不少好處:

– load balancing
– failover
– query analysis
– query filtering and modification
and many more.

首先要先建制一個 master/slave 的 mysql 架構 – 設定 mysql 成 master / slave 架構

在 gentoo 中 , 用 emerge –av mysql-proxy 把 目前版本 0.61 裝進來 , 然後 /etc/conf.d/mysql-proxy 的設定如下

# /etc/conf.d/mysql-proxy: config file for /etc/init.d/mysql-proxy

# location auf pidfile
PIDFILE="/var/run/mysql-proxy.pid"

# general options for mysql-proxy
OPTS="--proxy-lua-script=/root/tutorial-keepalive.lua
--proxy-backend-addresses=172.30.0.182:3306
--proxy-read-only-backend-addresses=172.30.0.183:3306
"
#OPTS="/root/mysql-proxy.lua"

# if you want mysql-proxy to depend on mysql, enable this:
#RC_NEED="mysql"

這邊的 tutorial-keepalive.lua 可以到 http://svn.mysql.com/svnpublic/mysql-proxy/trunk/examples/tutorial-keepalive.lua下載

參考 http://jan.kneschke.de/2007/8/1/mysql-proxy-learns-r-w-splitting

O’Reilly 有一些 lua 的 sample : http://www.oreillynet.com/pub/a/databases/2007/07/12/getting-started-with-mysql-proxy.html?page=4

MySQL 官網的 FAQ : http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-faq.html

http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy.html

在 January 30th, 2009 , MySQL Proxy 有新版了  from 0.6.1 to 0.7.0

http://jan.kneschke.de/2009/1/30/mysql-proxy-from-0-6-1-to-0-7-0

另外 Lua 是一種簡單/快速的 script language , mysql proxy snippets

最後看到有個問題 : “SPoF” , Sigle Point of Failure ….