1、工作逻辑图
2、MySQL-MMM优缺点
优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。
缺点:Monitor节点是单点,可以结合Keepalived实现高可用。
3、MySQL-MMM工作原理
MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的)。
mmm_mond:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上运行。
mmm_agentd:运行在每个mysql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在被监管机上运行。
mmm_control:一个简单的脚本,提供管理mmm_mond进程的命令。
mysql-mmm的监管端会提供多个虚拟IP(VIP),包括一个可写VIP,多个可读VIP,通过监管的管理,这些IP会绑定在可用mysql之上,当某一台mysql宕机时,监管会将VIP迁移至其他mysql。
在整个监管过程中,需要在mysql中添加相关授权用户,以便让mysql可以支持监理机的维护。授权的用户包括一个mmm_monitor用户和一个mmm_agent用户,如果想使用mmm的备份工具则还要添加一个mmm_tools用户。
4、需求描述
操作系统:CentOS 7.0_X64
数据库:MySQL 5.6
MMM:MySQL-MMM 2.2.1
5. 相关配置
db_monitor_1 下的配置
vim /etc/mysql-mmm/mmm_mon.conf
内容
include mmm_common.conf
<monitor>
ip 127.0.0.1
pid_path /var/run/mmm_mond.pid
bin_path /usr/lib/mysql-mmm/
status_path /var/lib/misc/mmm_mond.status
ping_ips 192.168.1.181, 192.168.1.182, 192.168.1.183, 192.168.1.184, 192.168.1.185, 192.168.1.86, 192.168.1.87, 192.168.1.88, 192.168.1.89
#Description: Default mode of monitor.
mode active
auto_set_online 10
</monitor>
<host default>
monitor_user mmm_monitor
monitor_password 9*[email protected]
</host>
debug 0
vim /etc/mysql-mmm/mmm_common.conf
内容
active_master_role writer
<host default>
cluster_interface eno16777984
pid_path /var/run/mmm_agentd.pid
bin_path /usr/lib/mysql-mmm/
replication_user replication
replication_password 9*[email protected]
agent_user mmm_agent
agent_password 9*[email protected]
</host>
<host db1>
ip 192.168.1.181
mode master
peer db2
</host>
<host db2>
ip 192.168.1.182
mode master
peer db1
</host>
<host db3>
ip 192.168.1.183
mode slave
</host>
<host db4>
ip 192.168.1.184
mode slave
</host>
<host db5>
ip 192.168.1.185
mode slave
</host>
<role writer>
hosts db1, db2
ips 192.168.1.89
mode exclusive
</role>
<role reader>
hosts db3, db4, db5
ips 192.168.1.86, 192.168.1.87, 192.168.1.88
mode balanced
</role>
db_monitor_1下的相关命令
相关命令
systemctl start mysql-mmm-monitor.service
systemctl stop mysql-mmm-monitor.service
/etc/init.d/mysql-mmm-monitor start(不再使用)
mmm_control show
数据库分配: