博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 读写分离mysql-proxy 代理
阅读量:7305 次
发布时间:2019-06-30

本文共 3578 字,大约阅读时间需要 11 分钟。

hot3.png

mysql-proxy 是一个mysql代理程序,主要目的实现mysql的读写分离

是通过lua脚本来实现
软件版本:mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
这是一个通用的二进制安装包,下载地址:https://pan.baidu.com/s/1hsJmi9I

1    解压安装

        tar -xvf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

        把刚才解压的文件夹mysql-proxy-0.8.5-linux-el6-x86-64bit 复制到/usr/local/mysql-proxy

[root@myvm mysql]# mv mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy

        把/usr/local/mysql-proxy 设置为root用户和root组

root@myvm local]# chown root.root mysql-proxy/ -R

2    设置

    2.1 编写启动脚本mysql-proxy ,由于启动脚本死有Lua写的,所以可以从其他方面找到修改即可。启动脚本这里可以下载 并放在/etc/init.d/下面

[root@myvm mysql]# cp mysql-proxy /etc/init.d/

    2.2修改lua脚本

        vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
        min_idle_connections = 1,
        max_idle_connections = 1,

        注意:修改上面是修改的最小和最大启动读写分离的链接数

    2.3添加mysql-proxy的配置文件

        vim /etc/sysconfig/mysql-proxy
        ADMIN_USER="admin"
        ADMIN_PASSWORD="admin"
        ADMIN_ADDRESS=""
        ADMIN_LUA_SCRIPT="/usr/local/mysql-proxy/share/doc/mysql-proxy/admin.lua"
        PROXY_ADDRESS=""
        PROXY_USER="mysql-proxy"
        PROXY_OPTIONS="--daemon --log-level=info --log-use-syslog --plugins=proxy --plugins=admin --proxy-backend-addresses=192.168.242.134:3306 --proxy-read-only-backend-addresses=192.168.242.135:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua"

#//--daemon:以守护进程模式启动mysql-proxy

#//--proxy-backend-addresses:后端可读写的mysql服务器的地址和端口
#//--proxy-read-only-backend-addresses:后端只读mysql服务器的地址和端口
#//--proxy-lua-script:完成mysql代理功能的Lua脚本

上面的proxy-backend-addresses 后面跟上主服务器的地址,proxy-read-only-backend-addresses 后面跟上从服务器的地址

    2.4启动mysql-proxy

        /etc/init.d/mysql-proxy start
        netstat -anutlp|grep mysql

        注意:需要先对/etc/init.d/mysql-proxy 进行权限设置为755

[root@myvm init.d]# chmod 755 mysql-proxy [root@myvm init.d]# /etc/init.d/mysql-proxy startStarting /usr/local/mysql-proxy/bin/mysql-proxy:           [  OK  ]

2.5验证

        由于需要在mysql-prxoy上面登录mysql服务器所以需要安装一个mysql客户端,如果你不在proxy上登录,那么mysql-proxy服务器连mysql客户端都不许要安装

        在master上面创建一个用户

        grant all on *.* to 'jack'@'%' identified by '123456'
        flush privileges

        登录mysql-proxy的管理端

        mysql -uadmin -padmin -h mysql-proxy-ip --prot 4041
        这里的用户名和密码是启动脚本中设置的用户名和密码并非mysql master所授权的用户
        登录mysql真实提供功能的服务器
        mysql -ujack -p123456 -h mysql-proxy-ip --port 3306
        
        然后在master上使用tcpdump抓包分析
        tcpdump -i eth0 -nn -XX ip dst mysql-master-ip and tcp dst port 3306

        在从服务器上也使用tcpdump抓包分析

        tcpdump -i eth0 -nn -XX ip dst mysql-slave-ip and tcp dst port 3306

        mysql -ujack -p123456 -h mysql-proxy-ip --port 3306

        create database db_name可以看到数据在master上抓包了
        select * from up01;可以看到数据在slave上抓包了

        如果没有实现,请多开几个mysql-proxy的连接会话

        并多执行几次select语句

        可以在mysql-proxy的管理端上使用

        select * from backends去查看后端相应信息
        +-------------+----------------------+-------+------+------+-------------------+
        | backend_ndx | address              | state | type | uuid | connected_clients |
        +-------------+----------------------+-------+------+------+-------------------+
        |           1 | 192.168.125.128:3306 | up    | rw   | NULL |                 0 |
        |           2 | 192.168.125.129:3306 | up    | ro   | NULL |                 0 |
        +-------------+----------------------+-------+------+------+-------------------+
        2 rows in set (0.00 sec)
        如果不想写启动脚本就要用以下命令和参数去启动
       /usr/local/mysql-proxy/libexec/mysql-proxy --daemon --log-level=info --log-use-syslog --plugins=proxy --plugins=admin --proxy-backend-addresses=192.168.125.128:3306 --proxy-read-only-backend-addresses=192.168.125.12:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --pid-file=/var/run/mysql-proxy.pid --proxy-address= --user=mysql-proxy --admin-username=admin --admin-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/admin.lua --admin-password=admin
 

转载于:https://my.oschina.net/wangzilong/blog/785937

你可能感兴趣的文章
一篇很全面的freemarker教程
查看>>
模块间变量传递
查看>>
非常有趣linux图形及动画显示-菜鸟提升兴趣必看!
查看>>
邮件服务器搭建之:详解Dovecot配置
查看>>
企业云桌面-16-配置DHCP服务器-011-DC01
查看>>
AIX增加用户和组
查看>>
WOT2015 互联网运维与开发者大会上的演讲
查看>>
更快更低耗!Spread表格控件V11 CTP发布,性能巨大提升
查看>>
使用多级分组报表展现分类数据
查看>>
IT人要时刻感激父母培养之恩
查看>>
分享Silverlight/WPF/Windows Phone一周学习导读(05月09日-05月14日)
查看>>
第8部分:敏捷教练
查看>>
腾讯,是抄袭、还是创新
查看>>
linux解压rar
查看>>
微软私有云分享(R2)17SCAC被精简的功能
查看>>
苹果页面启动icon大小(57*57 114*114)
查看>>
半同步半异步模式的实现 - MSMQ实现
查看>>
jquery ajax 跨域
查看>>
Unix Shell中单引号、双引号字符、反斜杠、反引号的使用[转]
查看>>
samba config
查看>>