mysql-proxy读写分离

mysql-proxy读写分离

准备工作:mysql-proxy代理服务器(192.168.217.151),主服务器(192.168.217.217.148)负责写,从服务器1(192.168.217.149),从服务器2(192.168.217.150

                 在配置读写分离之前先主从复制,之前已经配置好主从文章:https://www.cnblogs.com/cx558/p/9476502.html

1、安装mysql-proxy(151服务器上)

      下载:http://dev.mysql.com/downloads/mysql-proxy/   最新版本是mysql-proxy-0.8.5

   tar zxvf mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz

  mv mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy

 

2、配置mysql-proxy,创建主配置文件 [特别注意配置文件要前后不能有空格,不然就会报错,搭建失败]

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
 
3、修改读写分离配置文件 
 
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
 
4、启动mysql-proxy【关闭mysql-proxy使用:killall -mysql-proxy
/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
netstat -tupln grep 4000 #查看端口是否启动,若成功会显示端口信息
 
5、测试读写分离
 1.在主服务器和从服务器都创建proxy用户用于mysql-proxy使用(148,149,150),执行三次下边的代码
mysql -uroot -proot111111; #进入mysql,你自己配置的mysql用户密码
mysqlgrant 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
 
 
 
 
 

 

posted @ 2018-08-16 14:41  博飞  阅读(213)  评论(0编辑  收藏  举报