数据库组复制的原理:
组复制是一种可用于实现容错系统的技术。复制组是一个通过消息传递相互交互的服务器组。通信层提供了很多保证,例如原子消息和总消息序号的传递。通过这些强大的特性,我们可以构建更高级的数据库复制解决方案。
[1]. 配置
server1、server2、server3停掉之前的服务,清空数据库目录中的记录(/var/lib/mysqld)
[2]. 配置三个节点的配置文件/etc/my.cnf
server_id=1 ##三个节点各不相同
gtid_mode=ON ##打开gtid
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="b8b8d7dd-9312-4539-971c-b013f49d6e51" ##server的uuid
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "172.25.254.1:24901"
loose-group_replication_group_seeds= "172.25.254.1:24901,172.25.254.2:24901,172.25.254.3:24901"
loose-group_replication_bootstrap_group=off
loose-group_replication_ip_whitelist="172.25.254.0/24"
loose-group_replication_enforce_update_everywhere_checks=on
loose-group_replication_single_primary_mode=off
[3].在server1中设定数据库的初始密码配置组复制:
(1)不开启日志同步
SET SQL_LOG_BIN=0; #
(2)向rpl_user用户授予所有权限,所有用户均可利用rpl_user用户同步
GRANT REPLICATION SLAVE ON . TO rpl_user@’%’ IDENTIFIED BY ‘Hellojay123+’;
(3)刷新授权表
FLUSH PRIVILEGES;
(4)reset master;
(5)开启日志记录
SET SQL_LOG_BIN=1;
(6)CHANGE MASTER TO MASTER_USER=’rpl_user’,MASTER_PASSWORD=’Hellojay123+’ FOR CHANNEL ‘group_replication_recovery’;
(7)INSTALL PLUGIN group_replication SONAME ‘group_replication.so’;
(8)SHOW PLUGINS;
(9)SET GLOBAL group_replication_bootstrap_group=ON;
(10)START GROUP_REPLICATION;
(11)SET GLOBAL group_replication_bootstrap_group=OFF;
(12)SELECT * FROM performance_schema.replication_group_members;
server1配置完成后处于online状态: