cd /usr/local/mysql-proxy
mkdir lua #建立脚本存放目录
mkdir logs #建立日志目录
cp share/doc/mysql-proxy/rw-splitting.lua ./lua #复制读写分离配置文件
cp share/doc/mysql-proxy/admin-sql.lua ./lua #复制管理脚本
vi /etc/mysql-proxy.cnf #建立配置文件
[mysql-proxy]
user=root
#运行mysql-proxy用户
admin-username=root
#主从mysql共有的用户
admin-password=root111111
#用户的密码
proxy-address=192.168.217.151:4000
#mysql-proxy运行ip和端口,不加端口,默认4040
proxy-read-only-backend-addresses=192.168.217.149
#指定后端从slave读取数据
proxy-read-only-backend-addresses=192.168.217.150
#指定后端从slave读取数据
proxy-backend-addresses=192.168.217.148
#指定后端主master写入数据
proxy-lua-script=/usr/local/mysql-proxy/lua/rw-splitting.lua
#指定读写分离配置文件位置
admin-lua-script=/usr/local/mysql-proxy/lua/admin-sql.lua
#指定管理脚本
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log
#日志位置
log-level=info
#定义log日志级别,由高到低分别有(error|warning|info|message|debug)
daemon=true
#以守护进程方式运行
keepalive=true
#mysql-proxy崩溃时,尝试重启
保存退出!
chmod 660 /etc/mysql-proxy.cnf
三、修改读写分离配置文件
vi /usr/local/mysql-proxy/lua/rw-splitting.lua
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, #默认超过4个链接数时,才开始读写分离,改成1
max_idle_connections = 1, #默认8,改成1
is_debug = false
}
end
四、启动mysql-proxy【关闭mysql-proxy使用:killall -9 mysql-proxy】
/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
netstat -tupln | grep 4000 #查看端口是否启动,若成功会显示端口信息
五、测试读写分离
1.在主服务器和从服务器都建立proxy用户用于mysql-proxy使用(148,149,150),执行三次下边的代码
mysql -uroot -proot111111; #进入mysql,你本身配置的mysql用户密码
mysql> grant all on *.* to 'root'@'192.168.217.151' identified by 'root111111';
2>.使用客户端链接mysql-proxy(或者直接登陆mysql工具登陆)
mysql -u root -h 192.168.217.151 -P 4000 -p #再输入密码 root111111; 而后加入数据。
或mysql工具登陆,而后随便加点数据,看看148主服务器有没有写进去。
数据同步写人没有问题。工具
3.关闭
149(从读)数据库,修改一下
150(从读)的数据,登陆mysql-proxy 查询,会查询到
150(从读)的数据,再关闭
150(从读)数据库,登陆mysql-proxy 查询会查询到主数据
148(主写)的数据。
service mysql stop[restart]#开启,重启 stop[start] slave # 关闭[开启]同步进程
到此读写分离已经,配置完成了。
提示:
proxy-read-only-backend-addresses=192.168.217.149#指定后端从slave读取数据
proxy-read-only-backend-addresses=192.168.217.150#指定后端从slave读取数据
这里配置两个从数据库,当你读取mysql-proxy代理时,会先读取第一个149的数据,若是149挂了,再会读150库的数据。两个都挂了读主数据数据148