MysqL读写分离的实现-Mysql proxy中间件的使用

为什么要架设读写分离,这里不做多余的说明,想了解具体原理,请百度或者参考其他帖子。在这里只做大概的配置说明,测试中使用三台服务器

192.168.136.142   主服务器

192.168.136.143  从服务器

192.168.136.144  中间服务器

解压安装的方式安装

https://downloads.mysql.com/archives/proxy/,安装Mysql proxy 需要确保服务器安装过lua,因为Mysql依赖于lua5.1以上版本,rpm  -q lua,看看是否安装,还依赖libevent,这里我选择的还是0.83版本,比较稳定。mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz

在中间服务器 下载完成之后,解压并移动目录

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

进入/usr/local/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        #复制管理脚本

然后在中间服务器配置一个mysql-proxy启动配置文件,并赋予执行权限,chmod 660 /etc/mysql-porxy.cnf

vi /etc/mysql-proxy.cnf                         #创建配置文件
//内容在下
[mysql-proxy]
user=root                                  #运行mysql-proxy用户
admin-username=pro                                 #主从mysql共有的用户
admin-password=pro123                             #用户的密码
proxy-address=192.168.136.144:4040                     #mysql-proxy运行ip和端口,不加端口,默认4040
proxy-read-only-backend-addresses=192.168.136.143          #指定后端从slave读取数据
proxy-backend-addresses=192.168.136.142                #指定后端主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),调试的时候建议debug
daemon=true                                   #以守护进程方式运行
keepalive=true                              #mysql-proxy崩溃时,尝试重启

这里编辑一个脚本,用于快速启动mysql-proxy,并赋予执行权限

vim /etc/profile.d/mysql-proxy.sh
//内容在下
export PATH=$PATH:/usr/local/mysql-proxy/bin/
chmod 660 /etc/mysql-porxy.cnf

执行以下命令查看帮助参数

 修改读写分离配置文件

vim /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 --defaults-file=/etc/mysql-proxy.cnf

查看和关闭服务命令如下

netstat -tupln | grep 4040 #已经启动
killall -9 mysql-proxy #关闭mysql-proxy使用

接下来还需要在主服务器授权,在主服务器创建proxy用户用于mysql-proxy使用,从服务器也会同步这个操作

mysql> grant all on *.* to 'pro'@'192.168.136.144' identified by 'pro123';

接下来使用客户端连接中间服务器,并测试读写

mysql -u pro -h 192.168.136.144 -P 4040 -p pro123

测试读写成功了,这里不做说明了

原文地址:https://www.cnblogs.com/wt645631686/p/8124625.html