转帖请注明出处于alexclouds.net 谢谢。
先说一下MMM,这个东西网上叫做Multi-Master Replication Manager for MySQL,这是MYSQL之外的第三方开发的玩意儿。其实这个东西开发有年头了,只是有些根本原因,后来基出现了其他研究的分支。
MMM (Multi-Master Replication Manager for MySQL) is a set of flexible scripts to perform monitoring/failover and management of MySQL master-master replication configurations (with only one node writable at any time).
The toolset also has the ability to read balance standard master/slave configurations with any number of slaves, so you can use it to move virtual IP addresses around a group of servers depending on whether they are behind in replication.
为什么要使用多MASTER结构的MM复制呢,主要是对网站的数据库应用访问量大才用得上,并发10K访问量,需要数据库查询的动态网页。ETC。。。
其中MMM的作者写的非常好笑“We all know, even if you run your site with no downtime for months, 1 minute can make your bosses forget about that and ask you THE question: "What has happened?". If you would say: "There was no problem, I just took down the site to upgrade MySQL", you won't be the employee of the month.”
我翻译的蹩脚,勉强看看:如果你几个月都没有让系统发生停机事件,一分钟的停机也会让老板紧张的来问你:发生了什么?如果你回答:没问题,我只是把网站暂时关闭一分钟以升级MYSQL,那么下个月你就不会继续干下去了。。。
有一下的部署方式,主要应对于访问量的多寡:
一、两个MYSQL节点,MASTER-MASTER的部署方式
这个部署中,需要5个IP,分别是:每个节点一个IP,2个reader IPs (read-only) 和 1 writer IP (updates),后三个IP在节点间变化,依靠于节点的状态和可用性。 如果其中一个节点失效,那么读写的角色都会转移到剩下的工作节点上。
二、两个MYSQL MASTER节点,一个或者多个SLAVE节点。
不论如何,你安装这些都需要一个mmm的Monitor host,这一点变不了。
这就变成了一个单点问题。对于mmm,生产环境中老外用的很多,国内貌似用的并不多,究其原因,可能大家认为mmm 管理端需要单独运行一台服务器上,要是想实现高可用,就得对mmm管理端做HA,这样增加了硬件开支。但是也并非要担心这个原因,因为很多办法可以解决这个问题:
其实对于虚拟机部署方式,一个mmm的Monitor host的HA并不是什么难事,原因在于配置好了后,其实mmm的Monitor host的配置几乎不需要做什么变动,因此镜像备份此HOST也是相当容易的。不把mmm的Monitor host部署于物理机,而是将其部署于虚拟机上能够较好的解决这个问题。
MYSQL AA复制
再来说MYQL的AA复制,这是MYSQL自带的功能,需要用到MYSQL的相关组件。在这里好心提醒一下大家,但凡是看到网上有很多文章里直接写建立用于复制的用户之类的,其实前面的铺垫被省去了。如果使用YUM的自动安装方式,你是绝对启动不了AA复制功能的,因为这里面要用到LOG-BIN功能,需要源码编译。所以源代码编译安装mysql 一定是源代码。。。
下一篇再把详细步骤写一下,其实详细步骤网上太多了。。。