知乎專欄 | 多維度架構 |
安裝環境 Ubuntu 13.04
$ sudo apt-get install mysql-proxy
ENABLED改為true
$ sudo vim /etc/default/mysql-proxy ENABLED="true" OPTIONS="--defaults-file=/etc/mysql/mysql-proxy.cnf"
配置 /etc/mysql/mysql-proxy.cnf
$ sudo vim /etc/mysql/mysql-proxy.cnf [mysql-proxy] daemon = true user = mysql proxy-skip-profiling = true keepalive = true max-open-files = 2048 event-threads = 50 pid-file = /var/run/mysql-proxy.pid log-file = /var/log/mysql-proxy.log log-level = debug admin-address=:4401 admin-username=admin admin-password=passw0rd admin-lua-script=/usr/local/lib/mysql-proxy/lua/admin.lua proxy-address = 0.0.0.0:3307 proxy-backend-addresses = 192.168.2.1:3306 proxy-read-only-backend-addresses=192.168.6.2:3306, 192.168.6.1:3306 proxy-lua-script=/usr/lib/mysql-proxy/lua/proxy/balance.lua
修改權限,這個步驟不能省略,否則無法啟動。
$ sudo chmod 0660 /etc/mysql/mysql-proxy.cnf
啟動mysql-proxy
$ sudo /etc/init.d/mysql-proxy start * Starting MySQL Proxy daemon... [ OK ]
測試3307連接埠
$ mysql -hlocalhost -P3307 -uroot -p
mysql-proxy 軟件包所含檔案如下:
$ dpkg -L mysql-proxy /. /etc /etc/default /etc/default/mysql-proxy /etc/init.d /etc/init.d/mysql-proxy /usr /usr/share /usr/share/mysql-proxy /usr/share/mysql-proxy/active-queries.lua /usr/share/mysql-proxy/active-transactions.lua /usr/share/mysql-proxy/admin-sql.lua /usr/share/mysql-proxy/admin.lua /usr/share/mysql-proxy/analyze-query.lua /usr/share/mysql-proxy/auditing.lua /usr/share/mysql-proxy/commit-obfuscator.lua /usr/share/mysql-proxy/histogram.lua /usr/share/mysql-proxy/load-multi.lua /usr/share/mysql-proxy/ro-balance.lua /usr/share/mysql-proxy/ro-pooling.lua /usr/share/mysql-proxy/rw-splitting.lua /usr/share/mysql-proxy/xtab.lua /usr/share/doc /usr/share/doc/mysql-proxy /usr/share/doc/mysql-proxy/README.TESTS.gz /usr/share/doc/mysql-proxy/README /usr/share/doc/mysql-proxy/copyright /usr/share/doc/mysql-proxy/changelog.Debian.gz /usr/lib /usr/lib/libmysql-chassis-glibext.so.0.0.0 /usr/lib/libmysql-chassis-timing.so.0.0.0 /usr/lib/libmysql-chassis.so.0.0.0 /usr/lib/libmysql-proxy.so.0.0.0 /usr/lib/mysql-proxy /usr/lib/mysql-proxy/lua /usr/lib/mysql-proxy/lua/proxy /usr/lib/mysql-proxy/lua/proxy/auto-config.lua /usr/lib/mysql-proxy/lua/proxy/balance.lua /usr/lib/mysql-proxy/lua/proxy/commands.lua /usr/lib/mysql-proxy/lua/proxy/parser.lua /usr/lib/mysql-proxy/lua/proxy/tokenizer.lua /usr/lib/mysql-proxy/lua/proxy/test.lua /usr/lib/mysql-proxy/lua/admin.lua /usr/lib/mysql-proxy/lua/lfs.so /usr/lib/mysql-proxy/lua/glib2.so /usr/lib/mysql-proxy/lua/chassis.so /usr/lib/mysql-proxy/lua/mysql.so /usr/lib/mysql-proxy/lua/lpeg.so /usr/lib/mysql-proxy/lua/posix.so /usr/lib/mysql-proxy/plugins /usr/lib/mysql-proxy/plugins/libadmin.so /usr/lib/mysql-proxy/plugins/libproxy.so /usr/lib/mysql-proxy/plugins/libreplicant.so /usr/lib/mysql-proxy/plugins/libdebug.so /usr/lib/pkgconfig /usr/lib/pkgconfig/mysql-proxy.pc /usr/lib/pkgconfig/mysql-chassis.pc /usr/bin /usr/bin/mysql-binlog-dump /usr/bin/mysql-myisam-dump /usr/bin/mysql-proxy /usr/include /usr/include/network-mysqld.h /usr/include/network-mysqld-lua.h /usr/include/network-mysqld-proto.h /usr/include/network-mysqld-binlog.h /usr/include/network-mysqld-packet.h /usr/include/network-mysqld-masterinfo.h /usr/include/network-conn-pool.h /usr/include/network-conn-pool-lua.h /usr/include/network-queue.h /usr/include/network-socket.h /usr/include/network-socket-lua.h /usr/include/network-address.h /usr/include/network-address-lua.h /usr/include/sys-pedantic.h /usr/include/chassis-plugin.h /usr/include/chassis-log.h /usr/include/chassis-keyfile.h /usr/include/chassis-mainloop.h /usr/include/chassis-path.h /usr/include/chassis-filemode.h /usr/include/chassis-limits.h /usr/include/chassis-event-thread.h /usr/include/chassis-gtimeval.h /usr/include/glib-ext.h /usr/include/glib-ext-ref.h /usr/include/string-len.h /usr/include/lua-load-factory.h /usr/include/lua-scope.h /usr/include/lua-env.h /usr/include/network-injection.h /usr/include/network-injection-lua.h /usr/include/chassis-shutdown-hooks.h /usr/include/chassis-exports.h /usr/include/network-exports.h /usr/include/network-backend.h /usr/include/network-backend-lua.h /usr/include/disable-dtrace.h /usr/include/lua-registry-keys.h /usr/include/chassis-stats.h /usr/include/chassis-timings.h /usr/include/chassis-frontend.h /usr/include/chassis-options.h /usr/include/chassis-win32-service.h /usr/include/chassis-unix-daemon.h /usr/include/my_rdtsc.h /usr/lib/libmysql-chassis-glibext.so.0 /usr/lib/libmysql-chassis-glibext.so /usr/lib/libmysql-proxy.so /usr/lib/libmysql-chassis-timing.so.0 /usr/lib/libmysql-chassis-timing.so /usr/lib/libmysql-proxy.so.0 /usr/lib/libmysql-chassis.so.0 /usr/lib/libmysql-chassis.so
# yum install mysql-proxy
# cat /etc/sysconfig/mysql-proxy # Options for mysql-proxy ADMIN_USER="admin" ADMIN_PASSWORD="" ADMIN_LUA_SCRIPT="/usr/lib64/mysql-proxy/lua/admin.lua" PROXY_USER="mysql-proxy" PROXY_OPTIONS="--daemon --log-level=info --log-use-syslog"
修改PROXY_OPTIONS選項
#PROXY_OPTIONS="--daemon --log-level=info --log-use-syslog" PROXY_OPTIONS="--defaults-file=/etc/mysql/mysql-proxy.cnf"
# mkdir /etc/mysql # vim /etc/mysql/mysql-proxy.cnf [mysql-proxy] daemon = true user = mysql-proxy proxy-skip-profiling = true keepalive = true ;max-open-files = 2048 event-threads = 512 pid-file = /var/run/mysql-proxy.pid log-file = /var/log/mysql-proxy.log log-level = debug admin-address=:4401 admin-username=admin admin-password=passw0rd admin-lua-script=/usr/lib64/mysql-proxy/lua/admin.lua proxy-address = 0.0.0.0:3307 proxy-backend-addresses = 192.168.2.1:3306 proxy-read-only-backend-addresses=192.168.6.2:3306, 192.168.6.1:3306 proxy-lua-script=/usr/lib64/mysql-proxy/lua/proxy/balance.lua
修復啟動腳本BUG
# vim /etc/init.d/mysql-proxy #daemon $prog $PROXY_OPTIONS --pid-file=$PROXY_PID --user=$PROXY_USER --admin-username="$ADMIN_USER" --admin-lua-script="$ADMIN_LUA_SCRIPT" --admin-password="$ADMIN_PASSWORD" 注視這行,改為下面的一行代碼 daemon $prog $PROXY_OPTIONS --pid-file=$PROXY_PID
啟動mysql-proxy
# chkconfig mysql-proxy on # service mysql-proxy start Starting mysql-proxy: [ OK ]