一. 数据库备份:
1. 备份Zabbix数据库可以防止数据库因意外损坏而导致所有的配置数据丢失,备份的目的是灾难恢复。这里选择对单表备份,而非全部备份。排除以下的表(原因是这几个表的数据为监控的历史展示数据,非配置类数据)。
history* trends* Acknowledges Alerts Auditlog Events service_alarms
2. 过滤出要备份的数据库:
[root@zabbix ~]# mysql -uzabbix -pzabbix zabbix -e 'show tables' | egrep -v
"(Tables_in_zabbix|history*|trends*|acknowledges|alerts|auditlog|events|
service_alarms)"
3. 将过滤出的数据库赋值给一个变量,循环变量备份数据库:
## 创建备份文件的目录
[root@zabbix ~]# mkdir /mysqlbak
## 将过滤出来的数据赋值给变量
[root@zabbix ~]# TABLE=`mysql -uzabbix -pzabbix zabbix -e 'show tables' | egrep -v "
(Tables_in_zabbix|history*|trends*|acknowledges|alerts|auditlog|events|service_alarms)"`
## 备份数据
[root@zabbix ~]# for i in $TABLE;
do
mysqldump -uzabbix -pzabbix -P3306 -hlocalhost --opt zabbix $i > /mysqlbak/$i.sql;
done
4. 数据的还原:
[root@zabbix ~]# for table in `ls /mysqlbak/`;
do
mysql -uzabbix -pzabbix -hlocalhost zabbix < $table;
done
注意:可以将备份和还原写成一个脚本文件:
## 创建脚本存放目录
[root@zabbix ~]# mkdir /server/scripts -p
[root@zabbix ~]# cd /server/scripts/
## 编写备份脚本
[root@zabbix scripts]# vim bak_mysql.sh
#!/bin/bash
## 定义变量
BAK_DIR=/mysqlbak ## 备份的目录
DAY=`date +%F` ## 对当天的数据库数据进行备份
USER=zabbix ## 数据库用户
PASSWD=zabbix ## 数据库密码
HOST=localhost ## 数据库主机
DB=zabbix ## 备份的数据库名称
## 定义备份数据库的函数
MYSQLDUMP () {
## 获取要备份的表,并赋值给变量
TABLE=`mysql -uzabbix -pzabbix zabbix -e 'show tables' | egrep -v "
(Tables_in_zabbix|history*|trends*|acknowledges|alerts|auditlog|events|service_alarms)"`
## 判断目录是否存在,若不存在则创建目录
[ -d $BAK_DIR/$DAY/logs ] || mkdir -p $BAK_DIR/$DAY/logs
## 遍历变量,进行表的备份
for tab in $TABLE
do
mysqldump -uzabbix -pzabbix -P3306 -hlocalhost --opt zabbix $tab > $BAK_DIR/$DAY/$tab.sql
done
## 存储日志
[ $? -eq 0 ] && echo "${DAY}: Backup zabbix succeed" >>
$BAK_DIR/$DAY/logs/ZabbixMysqlDumpSuccess.log ||
echo "${DAY}: Backup zabbix failed" >> $BAK_DIR/$DAY/logs/ZabbixMysqlDumpFailed.log
}
## 调用函数
MYSQLDUMP
## 为脚本赋予执行权限
[root@zabbix scripts]# chmod +x bak_mysql.s
## 执行脚本
[root@zabbix scripts]# ./bak_mysql.sh
5. 查看数据是否备份成功:
[root@zabbix 2022-09-28]# tree /mysqlbak/
/mysqlbak/
└── 2022-09-28
├── actions.sql
├── autoreg_host.sql
├── conditions.sql
├── config_autoreg_tls.sql
├── config.sql
...........
├── logs
│ └── ZabbixMysqlDumpSuccess.log
├── maintenances_groups.sql
├── maintenances_hosts.sql
├── maintenances.sql
├── maintenances_windows.sql
├── maintenance_tag.sql
├── media.sql
├── media_type_message.sql
..........
2 directories, 150 files
二. Zabbix的高可用:
1. Zabbix的高可用问题:对于一个监控系统都存在的一个问题就是知网来盗控自己,如果当身发生成周会导致全部监控实效,并且也无法发送报警消息。这就需要实现Zabbix系统的高可用,至少在监控系统出现故障时能够及时发送报警消息。
2. Zabbix的高可用实现: