组复制安装部署 | 全方位认识 MySQL 8( 六 )


当s2尝试加入组时,“分布式恢复”的机制能够确保s2能够利用s1中的来进行数据同步 。一旦分布式恢复过程执行完成,s2就可以在该组中转变为活跃成员,此时它会被标记为状态 。换句话说,在s2被标记为状态之后,要求它必须已经完全同步了s1中的数据,因为,该状态下,它会基于s1中的数据开始处理新的事务 。下面,我们验证一下s2是否已经完全同步了s1中的数据,如下:
# 查看测试数据是否存在mysql> SHOW DATABASES LIKE 'test';+-----------------+| Database (test) |+-----------------+| test |+-----------------+# 查看测试表中的数据是否存在mysql> SELECT * FROM test.t1;+----+------+| c1 | c2 |+----+------+| 1 | Luis |+----+------+# 查看s2中的binlog记录情况(组复制拓扑中所有的成员都要求记录远端事务的binlog,以便能够在任意组成员发生意外时,任意组成员都可以提供一致的数据访问以及将其他成员的数据同步到一致状态的能力)mysql> SHOW BINLOG EVENTS;+---------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |+---------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+| binlog.000001 | 4 | Format_desc | 2 | 123 | Server ver: 8.0.19-log, Binlog ver: 4 || binlog.000001 | 123 | Previous_gtids | 2 | 150 | || binlog.000001 | 150 | Gtid | 1 | 211 | SET @@SESSION.GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1' || binlog.000001 | 211 | Query | 1 | 270 | BEGIN || binlog.000001 | 270 | View_change | 1 | 369 | view_id=14724832985483517:1 || binlog.000001 | 369 | Query | 1 | 434 | COMMIT || binlog.000001 | 434 | Gtid | 1 | 495 | SET @@SESSION.GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:2' || binlog.000001 | 495 | Query | 1 | 585 | CREATE DATABASE test || binlog.000001 | 585 | Gtid | 1 | 646 | SET @@SESSION.GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:3' || binlog.000001 | 646 | Query | 1 | 770 | use `test`; CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL) || binlog.000001 | 770 | Gtid | 1 | 831 | SET @@SESSION.GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:4' || binlog.000001 | 831 | Query | 1 | 890 | BEGIN || binlog.000001 | 890 | Table_map | 1 | 933 | table_id: 108 (test.t1) || binlog.000001 | 933 | Write_rows | 1 | 975 | table_id: 108 flags: STMT_END_F || binlog.000001 | 975 | Xid | 1 | 1002 | COMMIT /* xid=30 */ || binlog.000001 | 1002 | Gtid | 1 | 1063 | SET @@SESSION.GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:5' || binlog.000001 | 1063 | Query | 1 | 1122 | BEGIN || binlog.000001 | 1122 | View_change | 1 | 1261 | view_id=14724832985483517:2 || binlog.000001 | 1261 | Query | 1 | 1326 | COMMIT |+---------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+
此时,已确认s2已经成功加入到组中,且可以对外提供只读访问了(为什么s2只能提供只读访问呢?因为我们在配置s1时并没有配置系统变量,而该变量默认值为ON,即,默认为单主模式,单主模式下,只有一个主要节点(只有一个可读写的成员,其他成员都为只读) 。2.1.6.2. 添加更多实例 向组中添加其他时,操作步骤与s2基本相同,只需要对一些需要针对不同自身修改的系统变量做调整即可,这里我们就简要列出操作步骤,如下: 1)创建配置文件(修改系统变量和为s3对应的值) 。
mysqld]## Disable other storage engines#disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"## Replication configuration parameters#server_id=3gtid_mode=ONenforce_gtid_consistency=ONbinlog_checksum=NONE## Group Replication configuration#group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"group_replication_start_on_boot=offgroup_replication_local_address= "s3:33061"group_replication_group_seeds= "s1:33061,s2:33061,s3:33061"group_replication_bootstrap_group= off