前言
写本篇文章的主要是希望给想用MGR的朋友提供一个参数配置参考,本次内容整理参考了3306π社区广州站《MGR Best Practice》万里DB CTO娄帅分享和一些个人的理解认识。
MySQL InnoDB Cluster架构
上图引用于官方手册。该架构中包含:MySQL Shell、MySQL router、MySQL Servers。
- MySQL Shell:用于搭建和管理MGR集群的一个客户端工具集。该工具基本是整合了原来官方的mysql utilis工具集。
- MySQL router:属于一个TCP模型的Proxy主要用于流量中转及基于端口号的读写分离。
- MySQL Servers:该部分即为MySQL Group Replication即MGR,这个MGR属于Single primary模式。
MGR配置
目前对于使用MGR还是优先建议使用Single Primary结合mysql router使用。MGR本身的是使用InnoDB,所以对于性能方面优化更多还是要关注InnoDB优化,从另一方面讲MGR也是基于GTID复制的另一种实现,另外使用上也有一些限制,我们可以也可以通过明确相应的约束来避免不支持的功能。
1. 功能需求配置
以下参数是MGR集群限制的必备参数:
default_storage_engine=InnoDB
默认引擎使用InnoDB
server-id
如果没使用mysqlsh搭建MGR,server_id是auto_increment_offset起始值,所以默认推荐使用1-9的数字,如果使用mysqlsh搭建,该值可以随意处理。
binlog_format=row
使用row格式的binlog,这个基本是新功能的标配
gtid_mode=on
启用GTID
enforce_gtid_consistency=on
配合启用GTID使用
sql_r