Mysql 8 MGR集群单主配置图解
声明与简介
本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。本文主要介绍mysql的MGR集群的配置。
MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供,实现了分布式下数据的最终一致性。其特点如下:
- 高一致性:基于分布式paxos协议实现组复制,保证数据一致性;
- 高容错性:自动检测机制,只要不是大多数节点都宕机就可以继续工作,内置防脑裂保护机制;
- 高扩展性:节点的增加与移除会自动更新组成员信息,新节点加入后,自动从其他节点同步增量数据,直到与其他节点数据一致;
- 高灵活性:提供单主模式和多主模式,单主模式在主库宕机后能够自动选主,所有写入都在主节点进行,多主模式支持多节点写入
注:1 当前MGR集群验证环节在VVMware虚拟机内,真实环境可略过虚拟机复制环节。
2 当前虚拟机内mysql库运行在Centos 8内,版本号是 8.0.23、端口号3306。
3 MGR集群当前验证环境192.168.111.128(host_128)是单主节点,host_129、host_130是从节点。
虚拟机复制
Step 1:先选择一台虚拟机(鼠标点中),然后找到克隆按钮。
Step 2:克隆虚拟机当前状态
Step 3:选择创建完整克隆
Step4:配置虚拟机名字和存储位置
Step 5:耐心等待克隆完毕
Step 6:修改新克隆的虚拟机,修改IP
Step 7:修改主机名,配置IP与主机名映射。
Step 8:重启服务器
Step 9:同样的方式操作另外一台虚拟机。
准备环境
- 准备3台版本一致(一样)的mysql数据库的主机,当前主服务数据库服务的操作系统都是linux。详见虚拟机复制环节。
- 192.168.111.128(host_128)是单主节点,192.168.111.129(host_129)、192.168.111.130(host_130)是从节点。
配置MGR集群
安装MGR插件
生成集群组名
配置单主节点MGR参数
Step 1: 修改mysql配置文件/etc/my.cnf,追加引用外部文件参数
!include /etc/my.cnf.d/ mgr_auth.cnf
Step 2: /etc/my.cnf.d目录内新建MGR配置文件mgr_auth.cnf
Step 3 mgr_auth.cnf文件内配置如下内容:
[mysqld]
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
server_id=1 #其它节点相应修改,不能重复
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64
plugin_load_add='group_replication.so'
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=off
group_replication_local_address= "host_128:33091" #修改成节点对应主机名
group_replication_group_seeds= "host_128:33091,host_129:33091,host_130:33091"
group_replication_bootstrap_group=off
注:1 这里的step 1外部引用MGR配置文件是为了mysql配置和MGR参数分离,如果不需要可以将MGR参数放置于mysql的配置文件内。
2 这里的group_replication_group_name来源于生成组名环节。
端口加入防火墙信任列表
重启单主mysql
创建同步用户
启动MGR集群主节点
配置其它从节点
启动MGR集群从节点
以上同样的操作应用于host130,最终集群的状态都在线且一个是Primary,另外两个是SECONDARY。至此MGR单主模式搭建完毕。
验证
从节点数据库修改
从库里插入数据时报错,符合单主模式的特点(即仅主节点可写,从节点不可写)。
ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement
延展阅读
查看插件系统路径
查看MGR插件位置
查看plugin命令帮助手册
重新初始化数据库
注:1 初始化数据库操作仅限于实验或者新环境。
2 初始化mysql时配置参数不能有错误。