MySQL 5.7 的多主高可用架构里,MMM算是个比较经典的方案了,多老司机都用过。它能让多个主节点一起读写,断一台机器也不耽误服务运行,容错性挺高。用起来虽然配置稍微复杂点,但一旦跑起来,监控、切换都能自动搞定,省心不少。
MMM的核心就仨东西:mmm_agent
、mmm_controller
、mmm_monitor
。agent 跑在每台 MySQL 上,controller 是整个集群的大脑,monitor 负责定期探测健康状况,三者配合还挺顺畅。
配置 MMM 时,先把MySQL 5.7装好、主主复制建好,再装mmm_agent
、mmm_controller
和mmm_monitor
。复制一般用CHANGE MASTER
命令就能搞定,注意下 server-id 别冲突。
故障切换是 MMM 最值钱的地方。一台主挂了,controller 自动把虚拟 IP 切到另一台主机上,业务继续跑,基本无感知。只要你策略写得稳,出问题也不会太慌。
不过也别全靠它,数据一致性自己也得盯着。多主写入容易打架,比如两个节点同时改一条数据,谁的生效?嗯,这就得靠业务侧来兜住,逻辑要写得严谨点。
还有一点,网络延迟千万别忽视。复制一旦延时,数据就容易错乱。最好所有节点网络环境都差不多,放一个局域网里是最保险的。
想进一步了解可以看看这几篇文章:MySQL 高可用架构简介及 MMM 技术应用 和 mysql-mmm 组件参数简述。还有安装、同步啥的也有指南,链接我都整理好了。
,如果你在搞 MySQL 5.7 的集群,想多主写入、自动切换,那 MMM 还是挺值得一试的。就是部署时细节多点,多踩踩坑更稳当。