百木园-与人分享,
就是让自己快乐。

通过Python收集MySQL MHA 部署及运行状态信息的功能实现

一. 背景介绍 

当集团的MySQL数据库实例数达到2000+、MHA集群规模数百个时,对MHA的及时、高效管理是DBA必须面对的一个挑战。MHA 集群 节点信息 和 运行状态 是管理的基础。本篇幅主要介绍如何通过Python实现收集MHA 集群 节点信息 和 运行状态的功能。这些信息将是CMDB信息的重要组成部分。

MHA集群数百个,MHA Manager 节点 十几个,一个MHA Manager 节点管理着50-60个集群。 我们希望开发的程序,只在这十几个MHA Manager 节点部署运行,就可以收集到所需的所有 MHA Server 节点信息、VIP 信息、运行状态信息及其他信息,并且将收集到的数据保存到MySQL 数据库中。

二.实现逻辑 

 2.1 程序调用的MHA工具程序或文件

 

工具程序或文件  功能 
 mha_appxxx.cnf 配置文件

1.从这个文件中 提取 Server 信息(Server IP);

2.提取 FailOver Script 和 Online Change Script的文件。  

 appxxx_master_ip_failover 脚本文件  提取定义的VIP,和其他处收集到的VIP,进行横向比较,防止配置出错。
 appxxx_master_ip_online_change 脚本文件  提取定义的VIP,横向比较防止配置出错。
 masterha_check_repl 工具程序

1.检查MySQL复制状况;

2.解析当前主节点IP;

3.解析 slave 节点IP;

4.解析出VIP。

masterha_check_status

检测当前MHA运行状态(运行OK还是stop)。

 为便于理解,我们贴上 mha_appxxx.cnf 的内容。

[server default]
manager_workdir
=/var/log/masterha/app1.log //设置manager的工作目录
manager_log=/var/log/masterha/app1/manager.log //设置manager的日志
master_binlog_dir=/data/mysql //设置master 保存binlog的位置,以便MHA可以找到master的日志,我这里的也就是mysql的数据目录
master_ip_failover_script= /usr/local/bin/appxxx_master_ip_failover //设置自动failover时候的切换脚本
master_ip_online_change_script= /usr/local/bin/appxxx_master_ip_online_change //设置手动切换时候的切换脚本
password=用户密码 //设置mysql中root用户的密码,这个密码是前文中创建监控用户的那个密码
user=root 设置监控用户root
ping_interval
=1 //设置监控主库,发送ping包的时间间隔,默认是3秒,尝试三次没有回应的时候自动进行railover
remote_workdir=/tmp //设置远端mysql在发生切换时binlog的保存位置
repl_password=用户密码 //设置复制用户的密码
repl_user=repl //设置复制环境中的复制用户名
report_script=/usr/local/send_report //设置发生切换后发送的报警的脚本
shutdown_script
=\"\" //设置故障发生后关闭故障主机脚本(该脚本的主要作用是关闭主机放在发生脑裂,这里没有使用)
ssh_user=root //设置ssh的登录用户名

[server1]
hostname=110.110.110.50
port
=3306

[server2]
hostname=110.110.110.60
port
=3306
candidate_master
=1 //设置为候选master,如果设置该参数以后,发生主从切换以后将会将此从库提升为主库,即使这个主库不是集群中事件最新的slave
check_repl_delay=0 //默认情况下如果一个slave落后master 100M的relay logs的话,MHA将不会选择该slave作为一个新的master,因为对于这个slave的恢复需要花费很长时间,通过设置check_repl_delay=0,MHA触发切换在选择一个新的master的时候将会忽略复制延时,这个参数对于设置了candidate_master=1的主机非常有用,因为这个候选主在切换的过程中一定是新的master

[server3]
hostname=110.110.110.70
port
=3306

来源:https://www.cnblogs.com/xuliuzai/p/15358104.html
图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 通过Python收集MySQL MHA 部署及运行状态信息的功能实现

相关推荐

  • 暂无文章