1、背景
MGR(MySQL Group Replication)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供,实现了分布式下数据的最终已执行,总结MGR的特点如下:
高一致性:基于分布式paxos协议实现组复制,保证数据一致性
高容错性:自动检测机制,只要不是大多数节点都宕机就可以继续工作,内置防脑裂保护机制;
高扩展性:节点的添加与移除会自动更新组成员信息,新节点加入后,自动从其他节点同步增量数据,知道与其他节点数据一致;
高灵活性:提供单住和多主模式,单主模式在主库宕机后能够自动选主,所有写入都在主节点进行,多主模式支持多节点写入。
2、环境
操作系统:CentOS 7
数据库版本:5.7.22
主机1:192.168.106.203
主机2:192.168.106.204
主机3:192.168.106.205
3、搭建步骤
3.1 数据库安装部署步骤,略
3.2 分别将主机的ip做映射
由于在集群中的merber_host中的值不能相同,所以需要做映射,当然不做也可以,后面提到如何设置
3.3 开始搭建集群节点一(主机1)
3.3.1 修改第一个节点的配置文件,内容添加如下:
# replication param
# server-id,组内唯一ID,不可重复,一般配置为IP的后几位
server_id = 203
# 开启二进制日志
log_bin = mysql-bin
# 开启gtid模式
gtid_mode = on
enforce_gtid_consistency = 1
# 开启存储从主库接收来的二进制日志
log_slave_updates = 1
# 设置二进制日志格式为row
binlog_format = row
# group replication param
#复制元数据存入系统表
master_info_repository = table
#复制元数据存入系统表
relay_log_info_repository = table
#禁用二进制日志时间校验和
binlog_checksum = none
#server必须为每个事物
transaction_write_set_extraction=XXHASH64
# 复制组的名字,可以随意起,但一定要遵循gtid的格式
loose-group_replication_group_name='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
#插件在server启动时是否自动启动组复制,如果不在配置文件中配置可在后面动态配置
loose-group_replication_start_on_boot = off
#使用这个地址接收来自组中其他成员的传入连接,一般为本机地址
loose-group_replication_local_address = '192.168.106.203:33061'
#组成员
loose-group_replication_gr