MySQL 8.0 克隆(clone)插件快速添加组复制MGR节点

MySQL 8.0 clone插件提供从一个实例克隆数据的功能,克隆功能提供了更有效的方式来快速创建MySQL实例,搭建主从复制和组复制。本文介绍使用 MySQL 8.0 clone 插件快速添加组复制(MGR)节点的方法。

1、环境:

已有MGR集群,多主模式:
  • 192.168.56.101
  • 192.168.56.102
  • 192.168.56.103

通过clone插件新加节点: 192.168.56.104

2、配置新节点my.cnf

完整路径 /home/mysql/etc/my.cnf_8.0.19,除了以下三个参数不一样外,其他与已有MGR节点的配置文件保持一致。
  • server_id
  • loose-group_replication_local_address
  • report_host
[mysqld]
port=3306
basedir=/usr/local/mysql8
datadir=/mysql/data8/
socket=/mysql/data8/mysql.sock
pid_file=/mysql/data8/mysql.pid

log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
binlog_checksum=NONE
master_info_repository=TABLE
relay_log_info_repository=TABLE

gtid_mode=ON
enforce_gtid_consistency=ON

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=OFF
loose-group_replication_local_address="192.168.56.104:33061"
loose-group_replication_group_seeds="192.168.56.101:33061,192.168.56.102:33061,192.168.56.103:33061"
loose-group_replication_bootstrap_group=OFF

server_id=4
report_host=192.168.56.104
report_port=3306

3、初始化数据库

初始化新加入节点的MySQL数据库。
useradd mysql
mkdir -p /mysql/data8
sudo chown -R mysql:mysql /mysql/data8
sudo chown -R mysql.mysql /home/mysql/etc/

/usr/local/mysql8/bin/mysqld --defaults-file=/home/mysql/etc/my.cnf_8.0.19 --initialize-insecure


4、启动数据库,安装clone插件和组复制插件

在新加入的节点上执行:
# 启动MySQL
/usr/local/mysql8/bin/mysqld_safe  --defaults-file=/home/mysql/etc/my.cnf_8.0.19 &

# 登录MySQL
/usr/local/mysql8/bin/mysql -S /mysql/data8/mysql.sock

# 安装MGR插件
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';

# 安装clone插件
mysql> INSTALL PLUGIN clone SONAME 'mysql_clone.so';

5、已有MGR集群添加clone账号,并授权

由于已有MGR集群是多主模式,在任一节点上执行都可以,我们选择在192.168.56.101节点上执行:
# 在MGR节点上创建clone账号,并授权
mysql> create user 'clone_user'@'%' identified by '123456';
mysql> grant BACKUP_ADMIN on *.* to 'clone_user'@'%';
mysql> grant CLONE_ADMIN on *.* to 'clone_user'@'%';

6、执行克隆任务

在新加节点192.168.56.104上执行:
# 设置克隆源,将clone_valid_donor_list设置为MGR节点
mysql> SET GLOBAL clone_valid_donor_list = '192.168.56.101:3306';

# 开始克隆
mysql> CLONE INSTANCE FROM 'clone_user'@'192.168.56.101':3306 IDENTIFIED BY '123456';

克隆完成后,新加入的节点会自动重启。

7、添加新节点到白名单中

添加新节点ip到白名单,要在所有节点上执行。
# 在所有MGR节点和新节点上执行添加白名单
mysql> set global  group_replication_ip_whitelist='192.168.56.104/24';

如果不添加白名单,下一步启动组复制会报错,如下:
2020-02-22T14:41:29.597726+08:00 0 [Warning] [MY-011735]  [Repl] Plugin group_replication reported: '[GCS]  Connection attempt from IP address ::ffff:192.168.56.104 refused. Address is not in  the IP whitelist.'

8、启动组复制,加入MGR集群

在新加入的节点上执行启动组复制:

# 由于已有MGR集群是多主模式,需要先设置成多主模式
mysql> set global group_replication_single_primary_mode=OFF;
mysql> set global group_replication_enforce_update_everywhere_checks=ON;

# 加入组复制
mysql> START GROUP_REPLICATION;

# 查看组复制成员及状态
mysql> SELECT  MEMBER_HOST,MEMBER_PORT,MEMBER_STATE,MEMBER_ROLE,MEMBER_VERSION FROM performance_schema.replication_group_members;
+----------------+-------------+--------------+-------------+----------------+
| MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE |  MEMBER_ROLE | MEMBER_VERSION |
+----------------+-------------+--------------+-------------+----------------+
| 192.168.56.101 |        3306 | ONLINE       | PRIMARY     |  8.0.19         |
| 192.168.56.102 |        3306 | ONLINE       | PRIMARY     |  8.0.19         |
| 192.168.56.103 |        3306 | ONLINE       | PRIMARY     |  8.0.19         |
| 192.168.56.104 |        3306 | ONLINE       | PRIMARY     |  8.0.19         |
+----------------+-------------+--------------+-------------+----------------+


文章评论

0条评论