IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    nagios监控mysql主从复制

    Vlix_Liu发表于 2015-10-28 02:25:27
    love 0

    起因:nagios可能监控到mysql服务的运行情况,但确不能监控mysql的主从复制是否正常:有时候,同步已经停止,但管理人员却不知道。

    下手处:登陆mysql从服务器,通过执行 mysql> show slave status/G 查看其输出,即可判定主从复制是否正常。下面是某个从服务器的输出:
    mysql> show slave status/G
    *************************** 1. row ***************************
    Slave_IO_State: Waiting for master to send event
    Master_Host: 192.168.93.16
    Master_User: rep1
    Master_Port: 3306
    Connect_Retry: 60
    Master_Log_File: mysql-bin.000004
    Read_Master_Log_Pos: 1752541
    Relay_Log_File: hy-mysql3-relay-bin.000088
    Relay_Log_Pos: 2339
    Relay_Master_Log_File: mysql-bin.000004
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    Replicate_Do_DB:
    这个输出,最关键处就是"Slave_IO_Running: Yes “和“Slave_SQL_Running: Yes ”,这两个值全是"Yes"就表明主从复制正常,否则就是有问题。

    操作步骤:
    1、在主数据库服务器增加一个用户,给予较低的权限,操作为

    mysql > grant Replication client on *.* to    'nagios'@'%' identified by 'nagios';
    mysql> flush privileges;

    2、登陆从服务器验证一下,看是否正常。操作为

     

    mysql -unagios -pnagios -e "show slave stutas/G"
      注意:这个操作是在 shell下操作的!!
    3、在从服务器安装 nrpe,然后在配置文件nrpe.cfg加入一行
    command[check_mysql_slave]=/usr/local/nrpe/libexec/chech_mysql_slave
    4、编写脚本/usr/local/nrpe/libexec/check_mysql_slave(这是监控其作用的核心),其内容如下:
    #!/bin/sh
    declare -a    slave_is
    slave_is=($(/usr/local/mysql/bin/mysql -unagios -pnagios    -e "show slave status/G"|grep Running |awk '{print $2}'))
    if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ]
    then
    echo "OK -slave is running"
    exit 0
    else
    echo "Critical -slave is error"
    exit 2
    fi
    5、手动运行这个脚本,观察输出。
    6、执行
    check_nrpe -H 192.168.99.102 -c check_mysql_slave
      观察其输出:

    7、修改nagios,并测试。
    8、功能测试(略)



沪ICP备19023445号-2号
友情链接