1.提前安装好3节点MGR
mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | a585b484-edb8-11ea-a88e-02000aba3c3f | node1 | 3306 | ONLINE | PRIMARY | 8.0.17 |
| group_replication_applier | e56e5f03-edb8-11ea-99ed-02000aba3c55 | node3 | 3306 | ONLINE | PRIMARY | 8.0.17 |
| group_replication_applier | fde219ba-edc3-11ea-a617-02000aba3c4c | node2 | 3306 | ONLINE | PRIMARY | 8.0.17 |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
3 rows in set (0.00 sec)
2.用sysbench准备一些数据
[root@node3 data]# sysbench oltp_write_only --table-size=200000 --tables=10 --threads=4 --db-driver=mysql --mysql-db=sbtest --mysql-host=10.186.60.63 --mysql-user=root --mysql-password=123456 --time=3600 --report-interval=3 prepare
3.模拟故障(在node2上删除sbtest)
stop group_replication;
set global read_only=0;
drop database sbtest;
这时node2节点上日志出现报错
node2被踢出集群
mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | a585b484-edb8-11ea-a88e-02000aba3c3f | node1 | 3306 | ONLINE | PRIMARY | 8.0.17 |
| group_replication_applier | e56e5f03-edb8-11ea-99ed-02000aba3c55 | node3 | 3306 | ONLINE | PRIMARY | 8.0.17 |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
4.处理:利用clone复制一份数据
修改node2配置文件(将MGR的配置注释掉,在MGR组复制拓扑中,执行克隆操作的节点不能是MGR组中的成员,否则报错)
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="641a9716-e2ba-4796-9e71-8bc927eb5b2b"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="10.186.60.76:33061"
loose-group_replication_group_seeds="10.186.60.63:33061,10.186.60.116:33061,10.186.60.117:33061"
loose-group_replication_bootstrap_group=off
loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE
增加用户添加clone插件(node1)
CREATE USER 'donor_clone_user'@'10.186.60.%' IDENTIFIED WITH 'mysql_native_password' BY '123456';
GRANT BACKUP_ADMIN on *.* to 'donor_clone_user'@'10.186.60.%';
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
增加用户添加clone插件(node2)
CREATE USER 'recipient_clone_user'@'10.186.60.%' IDENTIFIED WITH 'mysql_native_password' BY '123456';
GRANT CLONE_ADMIN on *.* to 'recipient_clone_user'@'10.186.60.%';
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
SET GLOBAL clone_valid_donor_list = '10.186.60.63:3306';
执行clone操作(node2)
mysql -urecipient_clone_user -p123456 -h 10.186.60.76 -P3306
mysql> CLONE INSTANCE FROM 'donor_clone_user'@'10.186.60.63':3306 IDENTIFIED BY '123456';
ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process). ###这个正常,重启一次
启动mgr复制(node2)
#先修改配置文件,将之前注释的mgr的配置打开
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="641a9716-e2ba-4796-9e71-8bc927eb5b2b"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="10.186.60.76:33061"
loose-group_replication_group_seeds="10.186.60.63:33061,10.186.60.116:33061,10.186.60.117:33061"
loose-group_replication_bootstrap_group=off
loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE
#重启
systemctl restart mysqld
mysql -uroot -p
start group_replication;
5.查看状态
mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | a585b484-edb8-11ea-a88e-02000aba3c3f | node1 | 3306 | ONLINE | PRIMARY | 8.0.17 |
| group_replication_applier | e56e5f03-edb8-11ea-99ed-02000aba3c55 | node3 | 3306 | ONLINE | PRIMARY | 8.0.17 |
| group_replication_applier | fde219ba-edc3-11ea-a617-02000aba3c4c | node2 | 3306 | ONLINE | PRIMARY | 8.0.17 |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
3 rows in set (0.00 sec)