起因是不想要動到舊的程式碼 , 若用 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 ….