一、mysql路由器
MySQL Router 是 MySQL 官方中间件,配合 MGR 集群实现读写自动路由、主节点故障自动切换,对外提供统一访问入口,隔离后端集群拓扑
1.1安装软件
可从mysql官网直接下载合适版本到Windows,然后同步到服务器中
再使用 rpm 工具本地安装 MySQL Router 8.0.21 软件包(CentOS7 系统版本)
1.2配置服务
编辑配置文件
cd /etc/mysqlrouter/
连接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),将数据文件全部删除清空,然后编辑主配置文件,删掉多余的内容后保存退出
修改完成之后要做初始化:
进入mysql后修改密码和用户并启动slave:
查看状态没有报错即可
server3的配置与server2一致,注意修改server_id
测试:
master:
在master上创建数据库并启用,向里面写入数据,在slave端查看
slave:
3.2MHA部署
首先在server4上安装管理端软件
把密钥复制到各节点:
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:
MHA配置:
先创建目录:mkdir /etc/masterha
编辑主配置文件:
让server1和server2能够做主从切换,server3作为备机
在master上设置mysql 管理员权限,slave节点会自动同步:
测试:
masterha_check_ssh --conf=/etc/masterha/app1.cnf
检测主从复制集群状态:
masterha_check_repl --conf=/etc/masterha/app1.cnf