mysql5.7使用ProxySQL实现读写分离


mysql5.7使用ProxySQL实现读写分离

文章插图
 
 
ProxySql是MySQL的一款中间件产品,是灵活强大的mysql代理层,可以实现读写分离,支持query路由功能,支持动态指定某个sql进行缓存,支持动态加载配置 。故障切换和一些sql过滤功能 。
mysql5.7使用ProxySQL实现读写分离

文章插图
 
实战演练
环境
centos7.5 mysql5.7
ip:10.106.145.181(从) 10.106.145.182(主) 10.106.145.183(从)
 
注意:另个从库设置为read_only=on
mysql5.7使用ProxySQL实现读写分离

文章插图
 
我们可以将proxysql单独安装在一台机器上,这里因为机器不够我们就先将它安装在10.106.145.183上,下面我们开始操作
 
1. 安装并配置好mysq主从
从库的配置文件中要加入read_only=1,不然在启动之后查询mysql_servers表会出现从库也会被自动加入写入的组中 。proxysql区别主从的唯一方式就是read_only状态值 。如果是测试则先将从库临时设置为只读
vi /etc/my.cnf
添加 read_only=1
临时设置:
set global read_only=on
 
2. 安装ProxySql
vim /etc/yum.repos.d/proxysql.repo
[proxysql_repo]
name= ProxySQL YUM repository
baseurl=http://repo.proxysql.com/ProxySQL/proxysql-2.0.x/centos/$releasever
gpgcheck=1
gpgkey=http://repo.proxysql.com/ProxySQL/repo_pub_key
 
3.安装ProxySQL和mariadb客户端(如果有该机器上有mysql客户端则不需要安装mariadb)
ProxySQL内置了一个轻量级的数据库,所以需要有MySQL客户端连上去对其进行配置
yum install proxysql mariadb -y
这里因为该机器上有mysql客户端了,所有我使用指令如下
yum install proxysql -y
4.启动ProxySQL服务
systemctl start proxysql
systemctl status proxysql
设置开机启动
system enable proxysql
mysql5.7使用ProxySQL实现读写分离

文章插图
 
netstat -anlp| grep proxysql
mysql5.7使用ProxySQL实现读写分离

文章插图
 
proxysql --version
mysql5.7使用ProxySQL实现读写分离

文章插图
 
5.连接管理端口
6032是proxysql的管理端口号6033是对外服务的端口,用户名密码都是admin
登录命令
/usr/local/mysql/bin/mysql -uadmin -padmin -h 127.0.0.1 -P 6032
show databases;
mysql5.7使用ProxySQL实现读写分离

文章插图
 
6.四个库的说明
main:内存配置数据库,即memory,表里存放后端db实例 用户验证 路由规则等信息,该库信息如 下
 
mysql5.7使用ProxySQL实现读写分离

文章插图
 
其中主要表
mysql_servers:后端可以连接mysql的服务器列表
mysql_users:后端数据库账户和监控账户
mysql_query_rules: query路由到后端不同服务器的规则列表
disk库:持久化磁盘的配置
stats库:统计信息的汇总
monitor库:一些监控收集的信息,包括数据库的健康状态等
 
7.在主库上配置监控账户和对外访问账户
create user monitor@'10.106.145.%' identified by 'monitor';
grant all privileges on *.* to monitor@'10.106.145.%' with grant option;
create user zsprox@'10.106.145.%' identified by 'zsprox';
grant all privileges on *.* to zsprox@'10.106.145.%' with grant option;
主库的账户会被同步到另外两个从库上,如果屏蔽了则需要分别到从库上创建上面两个账户
8.Proxysql的多层配置系统
proxysql有一套完整的配置系统,方便dba对线上操作,整套配置系统分为三层,顶层为runtime,中间层为memory,底层也就是持久层为disk 和config file,配置结构如下
 
mysql5.7使用ProxySQL实现读写分离

文章插图
 
runtime:代表当前生效的正在使用的配置,无法直接修改这里的配置,必须从下一层load进来
memory:上层连runtime下面连接持久化,这层是可以正常操作proxysql的配置,随便修改,不会影响生产环境,修改这个配置一般是先在memory中完成的,确认正常后在加载到runtime和持久化到磁盘上
disk 和config file:持久化信息,重启后内存的信息会丢失,所有需要持久化
 
9. 添加主从服务器列表
使用超管用户登录


推荐阅读