如果mgr集群在运行了相当长时间后,其中的的某个节点,机器爆炸了,硬盘数据没了,或者需要新增节点时。直接在新的机器 start group_replication。或者是从节点退出集群(stop group_replication),隔了很长一段时间想要加进来。会发现加入不进去
查看mysql的日志, 会类似
1 | ….. but the master has purged binary logs containing GTIDs that the slave requires. (server_errno=1236) |
查看日志可知,是因为节点的binary log被删除掉,从节点无法加入。这个时候,只能从主节点全量备份,还原到新节点,然后再启动同步。
Mysql 8.0.1或者以上,可以正常备份1
2
3
4
5
6
7 mysqldump -p --single-transaction --all-databases --triggers \
--routines --events >dump.sql
如果是8.0.1以下,会提示 Couldn't execute 'SAVEPOINT sp',换成锁定表
mysqldump -p --lock-all-tables --all-databases --triggers \
--routines --events >dump.sql
在新的节点下,正常配置mgr的相关配置文件,以及通道,下面2个是必须的
1 | INSTALL PLUGIN group_replication SONAME 'group_replication.so'; |
如果是新增了节点,记得在原有的节点的my.cnf中
loose-group_replication_group_seeds 选项里,加入新节点的地址
将数据导入到新节点
1 | /opt/mysql-8.0.12-el7-x86_64/bin/mysql -h 127.0.0.1 <./dump.sql |
然后在运行
1 | start group_replication; |
最后检查一下
1 | SELECT * FROM performance_schema.replication_group_members; |