Node

Host

IP

OS

Node1DB1192.168.56.104Centos 8
Node2DB2192.168.56.105Centos 8
Node3DB3192.168.56.106Centos 8


1、分别安装部署组内MySQL实例

组复制是MySQL内置的插件,安装完MySQL实例后即可进行MGR配置,无需安装其他组件。

2、配置第一个实例

2.1、存储引擎

disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"

2.2、复制框架

server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON

如果数据库版本 ≥ 8.0.20,还需要加上如下配置
binlog_checksum=NONE

如果数据库版本早于8.0.3,还需要加上如下配置
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64

2.3、组复制设置

plugin_load_add='group_replication.so'
group_replication_group_name="2e8c9b2e-92f0-11ec-b909-0242ac120002"  #必须是有效的UUID,用于设置binlog中组复制事件的GTIDs。
group_replication_start_on_boot=off
group_replication_local_address= "mgr_0001:33061"
group_replication_group_seeds= "mgr_0001:33061,mgr_0002:33061,mgr_0003:33061"
group_replication_bootstrap_group=off #在任何时候,组中最多只能有一个成员能把该参数配置为on

3、分布式恢复用户认证

当有新成员加入到组复制时,组复制使用分布式恢复进程与新加入的成员进行同步。

SET SQL_LOG_BIN=0;
CREATE
USER rpl_user@'%' IDENTIFIED BY 'Chaofeng52_5';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Chaofeng52_5' FOR CHANNEL 'group_replication_recovery';

4、启动组复制

调整SeLinux设置
setsebool -P mysql_connect_any 1

否则会报错:[GCS] Error connecting to the local group communication engine instance.

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

执行成功后查看组信息:


5、添加实例到复制组

根据具体情况修改配置文件

创建分布式恢复用户
SET SQL_LOG_BIN=0;
CREATE
USER rpl_user@'%' IDENTIFIED BY 'Chaofeng52_5';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Chaofeng52_5' FOR CHANNEL 'group_replication_recovery';

然后启动组复制
START GROUP_REPLICATION;

执行成功后查看组信息:

继续添加第三个实例
执行成功后查看组信息:



https://dev.mysql.com/doc/refman/8.0/en/

  • No labels