通过MySQL8.4 MGR主从高可用集群搭建(基于wlnmp源)文章已经可以配置成功MGR集群了,但是如果后续想继续添加节点该如何操作,本文通过实际配置演示来教大家,在已存在的MGR集群上新增新的节点。
系统版本与配置情况与原来保持一致,新节点IP地址为10.10.10.8。
1、配置主机名
在新节点上修改主机名
|
1 |
hostnamectl set-hostname db04 |
2、配置hosts
在新节点及原有MGR集群同步修改hosts,确保四台机器的hosts都一致
|
1 2 3 4 |
10.10.10.5 db01 10.10.10.6 db02 10.10.10.7 db03 10.10.10.8 db04 |
3、添加wlnmp源
在新节点上添加wlnmp源
|
1 |
curl -fsSL "https://sh.wlnmp.com/wlnmp.sh" | bash |
4、安装MySQL8.4
在新节点上安装MySQL8.4
|
1 |
dnf install wmysql84 -y |
5、生成my.cnf配置文件
访问MySQL my.cnf配置文件生成器(https://dbcnf.wlnmp.com/),选择MySQL8.4版本生成新节点的配置文件。
注1:如果你是通过wlnmp安装的MySQL,这里仅需要填写CPU、内存以及开启主从,填写相关IP地址即可,其他参数可结合实际情况自行调整。
注2:确保新节点的组复制group_replication_group_name标识ID与原来MGR集群中的保持一致。
注3:确保组复制通信的本地监听地址为本机,所有MySQL的group_replication_local_address参数值为本机地址。
注4:server_id不能相同,我这里主节点db01是101,从节点db02是102,从节点db03是103,新节点的db04是104。
下面是生成后的my.cnf文件(https://dbcnf.wlnmp.com/随时更新,可能会出现一些参数与当前的参数不一致情况)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# #author:whsir(https://www.whsir.com/,QQ群630368975,公众号:吴昊博客) #免责声明:MySQL配置生成器所生成的my.cnf配置文件仅供参考。用户需结合自身的实际情况进行调整和优化。本工具及其作者不对因使用该配置文件而引起的任何问题、损失或损害承担任何责任。使用者需自行承担使用该配置文件的风险,并在必要时寻求专业意见。 #my.cnf for MySQL 8.4 # [client] port = 3306 socket = /tmp/mysql.sock [mysqld] user = mysql port = 3306 socket = /tmp/mysql.sock pid_file = /data/mysql/mysql.pid basedir = /usr/local/mysql/ datadir = /data/mysql/ default_time_zone = +08:00 character_set_server = UTF8MB4 log_timestamps = system skip_name_resolve = OFF mysqlx_port = 33060 mysqlx = OFF # =================== 慢日志配置开始 =================== # 慢日志是否开启,ON=开启,OFF=关闭。 slow_query_log = OFF # 慢查询时间(秒)。 long_query_time = 3 # 慢日志文件路径。 slow_query_log_file = /data/mysql/mysql_slow_query.log # 从库慢日志是否开启(主库无需理会),ON=开启,OFF=关闭。 log_slow_replica_statements = OFF # 记录(ALTER TABLE、ANALYZE TABLE等)到慢查询日志中,ON=开启,OFF=关闭。 log_slow_admin_statements = OFF # 记录所有未带索引的查询到慢日志中,ON=开启,OFF=关闭。 log_queries_not_using_indexes = OFF # 限制所有未带索引的查询记录频率(每分钟条数)。 log_throttle_queries_not_using_indexes = 0 # 超过多少行的查询才会被记录到慢日志中。 min_examined_row_limit = 0 # =================== 慢日志配置结束 =================== log_slow_extra = OFF log_error_verbosity = 1 log_error_suppression_list = "" lock_wait_timeout = 3600 # MySQL错误日志文件路径 log_error = /data/mysql/error.log skip-external-locking max_allowed_packet = 16M table_open_cache = 1024 table_definition_cache = 1024 sort_buffer_size = 4M join_buffer_size = 4M net_buffer_length = 8K read_buffer_size = 1M read_rnd_buffer_size = 512K thread_cache_size = 200 bulk_insert_buffer_size = 8M tmp_table_size = 32M performance_schema_max_table_instances = 500 thread_stack = 512K interactive_timeout = 28800 wait_timeout = 28800 max_heap_table_size = 32M lower_case_table_names = 0 explicit_defaults_for_timestamp = true #skip-networking #bind-address = 127.0.0.1 max_connections = 500 max_connect_errors = 10000 open_files_limit = 65535 sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' # binlog log_bin = mysql-bin binlog_format = ROW server_id = 104 binlog_checksum = CRC32 binlog_expire_logs_seconds = 86400 max_binlog_cache_size = 128M max_binlog_size = 1G binlog_cache_size = 2M gtid_mode = ON # GTID一致性是否启用(ON=强制一致性,WARN=仅警告,OFF=不检查) enforce_gtid_consistency = ON # 启用后从库会将复制事件写入自身二进制日志。 log_replica_updates = ON # 应尽可能的不要使用mysql_native_password,未来在MySQL9.0版本中将被彻底删除。 mysql_native_password = ON # ==================== MGR配置开始 ===================== # 开启MGR时,必须使用InnoDB引擎,关闭其它存储引擎 disabled_storage_engines = "MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY" # 组复制集群的唯一标识(必须全局唯一,可使用uuidgen命令或MySQL的select uuid();生成) # 警告:同一集群的所有节点必须使用相同的group_name! group_replication_group_name = 83d4df8d-c92f-4b1a-b3b0-2afcc8f2890f # 插件加载 # MySQL从8.0.17版本引入克隆插件 plugin-load-add = mysql_clone.so # MySQL从5.7.17版本引入组复制插件 plugin-load-add = group_replication.so # 运行模式 # ON=单主模式(推荐),OFF=多主模式 group_replication_single_primary_mode = ON # 是否随MySQL服务启动自动开启MGR(建议OFF,避免启动顺序问题导致脑裂) group_replication_start_on_boot = OFF # 节点通信配置 # 组复制成员间通信的本地监听地址(格式:host:port) group_replication_local_address = 10.10.10.8:33061 # 组复制成员间通信的地址列表(格式:host1:port1,host2:port2,host3:port3...) group_replication_group_seeds = db01:33061,db02:33061,db03:33061,db04:33061 # 组复制集群的IP地址白名单(支持CIDR格式,如:192.168.1.0/24,10.0.0.1) group_replication_ip_allowlist = 10.10.10.5,10.10.10.6,10.10.10.7,10.10.10.8 # 组复制严格一致性检查开关,OFF=禁用,不检查 group_replication_enforce_update_everywhere_checks = OFF # 组复制引导开关,仅首次启动时通过SET GLOBAL临时启用(SET GLOBAL group_replication_bootstrap_group=ON;),正常运行时必须设为OFF group_replication_bootstrap_group = OFF # ==================== MGR配置结束 ===================== # innodb transaction_isolation = REPEATABLE-READ default_storage_engine = InnoDB innodb_buffer_pool_instances = 4 innodb_file_per_table = 1 innodb_data_home_dir = /data/mysql/ innodb_data_file_path = ibdata1:64M:autoextend innodb_log_group_home_dir = /data/mysql/ innodb_buffer_pool_size = 5G innodb_redo_log_capacity = 256M innodb_log_buffer_size = 16M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50 innodb_read_io_threads = 2 innodb_write_io_threads = 2 innodb_purge_threads = 1 innodb_page_cleaners = 1 innodb_io_capacity = 4000 innodb_io_capacity_max = 8000 innodb_buffer_pool_load_at_startup = ON innodb_buffer_pool_dump_at_shutdown = ON innodb_flush_method = fsync innodb_print_all_deadlocks = OFF innodb_print_ddl_logs = OFF innodb_status_output_locks = OFF innodb_status_output = OFF innodb_max_undo_log_size = 1G innodb_undo_log_truncate = ON innodb_commit_concurrency = 0 [mysqldump] quick [mysql] prompt = "\u@\h \\R:\\m:\\s [\d]> " no_auto_rehash loose-skip-binary-as-hex [myisamchk] key_buffer_size = 128M myisam_sort_buffer_size = 128M read_buffer = 2M write_buffer = 2M |
6、启动MySQL
|
1 |
systemctl start mysql |
7、登录MySQL确保插件正常启用
mysql -uroot -p
Enter password:默认密码为空,直接回车进入
SHOW PLUGINS;
这里确保clone和group_replication插件处于ACTIVE,如未处于ACTIVE状态,参考上一篇MGR集群配置文章。
8、在原有MGR集群中动态更新地址
在原有MGR集群中,登录MySQL,分别执行以下命令
|
1 2 |
SET GLOBAL group_replication_group_seeds = "db01:33061,db02:33061,db03:33061,db04:33061"; SET GLOBAL group_replication_ip_allowlist = "10.10.10.5,10.10.10.6,10.10.10.7,10.10.10.8"; |
9、在原有MGR集群中修改my.cnf文件
在原有MGR集群中修改以下几处,其目的是把新节点地址加入进来,避免重启MySQL后找不到新的节点地址
|
1 2 |
group_replication_group_seeds = db01:33061,db02:33061,db03:33061,db04:33061 group_replication_ip_allowlist = 10.10.10.5,10.10.10.6,10.10.10.7,10.10.10.8 |
10、加入新节点使用mysql_native_password
在新节点上,登录MySQL执行以下操作
禁用二进制日志
|
1 |
mysql > SET SQL_LOG_BIN=0; |
创建MySQL用户、执行相关操作,启动组复制
|
1 2 3 4 5 6 |
mysql > CREATE USER 'rpl_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; mysql > GRANT REPLICATION SLAVE, GROUP_REPLICATION_ADMIN, CONNECTION_ADMIN,GROUP_REPLICATION_STREAM, BACKUP_ADMIN ON *.* TO 'rpl_user'@'%'; mysql > FLUSH PRIVILEGES; mysql > SET SQL_LOG_BIN=1; mysql > CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', SOURCE_PASSWORD='password' FOR CHANNEL 'group_replication_recovery'; mysql > START GROUP_REPLICATION; |
查看状态
|
1 |
mysql > SELECT CHANNEL_NAME,MEMBER_ID,MEMBER_HOST,MEMBER_PORT,MEMBER_STATE,MEMBER_ROLE,MEMBER_VERSION FROM performance_schema.replication_group_members; |
或
|
1 |
mysql > SELECT * FROM performance_schema.replication_group_members; |
或
|
1 |
mysql > select * from performance_schema.replication_group_members\G |
至此新节点加入完成,通过命令查询后可以看到内容如下

附:克隆插件操作
MySQL克隆插件的核心意义是提供快速、高效的数据库物理克隆能力,大幅简化数据复制、备份恢复和主从搭建流程。
配置克隆源
|
1 2 |
SET GLOBAL clone_valid_donor_list = '10.10.10.5:3306'; STOP GROUP_REPLICATION; |
执行克隆操作
|
1 |
CLONE INSTANCE FROM 'rpl_user'@'10.10.10.5':3306 IDENTIFIED BY 'password'; |
查看克隆进度
|
1 |
select stage, state, end_time from performance_schema.clone_progress; |
数据克隆完成后,接收方的MySQL服务器实例将自动重启,当看到以下内容时,表示克隆完成
|
1 2 3 4 5 6 7 8 9 10 11 |
+-----------+-----------+----------------------------+ | stage | state | end_time | +-----------+-----------+----------------------------+ | DROP DATA | Completed | 2025-11-09 05:59:15.293414 | | FILE COPY | Completed | 2025-11-09 05:59:16.043967 | | PAGE COPY | Completed | 2025-11-09 05:59:16.051651 | | REDO COPY | Completed | 2025-11-09 05:59:16.062062 | | FILE SYNC | Completed | 2025-11-09 05:59:16.096998 | | RESTART | Completed | 2025-11-09 05:59:19.548495 | | RECOVERY | Completed | 2025-11-09 05:59:20.671990 | +-----------+-----------+----------------------------+ |
|
1 |
START GROUP_REPLICATION; |
原文链接:MySQL8.4 MGR主从高可用集群加入新节点(基于wlnmp源),转载请注明来源!





