本篇遗失
以下是多主模式的组复制搭建过程。需要至少三个节点。其中一个节点作为引导。先备份引导节点的数据到其他节点恢复,启动组复制后会自动读取备份后的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,需检查错误日志查看原因。