【引用自攀岩生活的博客】MMM即Multi-MasterReplicationManagerforMySQL:mysql多主复制管理器,基于perl实现,关于mysqlmaster的监控-masterreplication配置,故障转移和管理一个可扩展的脚本套件(任何时候只能写入一个节点),MMM也可以从服务器读取负载平衡,所以它可以在一组服务器中用于复制启动虚拟ip,除此之外,它还有用于节点间数据备份和重新同步的脚本。优点:可用性高,扩展性好,故障自动切换,主从同步,同时只提供一次数据库写操作,保证数据一致性。当主服务器挂掉时,另一个主服务器立即接管,其他从服务器可以自动切换,无需人工干预。缺点:monitor节点是单点的,但是也可以结合keepalived或者haertbeat来实现高可用;至少三个节点,对主机数量有要求,需要实现读写分离,需要在前端写一个读写分离程序。在读写非常繁忙的业务系统下性能不是很稳定,可能会出现复制延迟、切换失败等问题。MMM方案不太适合数据安全要求高,读写繁忙的环境。二、部署与实施一、环境介绍OS:centos7.2(64位)数据库系统:mysql5.7.13关闭selinux主机IpHostnameServer--idMaster1192.168.119.129Master11Master2192.168.119.130Master22Slave192.168.119.131从机3Montior192.168.119.132Montior4使用yum安装相关依赖包安装perl相关库字有点小(cpan-iAlgorithm::DiffClass::SingletonDBIDBD::mysqlLog::DispatchLog::Log4perlMail::SendNet::pingProc::DaemonTime::HiResParams::ValidateNet::ARP)在/etc/hosts中添加地址和主机名,测试是否能ping通。master1中添加mysql/etc/my.cnfmaster配置参数文件master2中添加/etc/my.cnfmaster配置文件slave中添加/etc/my.cnfmaster配置文件修改后关闭防火墙,启动mysql服务剩下的两个master2和slave按照上图搭建主从复制环境,master1是master2和slave的master,master2是master1的master。在两个主服务器上创建授权连接用户。查看master1的状态。在master2上建立连接,实现主从复制。启动slave查看连接是否一定是yes。在slave上建立连接实现主从复制设置master2为master与上述步骤相同,只是更改ip地址即可。下图是在master1上执行的。上面的master-masterreplication和master-slavereplication已经ok了。设置mysql-mmm在master1上创建代理账号和监控账号,因为可以在master上创建主从副本,会同步查看两者上是否有监控和代理账号。www用户:mmm监控用于监控mysql服务器进程健康检查qqq用户:mmm代理用于更改只读模式、复制主服务器等,在montior主机上安装mysql-mmm安装监控程序.安装下载的包。在master1、master2、slave中安装agent配置mmm,要求必须是四台主机必须有相同的配置文件。安装后所有的配置文件都存放在/etc/mysql-mmm/下。管理和数据库服务器必须包含一个公共文件mmm_common.cof。配置文件如下:active_master_rolewriter
