运维之道 | Zabbix监控mysql主从同步状态并设置触发微信告警

一、主机规划

服务器 IP
zabbix-server 192.168.1.111
mysql-master、zabbix-agent 192.168.1.115
mysql-slave、zabbix-agent 192.168.1.116

二、MySQL数据库主从搭建

1、关闭防火墙(主从库均需关闭
[root@master ~]# systemctl stop firewalld
[root@master ~]# setenforce 0
2、删除系统自带mysql配置文件(主从库均需删除
[root@master ~]# yum remove -y mariadb
[root@master ~]# rm -rf /etc/my.cnf
[root@master ~]# rm -rf /var/lib/mysql
3、mysql数据库安装部署(主从库均需安装

PS:此文章为zabbix结合数据库主从实验,为方便数据库采用yum方法安装,若需通过源码安装,效果一致,可自行测试

运维之道 | Centos7 安装mysql5.6
  • 安装并启动mariadb服务、并设置为开机自启
[root@master ~]# yum install -y mariadb mariadb-server mariadb-devel
[root@master ~]# systemctl start mariadb && systemct enable mariadb
4、配置 master 主库服务器
  • 开启数据库binlog功能
[root@master ~]# vim /etc/my.cnf

[mysqld]
server_id=0001						///机器的唯一标识
log_bin=mysql-bin					///bin-log日志名称
datadir=/var/lib/mysql				///bin-log日志存放地点
socket=/var/lib/mysql/mysql.sock	///sock地址
  • 重启数据库,并查看binlog日志是否生成
[root@master ~]# systemctl restart mariadb
[root@master ~]# ll /var/lib/mysql
-rw-rw----. 1 mysql mysql      264 217 15:42 mysql-bin.000001
  • 创建从库用户并授权(只需在master库中配置
[root@master ~]# mysql -u root -p     									   ##登录mysql
mysql> create user 'villian'@'192.168.1.116' identified by '123456';       ##创建用户
mysql> grant replication slave on *.* to 'villian'@'192.168.1.116';        ##用户授权
mysql> flush privileges;											   	   ##刷新权限
5、配置 slave 从库服务器
  • 开启数据库binlog功能
[root@slave ~]# vim /etc/my.cnf

[mysqld]
server_id=0002						///机器的唯一标识
log_bin=mysql-bin					///bin-log日志名称
datadir=/var/lib/mysql				///bin-log日志存放地点
socket=/var/lib/mysql/mysql.sock	///sock地址
  • 重启数据库,并查看binlog日志是否生成
[root@slave ~]# systemctl restart mariadb
[root@slave ~]# ll /var/lib/mysql
-rw-rw----. 1 mysql mysql      264 217 15:42 mysql-bin.000001
6、建立主从关系
  • 打开主库服务器登录mysql (获取File 和 Position
[root@master ~]# mysql -u root -p        			      ##   登录mysql  
MariaDB [(none)]> show master status;                     ## 查看master状态 
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |      573 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
  • 打开从库服务器登录mysql,配置主从关系
[root@slave ~]# mysql -u root -p              ## 登录mysql 
mysql> show slave status\G;                   ## 查看状态  

状态未开启时进行如下设置:
mysql> change master to master_host='192.168.1.115'; 		    ## 主节点 
mysql> change master to master_port=3306;       	 		    ## 主节点的端口号 
mysql> change master to master_user='villian';  	 	     	## 账号 
mysql> change master to master_password='123456'; 				## 密码 
mysql> change master to master_log_file='mysql-bin.000002';  	## show master status 对应上述主库的日志  
mysql> change master to master_log_pos=573;  					## show master status 对应上述主库的pos  
  • 在从库服务器开启从节点
mysql> start slave;               ## 开启从节点 
mysql> show slave status\G;       ## 查看状态 

下图红色框框必须为开启状态
Slave_IO_Running  :负责与主机的io通信
Slave_SQL_Running :负责自己的slave mysql进程

在这里插入图片描述

  • 测试数据库主从搭建是否成功(在主库中创建villian库,查看从库是否同步
    在这里插入图片描述
    在这里插入图片描述
    到这,数据库主从同步已经搭建完成啦!!!

三、MySQL端安装zabbix-agent服务

1、安装zabbix-agent服务(主从库均需安装
[root@master ~]# rpm -Uvh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[root@master ~]# yum install zabbix-agent -y		

PS:yum安装的时候会出现安装失败,重复执行yum安装直到进度条达到100%即可!!!!

2、重启zabbix-agent服务(主从服务均需重启
[root@master ~]# systemctl start zabbix-agent.service
3、修改zabbix-agent端配置(主从服务均需修改
[root@master ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.111       					 #zabbix server地址
ServerActive=192.168.1.111    				 #zabbix server地址
Hostname=Zabbix server						 #这个是等下在zabbix-web端添加主机时的主机名
4、重启zabbix-agent服务(主从服务均需重启
[root@master ~]# systemctl restart zabbix-agent.service

四、Zabbix-agent(数据库slave端) 端配置

1、在 mysql-slave 端使用命令查看数据库主从状态
[root@slave ~]# mysql -u root -p -e "show slave status\G" | grep "Running" |awk "{print $2}" | grep -c "Yes" 
2					///2表示主从两个YES,主从同步正常
2、在 mysql-slave 端编写脚本
[root@slave ~]# cat /tmp/auto_monitor_mysql.sh    
#!/bin/bash
#auto mysql master-slave
mysql -uroot -e 'show slave status\G'|grep -E "Slave_IO_Running|Slave_SQL_Running"| awk {print$2} |grep -c Yes
3、在zabbix_agent.conf配置文件中自建key键值
[root@slave ~]# vim /etc/zabbix/zabbix_agentd.conf

UserParameter=mysql.replication,sh /tmp/auto_monitor_mysql.sh    
///在配置文件最后面添加自建键值、“mysql.replication”:键值 、  “sh /tmp/auto_monitor_mysql.sh”:执行脚本结果
4、重启zabbix-agent服务(一定要重启,否则无法识别到自建键值
[root@slave ~]# systemctl restart zabbix-agent
5、zabbix-server端抓取mysql-slave端的键值数据
[root@zabbix ~]# zabbix_get -s 192.168.1.111 -k mysql.replication
2

PS:抓取mysql-slave端的键值,如果返回数值2,则表明IO和SQL线程状态都为yes状态,则表明主从正常


五、Zabbix-server-web端配置

1、创建监控项

在这里插入图片描述
在这里插入图片描述

2、创建MySQL_master-slave_status图形

在这里插入图片描述
在这里插入图片描述

3、查看MySQL数据库主从同步图形

在这里插入图片描述


六、创建触发器,实现主从同步异常微信报警

1、创建触发器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、启用微信报警
配置步骤运维之道 | Zabbix 使用企业微信发送邮件报警及定制邮件报警内容

在这里插入图片描述

3、关闭主库mysql服务
[root@master ~]# systemctl stop mariadb
4、从库获取主从值
[root@zabbix ~]# mysql -e "show slave status\G" | grep "Running" | grep "Yes" | wc -l
1				///1表示主从同步失败

在这里插入图片描述

5、关闭mysql-master后,微信接收告警

在这里插入图片描述

6、重启mysql-master,微信接收主从同步恢复告警
[root@master ~]# systemctl start mariadb

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章