MySQL Innodb Cluster配置

MySQL Innodb Cluster配置
Mr.蓝桉配置规划
本篇文章中MySQL服务采用编译安装,
| ip地址 | 主机名 | 角色 | 安装软件 |
|---|---|---|---|
| 192.168.3.2 | 348aeb8077a8 | 主(初始化) | Mysql8.0.30 mysql-shell mysql-route |
| 192.168.3.2 | 7ff037fcf001 | 备(初始化) | Mysql8.0.30 mysql-shell mysql-route |
| 192.168.3.4 | fc7b8078d23b | 备(初始化) | Mysql8.0.30 mysql-shell mysql-route |
三台主机分别创建‘mingliang‘@’%’ 用户并授权
1 | create user 'mingliang'@'%' identified with mysql_native_password by '123456'; |
安装mysql shell(三台机器必须全部安装)
1 | tar -xzvf mysql-shell-8.0.30-linux-glibc2.12-x86-64bit.tar.gz |
在mysql8用户中配置环境变量
1 | su - mysql8 |
使用mysql shell登录测试
1 | mysqlsh --mysqlx -h 192.168.3.2 -P 33060 -umingliang -p |
这里登录测试的时候出现了一个这样的错误
MySQL Error 2027: Requested session assumes MySQL X Protocol but ‘192.168.3.2:3306’ seems to speak the classic MySQL protocol (Unexpected response received from server, msg-id:10)
这个是因为上面连接的时候X协议的端口没有指定正确,可以使用mysql -u root -p -e “select @@mysqlx_port”查看X协议端口,然后连接的时候指定正确的端口就可以成功登录了
安装mysql router(三台主机必须全部安装)
1 | tar -xvf mysql-router-8.0.30-linux-glibc2.12-x86_64.tar.xz |
在MySQL8用户中配置环境变量
1 | su - mysql8 |
通过MySQLShell搭建MGR,下面步骤每个节点都执行
1 | #192.168.3.2 root@348aeb8077a8 master |
创建集群实例(在master执行即可)
1 | #默认为单主模式,第一个加入为写节点 |
这里由于3个节点的UUID相同导致,添加集群节点的没有添加进去
Cluster.addInstance: Cannot add an instance with the same server UUID (1d6dd7c2-5ff7-11f0-bb22-0242c0a80302) of an active member of the cluster ‘348aeb8077a8:3306’. Please change the UUID of the instance to add, all members must have a unique server UUID. (RuntimeError)
更新uuid后,master节点执行了克隆恢复,但是发现一直处于* Waiting for server restart… 状态,直至超时,去slave查看error.log发现发生了crash,导致启动失败
最后重新配置了一次,在添加节点恢复的时候选择了增量恢复后,成功添加
#添加slave1
#添加slave2
配置MySQLRouter路由
1 | #创建路由文件 |
测试配置
连接测试
1 | mysql -u mingliang -p -P6446 |
数据同步测试
1 | create database demo1; |
故障测试
主备切换
1 | cluster.setPrimaryInstance('192.168.3.2:3306') |
关闭集群
1 | #先关闭2个从节点,然后在关闭主节点 |
重启集群
1 | #先启动2个从节点,然后再启动主节点 |



































