## 1. MySQL参数设置 新的节点需要提前准备如下参数,可参考已有节点的设置 确保uuid和server id和其他节点不一致 **新节点** ``` # BINARY LOGGING # log-bin = /data/db5722/mysql-bin relay-log = /data/db5722/relay-bin expire-logs-days = 7 sync-binlog = 1 server-id = 13657 log_slave_updates = ON # GTID # gtid_mode = ON enforce_gtid_consistency = ON binlog_format = ROW binlog_checksum = NONE master_info_repository = TABLE relay_log_info_repository = TABLE slave_parallel_type = LOGICAL_CLOCK slave_parallel_workers = 4 slave_preserve_commit_order = ON disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY" ``` ## 2.新增节点配置用户 这里账号密码和集群保持一致 **新节点** ``` SET SQL_LOG_BIN=0; CREATE USER replicate@'%'; GRANT REPLICATION SLAVE ON *.* TO rpl@'%' IDENTIFIED BY 'rpl'; FLUSH PRIVILEGES; SET SQL_LOG_BIN=1; ``` ## 3. 安装MGR插件 **新节点** ``` 安装 mysql>INSTALL PLUGIN group_replication SONAME 'group_replication.so'; 确认 mysql> SHOW PLUGINS; | group_replication| ACTIVE| GROUP REPLICATION | group_replication.so | PROPRIETARY | ``` ## 4. 配置MGR参数 **新节点** 停止MYSQL服务后修改 记得添加到配置文件 group_replication_group_name 和其他节点一致 group_replication_start_on_boot暂时设置为OFF group_replication_local_addres填写本机的IP group_replication_group_seeds 填写所有节点的IP ``` # MGR #transaction_write_set_extraction = XXHASH64 group_replication_group_name = "69082df2-3dda-4703-8da1-7c8ecda9664f" group_replication_start_on_boot = off group_replication_local_address = "192.168.201.136:2101" group_replication_group_seeds = "192.168.201.135:2101,192.168.201.136:2101,192.168.201.137:2101" group_replication_bootstrap_group = OFF group_replication_single_primary_mode = TRUE group_replication_enforce_update_everywhere_checks = FALSE ``` 修改完成后重启服务。 其中group_replication_group_seeds 需要在所有节点增加新加入的节点的IP **其他节点** ``` set global group_replication_group_seeds="192.168.201.135:2101,192.168.201.136:2101,192.168.201.137:2101" ``` ## 4. 加入MGR集群 ### 4.1 导出数据 在数据最新的节点上执行mysqldump全量导出 **其中一个节点** ``` mysqldump -uroot -p123456 -q --single-transaction --master-data=2 -B DB_Name > /root/DB_Name.sql ``` ### 4.2 导入数据 **新节点** 之后在新增节点执行数据导入 ``` reset master; source DB_Name.sql ``` 如果使用xtrabackup备份的,需要 ``` reset master set @@GLOBAL.GTID_PURGED='e99ae99a-811d-11e9-9ca2-0050568cef02:1-59387' ``` ### 4.3 加入集群 之后加入MGR集群 **新节点** ``` mysql> CHANGE MASTER TO MASTER_USER='rpl',MASTER_PASSWORD='rpl' FOR CHANNEL 'group_replication_recovery'; mysql> START GROUP_REPLICATION; ``` 最后将新加入的节点MGR自启动配置为on,参数文件修改 ``` group_replication_start_on_boot=on ``` ## 5.检查节点 最后我们检查是否加入成功 **所有节点** 查询下列视图 ``` SELECT * FROM performance_schema.replication_group_members; ``` 查询是否为写入节点 ``` SELECT * FROM sys.gr_member_routing_candidate_status; ```