Zabbix监控 之 数据库备份

zabbix前端的所有操作都是存在数据库里的,在数据库里都会有对应的表,所以对zabbix备份,只需备份zabbix数据库就行了。使用最广泛的备份方法还是使用mysqldump。

一:全库备份

[root@zhu1 ~]# mysqldump -uroot -p123456 --opt zabbix | bzip2 > zabbix.sql.bz2
[root@zhu1 ~]# ll zabbix.sql.bz2
-rw-r--r-- 1 root root 2353816 10-23 00:54 zabbix.sql.bz2
#--opt               Same as --add-drop-table, --add-locks, --create-options,
--quick, --extended-insert, --lock-tables, --set-charset,
and --disable-keys. Enabled by default, disable with
--skip-opt.
#由于zabbix库一般比较大,所以使用bzip2进行压缩

二:分开备份

1.zabbix数据库中有很多的多,大体上分为存放监控数据的表和配置的表两种。

数据表有:

alerts
auditlog
events
history
history_log
history_str
history_str_sync
history_sync
history_text
history_uint
history_uint_sync
node_cksum
proxy_dhistory
proxy_history
service_alarms
services_times
trends
trends_uint

其它的表便是zabbix的配置信息表:

2.备份zabbix的配置表。

[root@zhu1 ~]# mysqldump -uroot -p123456 --databases zabbix  --ignore-table=zabbix.alerts --ignore-table=zabbix.auditlog  --ignore-table=zabbix.events  --ignore-table=zabbix.history  --ignore-table=zabbix.history_log --ignore-table=zabbix.str --ignore-table=zabbix.str_sync  --ignore-table=zabbix.sync  --ignore-table=zabbix.text --ignore-table=zabbix.uint  --ignore-table=zabbix.uint_sync  --ignore-table=zabbix.node_cksum  --ignore-table=zabbix.proxy_dhistory --ignore-table=zabbix.proxy_history --ignore-table=zabbix.service_alarms --ignore-table=zabbix.services_times --ignore-table=zabbix.trends --ignore-table=zabbix.trends_uint > zabbix_config.sql
[root@zhu1 ~]# ll zabbix_config.sql
-rw-r--r-- 1 root root 14572182 10-23 01:15 zabbix_config.sql
#使用--ignore-table跳过不需要备份的表

3.把备份文件上传另一主机上,看能否导入生效。

[root@zhu1 ~]# scp zabbix_config.sql [email protected]:/root/
zabbix_config.sql                                                         100%   14MB   7.0MB/s   00:02

4.导入

[root@zhu2 ~]# mysql zabbix < zabbix_config.sql

5.前端查看

154616861.jpg

可以看到完全正常,相当于对配置信息做了次迁移。

简单的备份脚本:

#!/bin/bash
FTP_SERVER=192.168.70.137
FTP_USER="zabbix"
FTP_PASSWD="zabbix"
BAK_PATH="/zabbix_db_bk/192.168.70.135/"
BAK_LOG_FILE="/var/log/zabbix_bk_log"
DEL_FILE_DAYS_AGO=7
datenow=$(date +'%Y-%m-%d')
mkdir -p /databak
for tablename in $(mysql -N -uzabbix -p123456 zabbix -e "show tables;" 2>/dev/null | grep -vE "alerts|auditlog|history|events|trends"); do
echo dump table: ${tablename}
/opt/mysql/bin/mysqldump -uzabbix -p123456 zabbix ${tablename} >>/databak/zabbixdb.${datenow}.sql 2>>${BAK_LOG_FILE}
done
cd /databak
tar zcvf zabbixdb.${datenow}.sql.tar.gz zabbixdb.${datenow}.sql
rm -f /databak/zabbixdb.${datenow}.sql
/usr/bin/ftp -n <<EOF
open ${FTP_SERVER}
user ${FTP_USER} ${FTP_PASSWD}
bin
cd ${BAK_PATH}
binary
put zabbixdb.${datenow}.sql.tar.gz
bye
EOF
find /databak/ -type f -mtime +${DEL_FILE_DAYS_AGO} |xargs rm -rf
echo "THE BACKUP OF ZABBIX HAS BEEN SUCCESSFULLY"

本文出自 “浪淘沙” 博客,谢绝转载!

你可能感兴趣的:(数据库备份,监控,default)