MMM(Masterr-Master Replication Manage for Mysql)MYsql主主复制管理器解决方案实现99%SLA:典型应用是双主多从架构
MMM集群方案将读IP和写IP从数据库层面提取出来,只业务系统中只需调用即可实现读写分离。同一时刻只有一个master是可写的
mmm_mond:监控进程运行在管理节点上,决定和处理所有节点的角色转换
mmm_agentd:代理进程,运行在每台mysql服务器上,主要完成监控的测试工作以及简单的远程服务配置
mmm_control:用来查看和管理运行状态,同时管理mmm_mond进程
缺点:需要多个节点多个Ip,读写繁忙时不稳定,不适应数据安全性要求高,读写频繁的环境
双master架构需要五个ip,两个固定ip分别在节点上,两个只读ip和一个可写ip。当主节点故障,它的读写Ip都转移到备用节点上,后端的slave节点也转向备用节点
配置文件介绍:mmm_mon.conf在MMM管理端配置设置一些监控参数,mmm_common.conf需要在所有的MMM集群节点进行配置,内容完全一样,用于设置读写节点的IP及配置虚拟ip,mmm_agent.conf也需要在所有节点配置,用于设置每个节点的标识
安装与配置:双主双从配置一台monitor,两台master,两台slave
装一个epel-release-6-8.noarch.rpm 源包
yum -y install mysql-mmm*在monitor节点上
yum -y install mysql-mmm-agent* 在每个MysqlDB上
先配置好Master1和Master2主主同步
再配置好Master1到slave1和2中间的主从同步,记得要填Master1的物理IP地址
在所有的Mysql主机上设置read_only=1参数 ,两个例外replication threads和root用户不受限制
在所有mysql节点上创建除复制账号之外的两个账户mmm_monitor(管理服务器用来做健康检查的)mmm_agent(切换只读模式和同步master信息的)
grant replication client on *.* to 'mmm_monitor'@'192.168.1.%' identified by '123123';
grant super,replication client,process on *.* to 'mmm_agent'@'192.168.1.%' identified by '123123'
8.配置mmm_common.conf
active_master_role writer #都要先设置read-only=1,MMM设置写角色时自动打开
<host default>
cluster_interface eth0 #配置的网络接口,注意这里不能指定为子接口
pid_path /var/run/mysql-mmm/mmm_agentd.pid #设置PID位置
bin_path /usr/libexec/mysql-mmm #设定MMM可执行文件路径
replication_user repl_user #设置复制的文件名 replication_password 123123密码
agent_user mmm_agent #设置更改只读操作的用户 agent_password agent_password
</host>
<host db1>
ip 192.168.1.101
mod master
peer db2 #设置与db1对等
</host> #db2相同,改一下数字即可
<host db3>
ip 192.168.1.103
mode slave
</host>对应的,改一下数字即可
<role writer>设置可写角色
hosts db1,db2
ips 192.168.1.110
mode exclusive #互斥模式,只允许分配给一个IP
</role>
<role reader>可读角色
hosts db1,db2,db3,db4
ips 192.168.1.111 , 192.168.1.112 , 192.168.1.113 , 192.168.1.114
mode balanced #负载均衡,动态分配给多台MYsql主机
</role>
9.配置mmm_agent.conf主要用来定义集群中的主机
include mmm_common.conf
this db1 #其他几个以此类推234
10.mmm_mon.conf配置(在管理节点上)
include mmm_common.conf
<monitor>
ip 127.0.0.1
pid_path /var/run/mysql-mmm/mmm_mond.pid
bin_path /usr/libexec/mysql-mmm
status_path /var/lib/mysql-mmm/mmm_mond.status #集群的状态文件
ping_ips 192.168.1.1,192.168.1.101,192.168.1.102,192.168.1.110,192.168.1.111 #测试可用性的Ip列表
flap_duration 3600 #抖动的时间范围
flap_count 3 #时间范围内抖动的最大次数
auto_set_online 0 #是否设置自动上线,如果大于零,抖动主机在抖动时间范围过后自动上线
</monitor>
<host default>
monitor_user mmm_monitor #monitor账号
monitor_password monitor_password #密码
</host>
debug 0正常模式,1为debug模式
11.配置mysql-mmm-agent文件 ENABLED=1
MMM集群服务管理:/etc/init.d/mysql-mmm-monitor 集群控制端开启与关闭
/etc/init.d/mysql-mmm-agent 服务节点开启与关闭
查看集群运行状态:mmm_control help查看用法,或者在每个节点的/var/log/mysql-mmm目录下查看日志文件
mmm_control checks all检查所有,check db1检查db1
show查看状态,move_role writer db1切换回来
高性能linux服务器构建p374 MMM整合Amoeba