一、主機規劃
服務器 | 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 2月 17 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 2月 17 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