1.MGR特点
MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供,实现了分布式下数据的最终一致性,总结MGR特点如下:
高一致性:基于分布式paxos协议实现组复制,保证数据一致性;
高容错性:自动检测机制,只要不是大多数节点都宕机就可以继续工作,内置防脑裂保护机制;
高扩展性:节点的增加与移除会自动更新组成员信息,新节点加入后,自动从其他节点同步增量数据,直到与其他节点数据一致;
高灵活性:提供单主模式和多主模式,单主模式在主库宕机后能够自动选主,所有写入都在主节点进行,多主模式支持多节点写入。
2.组复制故障检测
故障检测是提供关于哪些 server 可能已死的信息(猜测)的分布式服务。某个 server 无响应时触发猜测,组中其余成员进行协调决定以排除给定成员。如果某个 server 与组的其余成员隔离,则它会怀疑所有其他 server 都失败了。由于无法与组达成协议(因为它无法确保仲裁成员数),其怀疑不会产生后果。当服务器以此方式与组隔离时,它无法执行任何本地事务。在线 server 列表通常称为视图,新成员server的加入离开,无论是自愿还是被迫的离开,该组都会动态地重新规划其配置,并触发视图更新。
3.组复制的限制
存储引擎必须为Innodb,即仅支持InnoDB表,并且每张表一定要有一个主键,用于做write set的冲突检测;
每个表必须提供主键;
只支持ipv4,网络需求较高;
必须打开GTID特性,二进制日志格式必须设置为ROW,用于选主与write set;
COMMIT可能会导致失败,类似于快照事务隔离级别的失败场景;
目前一个MGR集群组最多支持9个节点;
不支持外键于save point特性,无法做全局间的约束检测与部分部分回滚;
二进制日志binlog不支持Replication event checksums;
多主模式(也就是多写模式) 不支持SERIALIZABLE事务隔离级别;
多主模式不能完全支持级联外键约束;
多主模式不支持在不同节点上对同一个数据库对象并发执行DDL(在不同节点上对同一行并发进行RW事务,后发起的事务会失败);
linux版本:CentOS Linux release 7.8.2003 (Core)
mysql版本:Ver 8.0.18 for el7 on x86_64 (MySQL Community Server - GPL)
前提:
1、服务器规划,都关闭防火墙,中控机能ssh到各个安装节点
192.168.17.170 linuxsinglemysql 中控机
192.168.17.132 mgr01 mysql主节点
192.168.17.133 mgr02 mysql从节点1
192.168.17.135 mgr03 mysql从节点1
2、中控机 /shell/installmgr下文件
hostnameimport.txt
hostnameip.txt
installmgr.sh
mgrmastercreate.sh
mgrslavecreate.sh
my.cnf
mysqld
mysqlinstall.sh
mysql.local
/soft下如下文件 mysql-8.0.18-el7-x86_64.tar.gz
脚本执行:
中控机/shell/installmgr执行 sh installmgr.sh
等待3-5分钟,搭建完毕!
脚本如下
1、vim installmgr.sh
2、vim mysqlinstall.sh
3、vim mgrmastercreate.sh
4、vim mgrslavecreate.sh
5、vim hostnameimport.txt
192.168.17.132 mgr01
192.168.17.133 mgr02
192.168.17.135 mgr03
192.168.17.170 linuxsinglemysql
6、vim hostnameip.txt
192.168.17.132 mgr01 1
192.168.17.133 mgr02 0
192.168.17.135 mgr03 0