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
kubectl exec -it mysql-4 -n ns-mysql-test -- /bin/bash
- 数据库初始化。
1
mysqld --defaults-file=/etc/my.cnf --initialize
- 启动数据库。
1
mysqld --defaults-file=/etc/my.cnf &
- 连接数据库。
1
mysql -uroot -p -S /data/mysql/run/mysql.sock
- 修改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参数
- 成员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
- 修改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。
- 在新增节点执行以下命令,创建复制账号。
第一个命令表示当前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;
- 在新增节点执行以下命令,设置认证信息。
1
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';
- 在新增节点执行以下命令,确认是否安装group_replication插件。
1
show plugins
- 重启MySQL。
1
shutdown;
重启MySQL后会使mysql-4的Pod退出并自动部署新的Pod,需要重新登录该Pod的MySQL。
- 启动group复制。
1
START GROUP_REPLICATION;
- 确认成员状态。
1
SELECT * FROM performance_schema.replication_group_members;
确认节点加入成功并且状态为ONLINE时,可对比新增节点和主库的数据。
父主题: MySQL MGR维护