日期:2014-05-16  浏览次数:20695 次

Mysql-proxy主从搭建读写分离全过程

废话不说!

Mysql-proxy是什么,大家都知道,不知道的就别往下看了...
首先搭建 mysql 主从数据库,参考: http://blog.csdn.net/swengineer/archive/2011/03/11/6239711.aspx

下载 mysql-proxy 最新版,本文撰写时最新版本为 MySQL Proxy 0.8.1 alpha

安装 mysql-proxy 步骤如下:

解压 mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit.gz

tar zxvf mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit.gz

cp -R mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit /usr/local/proxy-mysql


新建或编辑 /etc/mysql-proxy.cnf 文件,添加以下内容 ( 具体参数根据实际情况修改 ) :

vi /etc/mysql-proxy.cnf

[mysql-proxy]

admin-username = zhangdongyu

admin-password = 123123

daemon = true

keepalive = true

proxy-backend-addresses = 192.168.0.88:3306

proxy-read-only-backend-addresses = 192.168.0.88:3307

proxy-lua-script = /usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua

admin-lua-script = /usr/local/proxy-mysql/share/doc/mysql-proxy/admin-sql.lua

log-file = /usr/local/proxy-mysql/cn.log

log-level = debug

?

主要参数注解:


proxy-backend-addresses??????????????????? mysql 主库(写)地址

proxy-read-only-backend-addresses???? mysql 从库(读)地址

proxy-lua-script???????????????????????????????? 读写分离脚本

admin-lua-script???????????????????????????????? admin 脚本

admin-username???????????????????????????????? 数据库用户名(主从上都需建立相同用户)

admin-password???????????????????????????????? 数据库密码

daemon???????????????????????????????????????????? daemon 进程运行

keepalive?????????????????????????????????????????? 保持连接(启动进程会有 2 个,一号进程用来监视二号进行,如果二号进程死掉自动重建,此参数在旧版本中无法使用)

编辑 profile/.bash_profile 脚本

vi /etc/profile( 或者 .bash_profile)

LUA_PATH="/usr/local/proxy-mysql/share/doc/mysql-proxy/?.lua"

export LUA_PATH

export PATH=$PATH:/usr/local/proxy-mysql/bin

:wq

source /etc/profile

?

为方便建立建立 mysql-proxy.sh 脚本

#!/bin/bash

mode=$1

if [ -z "$mode" ] ; then

mode="start"

fi

case $mode in

start)

mysql-proxy --defaults-file=/etc/mysql-proxy.cnf>/usr/local/proxy-mysql/cn.log &

;;

stop)

killall -9 mysql-proxy

;;

restart)

if $0 stop ; then

$0 start

else

echo  "Restart failed!"

exit 1

fi

;;

esac

exit 0 
?

启动 mysql-proxy

sh 脚本

启动: ./mysql-proxy.sh? ./mysql-proxy.sh start

?

重启: ./mysql-proxy.sh restart

停止: ./mysql-proxy.sh stop

?

测试:

为达到测试效果,修改 admin-sql.lua 脚本以下两行

vi /usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua