---
title: MGR添加新成员
description: "详细信息请参见新添加MySQL Pod（mysql-4 Pod）。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmgr_03_0042.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmgr_03_0042.html
indexId: 4571f727d8b235bf656476843f8bbd8592b41093bdf865f75aec9d55a8f6df4072
---
# MGR添加新成员

#### 添加新的MySQL Pod

详细信息请参见新添加MySQL Pod（mysql-4 Pod）。


#### 初始化新成员数据库

由于本文使用到的MySQL镜像会在启动时检查并自动初始化，可跳过本步骤。


使用其他非自动初始化的镜像时，可参考初始化操作如下：

假设K8s集群中已新添加了mysql-4 Pod，并已将其所在物理机上的“/data/mysql/mysql_4/mysql_arm.cnf”文件挂载为Pod中的“/etc/my.cnf”文件，在K8s master节点上执行如下初始化操作：

1. 登录数据库。
  1 kubectl exec -it mysql-4 -n ns-mysql-test -- /bin/bash

2. 数据库初始化。
  1 mysqld --defaults-file=/etc/my.cnf --initialize

3. 启动数据库。
  1 mysqld --defaults-file=/etc/my.cnf &

4. 连接数据库。
  1 mysql -uroot -p -S /data/mysql/run/mysql.sock

5. 修改root用户密码。
  1 2 3 4 alter user 'root'@'localhost' identified by "test123"; create user 'root'@'%' identified by 'test123'; grant all privileges on *.* to 'root'@'%'; flush privileges;


#### 配置MGR参数

1. 成员4（mysql-4）参数文件（mysql-4 Pod所在物理机上“/data/mysql/mysql_4/mysql_arm.cnf”文件）里增加如下参数设置。
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 skip_log_bin #log-bin=mysql-bin ssl=0 table_open_cache=30000 max_connect_errors=2000 innodb_adaptive_hash_index=0 disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY" server_id=4 ##组内每个成员有各自的server_id gtid_mode=ON enforce_gtid_consistency=ON binlog_checksum=NONE log_bin=binlog log_slave_updates=ON binlog_format=ROW master_info_repository=TABLE relay_log_info_repository=TABLE transaction_write_set_extraction=XXHASH64 plugin_load_add='group_replication.so' ##服务器启动时，加载该参数设置的引擎 group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" ##配置Group replication的组名 group_replication_start_on_boot=off ##MySQL服务起来以后，引擎不会自动起来。如果所有group成员配置完成，可以设置成on group_replication_local_address= "10.99.0.18:33061" ##本机地址和端口，此地址只是用来与group communication engine进行交互，不能等同于client端连接的地址和端口，8.0.14以后，可以使用IPV6 group_replication_group_seeds= "10.99.0.15:33061,10.99.0.16:33061,10.99.0.17:33061,10.99.0.18:33061" ##所有group成员的地址和端口 group_replication_bootstrap_group=off ##此参数不能在参数文件里设置成on

2. 修改group其他成员的group_replication_group_seeds参数。
  1 set global group_replication_group_seeds= "10.99.0.15:33061,10.99.0.16:33061,10.99.0.17:33061,10.99.0.18:33061";

  并在其他成员的mysql_arm.cnf文件中相应修改group_replication_group_seeds参数，添加新成员10.99.0.18:33061。

3. 在新增节点执行以下命令，创建复制账号。
  第一个命令表示当前session里的所有操作都不记录到bin_log里。

  1 2 3 4 5 6 SET SQL_LOG_BIN=0; CREATE USER rpl_user@'%' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%'; GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%'; FLUSH PRIVILEGES; SET SQL_LOG_BIN=1;

4. 在新增节点执行以下命令，设置认证信息。
  1 CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';

5. 在新增节点执行以下命令，确认是否安装group_replication插件。
  1 show plugins

6. 重启MySQL。
  1 shutdown;

  重启MySQL后会使mysql-4的Pod退出并自动部署新的Pod，需要重新登录该Pod的MySQL。

7. 启动group复制。
  1 START GROUP_REPLICATION;

8. 确认成员状态。
  1 SELECT * FROM performance_schema.replication_group_members;

  确认节点加入成功并且状态为ONLINE时，可对比新增节点和主库的数据。
