Mysql的读写分离

Mysql的读写分离是基于数据的主从复制,所以在配置读写的服务器上分别配置GTID主从复制,具体配置方法可参考上一篇《MySQL的异步、半异步、组复制》一文,这里仅给出测试结果。

server2上检查主从配置:

图  1 查看server2的配置

下面开始设置读写分离。

我们直接使用官方提供的插件Mysql-proxy。

1、MySQL-proxy简介

mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等。MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可。

当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗余,在应用服务器的连接池配置中配置到多 个proxy的连接参数即可。

2、安装及配置

下载链接:https://cdn.mysql.com/archives/mysql-proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

安装:因为是rmp包,所以可以直接通过yum仓库进行直接安装。

图 2 解压安装

配置:

因为需要自己编写配置文件,所以创建配置文件的目录以及配置编写配置文件:

####创建配置文件目录
[root@localhost local]# mkdir /usr/local/mysql-proxy/bin/conf

####编写配置文件
[root@localhost local]# /usr/local/mysql-proxy/bin/conf/mysql-proxy.conf
配置文件内容:
....
  1 [mysql-proxy]
  2 proxy-address=0.0.0.0:3306                            ##监听本机端口
  3 proxy-backend-address=192.168.1.110:3306              ##读写数据库
  4 proxy-read-only-backend-address=192.168.1.120:3306     ##只读数据库
  5 proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
                                                          ##读写启动配置
  6 pid-file=/usr/local/mysql-proxy/log/mysql-proxy.pid   ##pid存储位置
  7 log-file=/usr/local/mysql-proxy/log/mysql-proxy.log   ##日志存储位置
  8 plugins=proxy                                         ##以插件形式启动
  9 log-level=debug                                       ##日志级别
 10 keepalive=true                                        ##检测端口
 11 daemon=true                                           ##以守护进程方式(后台)运行
....

####修改配置文件的权限
[root@localhost local]# chmod 660 /usr/local/mysql-proxy/bin/conf/mysql-proxy.conf

####创建日志目录
[root@localhost local]# mkdir /usr/local/mysql-proxy/log

####编写lua启动脚本
[root@localhost local]# vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua 
脚本内容:
##编写lua启动脚本:/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua 设置
....
 38 if not proxy.global.config.rwsplit then
 39         proxy.global.config.rwsplit = {
 40                 min_idle_connections = 1,
 41                 max_idle_connections = 2,    ##超过两台时,启动读写分离
 42 
 43                 is_debug = false
 44         }
 45 end
....

图 3 配置流程

 3、启动并测试

启动:启东时需要制定配置文件路径

图 4 启动

当查看的日志内容为目标主机时,证明启动成功:

图 5 配置成功后的内容

 在数据库中对权限进行设置:

###在数据库中对用户授权
mysql> GRANT INSERT,UPDATE,SELECT ON *.* TO repl@'%' IDENTIFIED BY 'Linux+755';

###刷新授权表
mysql> FLUSH PRIVILEGES;

###创建测试表
mysql> USE test;
Database changed
mysql> CREATE TABLE testtable(
    -> username VARCHAR(10) NOT NULL,
    -> password VARCHAR(15) NOT NULL);
mysql> DESC testtable;
图 5 用户授权
图 6 创建表

然后使用客户端远程登录,该用户也装有数据库,对数据库进行远程登录。

图 7 分别登录

在server3中查看登录时的分配:

图 8 用户分配

然后在客户端插入数据:

图 9 插入数据

在server1上查看:

图 10 在server1上查看

此时在server2上也可以查看到数据,是因为我们设置的半同步,关闭半同步,此时客户端插入的数据只能在server1上查看。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值