首页 > SQL数据库管理 > mysql-mmm使用指南

mysql-mmm使用指南

2014年10月21日

mysql-mmm使用指南

http://blog.chinaunix.net/uid-16844903-id-3799093.html

按: 结合官方手册整理的个人理解,如有异议,欢迎拍砖.

官网:http://mysql-mmm.org/mysql-mmm.html

· MMM

o mmm_mond – the monitor

· States

· Checks

· Network check

· Flapping

o Startup

o Role transition

· Standard role

· Active master role

MMM

mmm_mond – the monitor

States

参考6中状态的博文

Checks

mmm_mond监控服务启动后,共有5项检查.

检查项 说明 备注
ping_ip 网络检查 随机对ips指定的IP地址进行icmp检测,默认间隔为1秒,0.5秒返回为正常.否则报告:FATAL Network is unreachable
ping 主机检查  
mysql MySQL可用性检查  
rep_threads 复制线程检查  
rep_backlog 复制延迟检查  

其中ping_ip比较特殊,是网络稳定性检查,默认每秒一次.由monitor部分的ping_interval参数设置.
其他四项可以在配置文件的check部分指定,默认值及含义如下

参数 默认值 解释 备注
check_period 5 每5秒执行一次检查  
trap_period 10 如果超过10秒还检查不成功,就被认为是失败的.通常日志就报告error错误  
timeout 2 2秒不返回结果,则认为是超时  
restart_after 10000 在检查1万次之后,重启检查进程  
max_backlog 60 超过60秒报延迟 线上服务器已经修改为86400,为了避免短暂延迟导致的vip移动现象.nagios中已有监控复制延迟的插件

Network check

网络检查

如果在启动monitor过程中,mmm_mond将选择ping_ips定义的ip地址,顺序进行网络测试,只要有一个是通的,mmm_mond就会启动,否则会一直循环尝试.

/usr/share/perl5/MMM/Monitor/NetworkChecker.pm 模块中下面代码
...
...
                                if ($res =~ /^OK/) {
                                DEBUG "IP '$ip' is reachable: $res";
                                $checker->shutdown(); return 1;
                        }

Flapping

抖动
在设置auto_set_online或者故障时间不超过60秒,主机在ONLINE和HARD_OFFLINE / REPLICATION_FAIL / REPLICATION_DELAY这些状态直接频繁切换,则会导致抖动.
如果auto_set_online参数大于0,在flap_duration时间后,会自动设置为上线.

Startup

1 初期的网络检查

2 如果网络不通,它会不断重试,直到网络畅通,才会启动

3 主机检查

4 尝试从以下地方读取主机的状态
.status文件
agent信息
hosts信息

Role transition

角色转换

Standard role

IP is removed from old host
IP is configured on new host
New host sends arp packets to inform other hosts that it now has the IP

Active master role

移动master角色

mmm_control move_role writer db2

移动过程中的操作

· 写角色从db1上移除

1 设置db1为只读

2 移除db1的所有活动连接

3 移除db1的写VIP

· 向从库(如果有从库)发送信息,从库执行如下操作

1 尽可能赶上db1的复制

2 执行CHANGE MASTER命令,变为db2的从库

· 写角色在db2上添加

1 将db2设置为可写

2 配置写VIP

3 发送arp包,告诉其他主机,db2已经获取新的IP地址.

· 执行完成后检查:

4 登录db2,执行ip addr show命令,查看vip是否存在.

5 登录mysql,执行show slave status\G,查看复制状态是否正常

6 QA与DEV测试线上应用.

· 可能出现的问题:

1 因为SUPER权限导致的复制中断
通过上面的分析,已经预先把db1设置为只读,为什么切换后还会有主键冲突的问题?
程序帐号具有SUPER权限,read_only参数,对此类用户无效.

2 MySQL负载/磁盘IO
MySQL负载或者磁盘IO的压力过大,导致复制的IO线程短时间无响应.写VIP迁移后,IO线程继续传输的过期的binlog日志,导致主键冲突.

 

本文的评论功能被关闭了.