mysqlroute配置和使用
mysqlroute配置读写分离及故障转移(HA)
前言
1、MySQL Router是处于应用client和dbserver之间的轻量级代理程序,它能检测,分析和转发查询到后端数据库实例,并把结果返回给client。是mysql-proxy的一个替代品。
2、从数据库服务器故障,业务可以正常运行。由MySQL Router来进行自动下线不可用服务器。程序配置不需要任何修改。
3、主数据库故障,由MySQL Router来决定主从自动切换,业务可以正常访问。程序配置不需要做任何修改。
4、MySQL Router接受前端应用程序请求后,根据不同的端口来区分读写,把连接读写端口的所有查询发往主库,把连接只读端口的select查询以轮询方式发往多个从库,从而实现读写分离的目的。读写返回的结果会交给MySQL Router,由MySQL Router返回给客户端的应用程序。
5、MySQL Router的主要用途是读写分离,主主故障自动切换,负载均衡,连接池等。
6、Mysql router主主故障切换功能经过测试没有问题,但是有一个比较大的坑需要注意Mysql router的主主故障切换如果是运行在一主一从的情况下,从库作为主库的备份,这种情况是使用mysql router主主故障切换是没有问题的,但是在一主多从的情况下使用主主故障切换就会处在如下问题:mysql主库挂掉了,从库slave01和slave02却一直是同步的原来的主库master的IP地址,导致slave上的IO线程一直是connecting状态,导致slave02复制失败。
一、部署mysqlroute
解压
[root@shigj data]# tar -zxvf mysql-router-8.0.24-el7-x86_64.tar.gz
mysql-router-8.0.24-el7-x86_64/lib/private/libcrypto.so
重命名
mysqroot@shigj data]# mv mysql-router-8.0.24-el7-x86_64 mysql-router-8.0.24
[root@shigj mysql-router-8.0.24]# mkdir conf
[root@shigj mysql-router-8.0.24]# cd conf/
[root@shigj conf]# ls
[root@shigj conf]# vim mysqlrouter.cnf
[DEFAULT]
logging_folder = /var/log/mysqlrouter
[logger]
level = INFO
# 主节点故障转移配置
[routing:failover]
# 写节点地址
bind_address = 192.168.10.28
#mysql默认的写端口
bind_port = 7001
#最大链接数
max_connections = 1024
#读写模式
mode = read-write
#默认情况下第一台主数据库为写主库,当第一台主数据库DOWN机后,第二台数据库被提升为主库
destinations = 192.168.10.26:3306
#从节点负载均衡配置
[routing:balancing]
bind_address = 192.168.10.28
bind_port = 7002
max_connections = 1024
mode = read-only
destinations = 192.168.10.27:3306
二、启动并验证
验证配置是否成功
[root@shigj conf]# mysqlrouter -V
MySQL Router Ver 8.0.24 for Linux on x86_64 (MySQL Community - GPL)
添加环境变量
[root@shigj conf]# echo "export PATH=$PATH:/data/mysql-router-8.0.24/bin/" >> /etc/profile
[root@shigj conf]# source /etc/profile
启动
[root@shigj conf]# mysqlrouter -c /data/mysql-router-8.0.24/conf/mysqlrouter.cnf &
查看端口是否启动
[root@shigj ~]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 939/sshd
tcp 0 0 192.168.10.28:7001 0.0.0.0:* LISTEN 3943/mysqlrouter
tcp 0 0 192.168.10.28:7002 0.0.0.0:* LISTEN 3943/mysqlrouter
tcp6 0 0 :::22 :::* LISTEN 939/sshd
三、客户端现象
总结
本文是针对上一篇文章https://blog.csdn.net/qq_27745471/article/details/121397394?spm=1001.2014.3001.5501mysql主从复制的延续,主要应用是配置负载均衡、读写分离以及高可用的动作配置。