mysqlrouter与MHA高可用
2026/8/8 10:05:58 网站建设 项目流程

一、mysql路由器

MySQL Router 是 MySQL 官方中间件,配合 MGR 集群实现读写自动路由、主节点故障自动切换,对外提供统一访问入口,隔离后端集群拓扑

1.1安装软件

可从mysql官网直接下载合适版本到Windows,然后同步到服务器中

再使用 rpm 工具本地安装 MySQL Router 8.0.21 软件包(CentOS7 系统版本)

1.2配置服务

编辑配置文件

cd /etc/mysqlrouter/

vimmysqlrouter.conf
配置解析:
开放 7001 只读端口,轮询分发读流量;开放 7002 读写端口,固定选用第一个可用节点处理读写请求(可以自己选择顺序)
启动服务:systemctl enable --now mysqlrouter.service
在该节点上同步集群节点上的mysql服务
在mysql集群中创建远程测试用户:

连接mysql路由器:

然后在server1上查看网络链接:

测试7002端口:

在自己设置的第一个端口上查看网络连接:

二、InnoDB Cluster

接入 InnoDB Cluster 元数据模式(metadata_cache),让 MySQL Router 自动感知集群拓扑,不再使用静态节点列表。

2.1配置mgr 单主模式

关闭所有mysqld节点,修改参数后重新启动组复制:

在配置文件中做修改,打开单主模式

重新启动组复制

server1:

server2:

server3:

2.2mysql shell

首先安装软件包:

yum install -y mysql-shell-8.0.46-1.el7.x86_64.rpm

在primary节点创建集群管理员(单主模式只有primary节点能够写入数据):

在server4(mysql router)通过 MySQL Shell(mysqlsh) 使用集群管理员账号 icadmin 连接 MGR 集群节点 192.168.11.150(primary) 的 3306 端口,用来管理 InnoDB Cluster (MGR 集群)。

接管现有mgr集群:

查看状态:

2.3mysql router

自动生成配置:

用mysqlrouter使用icadmin去连接我们任意一个集群节点,都可以获知我们整个集群的状态

它自动为我们创建了两套主从的配置,其中MYSQL X protocol几乎不怎么使用

然后它会自动生成mysqlrouter的配置

我们所使用的只有这两个:

重启服务并查看这两个端口是否激活:

再次连接路由器改为6446端口(读写):mysql -h 192.168.11.153 -P 6446 -u wxh -pwestos

在server1上实时查看状态(watch lsof -i :3306)

连接6447端口(只读):

查看状态:

停掉server1(primary)上的组复制:

进到其他的节点,集群已经把server1踢出了,自动把server3生成了primary

还是可以继续访问,因为之前连接的是server1,再次连接时中断了,它会帮你连接到server3上

此时我们再次启动server1,它也会自动连接进入集群,它的角色也会自己变为SECONDARY

此时再访问6447端口,也会自动连接,mysql router的调度自动生效,它会自动感知集群后端的角色变化,哪个节点坏了,哪个节点失效了,它并不会影响我们的调度系统

三、mysql MHA高可用

3.1创建一主两从集群

首先停掉mysqlrouter和各个节点的MySQL数据库

master配置

在server1上进入到mysql数据目录(/data/mysql),将数据文件全部删除清空,然后编辑主配置文件,删掉多余的内容后保存退出

修改完成之后要做初始化:

mysqld --defaults-file=/etc/mysql/my.cnf --initialize
初始化完成之后进入mysql修改密码并创建用户再授权:
salve配置:
删除数据文件后修改主配置文件:

进入mysql后修改密码和用户并启动slave:

查看状态没有报错即可

server3的配置与server2一致,注意修改server_id

测试:

master:

在master上创建数据库并启用,向里面写入数据,在slave端查看

slave:

3.2MHA部署

首先在server4上安装管理端软件

yum install mha4mysql-manager-0.58-0.el7.centos.noarch.rpm mha4mysql-node-0.58-0.el7.centos.noarch.rpm
在管理端配置免密服务:

把密钥复制到各节点:

scp -r .ssh/ server1:

scp -r .ssh/ server2:

scp -r .ssh/ server3:

复制客户端软件到各个节点:

scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server1:

scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server2:

scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server3:

在server1、server2、server3上安装客户端软件:
yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm

MHA配置:

先创建目录:mkdir /etc/masterha

编辑主配置文件:

让server1和server2能够做主从切换,server3作为备机

在master上设置mysql 管理员权限,slave节点会自动同步:

测试:

检测各节点ssh免密连接:

masterha_check_ssh --conf=/etc/masterha/app1.cnf

检测主从复制集群状态:

masterha_check_repl --conf=/etc/masterha/app1.cnf

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询