mysql配置读写分离

一.原理

在配置完成主从复制的基础上,通过一台另外的代理服务器做转发,若判断为读,则走从库;若为写,则走主库

二.环境

三台ubuntu16.04(x86_64)虚拟机

ip:192.168.3.221(主); 192.168.2.254(从);192.168.2.245(mysql_proxy代理)

mysql版本:14.14 Distrib 5.7.23, for Linux(x86_64),分别在主从数据库安装,代理服务器无需安装

lua版本:Lua 5.3.5

mysql-proxy版本:mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit

三.配置(以下操作在root用户下)

1.安装lua

代理服务器(192.168.2.245)中进行

MySQL-Proxy的读写分离主要是通过rw-splitting.lua脚本实现的,因此需要安装lua。

官网下载:http://www.lua.org/download.html

步骤:

0)下载最新Lua版本,当下最新版为Lua5.3.5

1 ) 将安装包Lua5.3.4.tar.gz移动到/Home/czh/Lua 目录下(个人喜好)

2)解压:tar -zxvf lua-5.3.4.tar.gz

3)编译:make linux test

若出现错误:fatal error: readline/readline.h: No such file or directory

执行:

apt-get install libreadline-dev

再次编译:make linux test

2.安装mysql-proxy

代理服务器(192.168.2.245)中进行

官网下载:https://downloads.mysql.com/archives/proxy/

步骤:

0) 下载对应版本的最新压缩包

1) 将安装包mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz移动到/Home/czh/mysql-proxy (个人喜好)

2) 解压:tar -zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz

3)为了方便把rw-splitting.lua文件放在靠外的位置

#cp /home/czh/mysql-proxy/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit/share/doc/mysql-proxy/rw-splitting.lua /home/czh/mysql-proxy/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit/

3.修改rw-splitting.lua配置文件

代理服务器(192.168.2.245)中进行

min_idle_connections = 1, //默认为4

max_idle_connections = 1, //默认为8

 

4.设置并启动mysql-proxy

代理服务器(192.168.2.245)中进行

在/home/czh/mysql-proxy/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit/bin目录下,执行:

mysql-proxy --proxy-read-only-backend-addresses=192.168.2.245:3306 
--proxy-backend-addresses=192.168.3.221:3306 
--proxy-lua-script=/home/czh/mysql-proxy/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit/rw-splitting.lua &

 

192.168.3.221  master  主机 只写

192.168.2.245  slaver  从机 只读

       当运行上面语句后,查询进程应当有4040(mysq-proxy使用的端口)

5.创建测试用户

主数据库(192.168.3.221)中进行

mysql>grant all on *.* to 'czh_test3'@'192.168.2.245' identified by '123456';

四.测试

我在window系统中的navicat用以上账户登录mysql(ip为代理服务器的ip)

为了测试,先关闭主从复制

从数据库(192.168.2.254)中进行

mysql>stop slave; 

1.测试写分离

在navicat插入数据,登陆主数据库(192.168.3.221),发现主库更新;登陆从数据库(192.168.2.254),发现从库未更新。说明写分离。

2.测试读分离

在navicat中查看,也没有更新的内容,说明读分离。

 

五.参考

https://blog.csdn.net/u010739551/article/details/49508239

https://www.cnblogs.com/phpstudy2015-6/p/6687480.html#_label0

https://blog.csdn.net/qq_23954569/article/details/70879672

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值