一、主机规划
服务器 | 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