时隔三年,再次实践了一次MGR,点击查看详细文档。MySQL的MGR和Oracle的ADG各有自己独特的优势,相对来说,Oracle ADG更简单更省事,稳定。在一台虚拟机上就可以实验MySQL的两地三中心,但这对于实践Oracle两地三中心的高可用,真的是杯水车薪。
MySQL InnoDB Cluster是MySQL官方提供的一个完全高可用的数据库解决方案,提供故障转移、故障恢复、读写分离、负载均衡等功能,主要由三个模块构成:
MySQL Server (版本 >= 5.7.17):支持Group Replication 功能的,简称MGR。模块主要功能在于实现了组内通信,故障转移(Failover,即当活动的服务或应用意外终止时,快速启用冗余或备用的服务器、系统、硬件或者网络接替它们工作)、故障恢复(Failback,即将系统,组件,服务恢复到故障之前的状态)
MySQL Shell:可编程的高级客户端,支持标准SQL语法、JavaScript语法、Python语法,以及API接口,可以更方便的管理和使用MySQL服务器。实现快速部署,主要提供了一套AdminAPI,可以自动化配置Group Replication。
MySQL Router:轻量级中间件,支持透明路由规则。内置读写分离,负载均衡,可自动根据MySQL InnoDB Cluster中的metadata自动调整。
MySQL Group Replication
MySQL Group Replication 功能是在2016年MySQL-5.7.17这个版本上引入的,是Innodb cluster的组成部分,MySQL Shell和MySQL Router是辅助工具,实质上还是MGR。MGR基于分布式paxos协议,实现组复制,保证数据一致性。内置故障检测和自动选主功能,它实现了MySQL各个结点间数据强一致性。但是在5.7.20版本之前,MySQL Group Replication还不完善,存在各种问题,所以搭建MySQL Group Replication集群建议采用5.7.20之后的版本,最好采用8.0版本。本文档采用8.0.18来搭建MGR集群环境,且采用MGR的单主模式。