mysql组复制group replication

来源:这里教程网 时间:2026-03-01 15:37:24 作者:

本篇遗失 以下是多主模式的组复制搭建过程。需要至少三个节点。其中一个节点作为引导。先备份引导节点的数据到其他节点恢复,启动组复制后会自动读取备份后的binlog并apply。 三个节点都配置my.cnf。其中server-id和group_replication_local_address不同,其他一样。

[mysqld]
server-id = 100
character_set_server=utf8
max_allowed_packet = 16M
lower_case_table_names=1
basedir=/opt/mysql
datadir=/opt/mysql/data
user=mysql
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
innodb_flush_log_at_trx_commit = 1
innodb_buffer_pool_size = 2G
log-bin=mysql-bin
log_slave_updates=on
sync_binlog=1
transaction_isolation = READ-COMMITTED
binlog_format=row
binlog_checksum=NONE
gtid_mode=on
enforce_gtid_consistency=on
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64
slave_parallel_workers=4
slave_parallel_type=LOGICAL_CLOCK
slave_preserve_commit_order=1
loose-group_replication_group_name='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
loose-group_replication_ip_whitelist='192.168.252.0/24'
loose-group_replication_start_on_boot=off
loose-group_replication_bootstrap_group=off
loose-group_replication_local_address='192.168.252.11:33061'
loose-group_replication_group_seeds='192.168.252.11:33061,192.168.252.12:33061,192.168.252.13:33061'
loose-group_replication_single_primary_mode=false
loose-group_replication_enforce_update_everywhere_checks=true

在三个节点分别创建复制账号

set sql_log_bin=0;
grant replication slave on *.* to rpl_user@'%' identified by '1234@pass';
flush privileges;
set sql_log_bin=1;

所有节点安装组复制插件:

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

所有节点配置组复制认证信息:

change master to master_user='rpl_user',master_password='1234@pass' for channel 'group_replication_recovery';

在引导节点上启动组复制:

mysql> set global group_replication_bootstrap_group=on;
Query OK, 0 rows affected (0.00 sec)
mysql> start group_replication;
Query OK, 0 rows affected (2.19 sec)

查看状态:

select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 6b28ec0f-612d-11eb-b0bd-000c2919d4a1 | mysqla      |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+

MEMBER_STATE为ONLINE,就可以关闭初始化引导。

set global group_replication_bootstrap_group=off;

最后,其他节点也可以启动组复制:

start group_replication;

此时查看状态:

select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 5a982837-61fa-11eb-85f6-000c29bfac40 | mysqlc      |        3306 | ONLINE       |
| group_replication_applier | 5a9a7f4a-61fa-11eb-83c0-000c29b78cc3 | mysqlb      |        3306 | ONLINE       |
| group_replication_applier | 6b28ec0f-612d-11eb-b0bd-000c2919d4a1 | mysqla      |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
3 rows in set (0.00 sec)

如果MEMBER_STATE不是ONLINE,需检查错误日志查看原因。

相关推荐