一、大致流程
在备份数据库的主机上编写备份脚本,使用 mysqldump 命令进行数据库备份,并将每次备份操作的结果输出到一个日志文件中。然后,在 Zabbix 告警配置中,通过监控该日志文件的内容来判断数据库备份是否成功。如果备份不成功,触发告警并发送通知给运维人员。这样可以及时发现备份问题并采取必要的措施。
以下是大致的优化内容:
- 编写备份脚本: 在备份数据库的机器上编写一个脚本,使用 mysqldump 命令进行数据库备份。将备份操作的结果输出到一个指定的日志文件中。
- Zabbix 告警配置: 在 Zabbix 中创建一个告警配置,配置一个监控项,用于检测备份日志文件中的特定内容(例如成功或失败的关键词)。
- 触发告警: 如果监控项检测到备份日志中出现备份失败的关键词,触发告警,并设置通知
文章来源(Source):https://dqzboy.com 方式,例如发送邮件或短信给运维人员。
通过这种方式,可以通过 Zabbix 对数据库备份的情况进行实时监控,及时发现备份失败,并迅速通知运维人员以便采取必要的处理措施。这有助于确保数据库备份的可靠性和及时性。
二、编写脚本
[root@localhost script]# vim backup_db.sh
#!/bin/bash
# 配置
BACKUP_PATH=/date/backup/mysql # 备份文件存储目录
MYSQL_DUMP=/usr/bin/mysqldump
BACKUP_DB=database_name
DB_USER=user_name
DB_PAWD=password
# 检查备份目录是否存在,如果不存在则创建
if [ ! -d "${BACKUP_PATH}" ]; then
mkdir -p "${BACKUP_PATH}"
fi
# 备份时间戳
BACKUP_TIME=$(date +%Y%m%d.%H%M)
# 备份数据库
"${MYSQL_DUMP}" -u"${DB_USER}" -p"${DB_PAWD}" -R -E -B "${BACKUP_DB}" > "${BACKUP_PATH}/${BACKUP_DB}_${BACKUP_TIME}.sql"
exit_code=$?
# 将备份结果写入日志文件
echo "${exit_code}" > /date/backup/mysql.txt
# 备份成功检查
if [ "${exit_code}" -eq 0 ]; then
echo "数据库备份成功。"
else
echo "数据库备份失败。"
fi
- 创建备份存储目录
[root@localhost script]# mkdir -p /date/backup/mysql/
- 脚本测试没问题后,添加到crontab中
[root@localhost script]# cat /date/backup/mysql.txt
0
说明:如果执行结果为0,则说明备份脚本执行成功,后面zabbix读取该值来判断每天定时备份任务是否备份正常,非0则触发告警;该方式不是完美的,如朋友们有更完美的解决方案请留言
三、配置监控
1、建立key变量
- zabbix_agent端的配置文件中添加监控告警key信息
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf

- 重启zabiix-agent服务
[root@localhost ~]# systemctl restart zabbix-agent
- 在zabbix服务端执行zabbix_get命令检查key是否生效
[root@zabbix-server ~]# zabbix_get -s xx.xx.xx.xx -p 10050 -k mysqlbak_check
0
2、监控WEB端配置
- 在zabbix前端页面创建模板,并引用该变量[mysqlbak_check]
2.1:创建模板


2.2:创建应用集


2.3:创建监控项


2.4:创建触发器





2.5:创建图形


三、模拟测试
- 找对对应的监控主机,添加该监控模板
1、查看图表

- 查看该主机的监控图表

2、触发告警
- 修改监控项的值,也就是将/date/backup/mysql.txt中的0改为其他数字来模拟触发告警
- 查看告警信息,我这里告警信息是通过企业微信和邮箱进行通知的,告警截图如下


必须 注册 为本站用户, 登录 后才可以发表评论!