運維之道 | 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

在這裏插入圖片描述

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