MySQL高可用解决方案MMM(3)

日志文件往往是分析错误的关键,所以要善于利用日志文件进行问题分析。

db端:/var/log/MySQL-mmm/mmm_agentd.log

监控端:/var/log/mysql-mmm/mmm_mond.log

2、命令文件:

mmm_agentd:db代理进程的启动文件

mmm_mond:监控进程的启动文件

mmm_backup:备份文件

mmm_restore:还原文件

mmm_control:监控操作命令文件

db服务器端只有mmm_agentd程序,其它的都是在monitor服务器端。

3、mmm_control用法

mmm_control程序可以用于监控群集状态、切换writer、设置online\offline操作等。

Valid commands are:

help        - show this message #帮助信息

ping        - ping monitor #ping当前的群集是否正常

show        - show status #群集在线状态检查

checks [<host>|all [<check>|all]] - show checks status#执行监控检查操作

set_online<host>    - set host <host> online #将host设置为online

set_offline<host>    - set host <host> offline #将host设置为offline

mode        - print current mode. #打印输出当前的mode

set_active      - switch into active mode.

set_manual      - switch into manual mode.

set_passive      - switch into passive mode.

move_role [--force] <role><host> - move exclusive role <role> to host <host> #移除writer服务器为指定的host服务器(Only use --force if you know what you are doing!)

set_ip<ip><host>    - set role with ip<ip> to host <host>

检查所有的db服务器群集状态:

[root@monitor1 ~]# mmm_control checks all

检查项包括:ping、mysql是否正常运行、复制线程是否正常等

检查群集环境在线状况:

[root@monitor1 ~]# mmm_control show

对指定的host执行offline操作:

[root@monitor1 ~]# mmm_controlset_offline slave2

对指定的host执行onine操作:

[root@monitor1 ~]# mmm_controlset_online slave2

执行write切换(手动切换):

查看当前的slave对应的master

[root@slave2 ~]# mysql -uroot -p123456 -e 'show slave status\G;'

mysql: [Warning] Using a password on the command line interface can be insecure.

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.31.141

writer切换,要确保mmm_common.conf文件中的writer属性有配置对应的host,否则无法切换

[root@monitor1 ~]# mmm_controlmove_role writer master1

OK: Role 'writer' has been moved from 'master2' to 'master1'. Now you can wait some time and check new roles info!

[root@monitor1 ~]# mmm_control show

master1(192.168.31.83) master/ONLINE. Roles: writer(192.168.31.2)

master2(192.168.31.141) master/ONLINE. Roles: reader(192.168.31.5)

slave1(192.168.31.250) slave/ONLINE. Roles: reader(192.168.31.4)

slave2(192.168.31.225) slave/ONLINE. Roles: reader(192.168.31.3)

save从库自动切换到了新的master

[root@slave2 ~]# mysql -uroot -p123456 -e 'show slave status\G;'

mysql: [Warning] Using a password on the command line interface can be insecure.

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.31.83

4、其它处理问题

如果不想让writer从master切换到backup(包括主从的延时也会导致写VIP的切换),那么可以在配置/etc/mysql-mmm/mmm_common.conf时,去掉<role write>中的backup

<role writer>#writer角色配置

hosts master1 #这里只配置一个Hosts

ips  192.168.31.2#对外提供的写操作的虚拟IP

mode exclusive #exclusive代表只允许存在一个主,也就是只能提供一个写的IP

</role>

这样的话当master1出现故障了writer写操作不会切换到master2服务器,并且slave也不会指向新的master,此时当前的MMM之前对外提供写服务。

5、总结

1.对外提供读写的虚拟IP是由monitor程序控制。如果monitor没有启动那么db服务器不会被分配虚拟ip,但是如果已经分配好了虚拟ip,当monitor程序关闭了原先分配的虚拟ip不会立即关闭外部程序还可以连接访问(只要不重启网络),这样的好处就是对于monitor的可靠性要求就会低一些,但是如果这个时候其中的某一个db服务器故障了就无法处理切换,也就是原先的虚拟ip还是维持不变,挂掉的那台DB的虚拟ip会变的不可访问。

2.agent程序受monitor程序的控制处理write切换,从库切换等操作。如果monitor进程关闭了那么agent进程就起不到什么作用,它本身不能处理故障。

3.monitor程序负责监控db服务器的状态,包括Mysql数据库、服务器是否运行、复制线程是否正常、主从延时等;它还用于控制agent程序处理故障。

4.monitor会每隔几秒钟监控db服务器的状态,如果db服务器已经从故障变成了正常,那么monitor会自动在60s之后将其设置为online状态(默认是60s可以设为其它的值),有监控端的配置文件参数“auto_set_online”决定,群集服务器的状态有三种分别是:HARD_OFFLINE→AWAITING_RECOVERY→online

5.默认monitor会控制mmm_agent会将writer db服务器read_only修改为OFF,其它的db服务器read_only修改为ON,所以为了严谨可以在所有的服务器的my.cnf文件中加入read_only=1由monitor控制来控制writer和read,root用户和复制用户不受read_only参数的影响。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ce6ce69e2cf72c4ba44c260b6c9d03d5.html