

推荐
Zabbix拓扑图绘制,快速定位故障主机位置
一小时带你学习完zabbix监控,生产全套详细学习教程
一/编写脚本
#!/bin/bash
#############################################################################
host='127.0.0.1'
port='12345'
#mongodump文件路径
sourcepath='/usr/local/mongodb/bin/'
#当前时间
nowtime=$(date "+%Y%m%d")
#前一天时间
yesterday=$(date -d "1 day ago" +%Y-%m-%d)
#日志时间年月
nowtime_log=$(date "+%Y%m")
#库
mongo_DB=test
#压缩包备份路径
backupdir=/data/mongodb_backups
#### 自动检查/创建备份路径 ####
if [ ! -d /data/mongodb_backups/mongo_bak ];then
mkdir -p /data/mongodb_backups/mongo_bak
fi
if [ ! -d /data/mongodb_backups/log ];then
mkdir -p /data/mongodb_backups/log
fi
#备份路径
targetpath="/data/mongodb_backups/mongo_bak"
#日志
logpath="/data/mongodb_backups/log"
#### 备份函数 ####
start(){
$sourcepath/mongodump --host $host --port $port --db $mongo_DB --gzip --out ${targetpath}/${nowtime}
}
#### 判断备份成功 ####
execute(){
echo "=========================$(date) 备份所有mongodb启动 ${nowtime}=========" >> ${logpath}/${nowtime_log}.log
#为什么要这样做,zabbix监控检查文件是否存在vfs.file.size[/data/mongodb_backups/test.tar.gz]
mv $backupdir/$mongo_DB.tar.gz $backupdir/${mongo_DB}_${yesterday}.tar.gz
start
if [ $? -eq 0 ];then
cd ${targetpath}/${nowtime}/
#为什么这样做?包结构会冗余很多,包含了上层目录的问题
tar -czvf $backupdir/$mongo_DB.tar.gz $mongo_DB
echo " MongoDB备份成功 !" >> ${logpath}/${nowtime_log}.log
find $backupdir -mtime +7 -name *.tar.gz -exec rm -rf {} \;
else
echo " MongoDB备份失败失败失败失败 " >> ${logpath}/${nowtime_log}.log
fi
}
execute
find $targetpath -mtime +3 -name 20* -exec rm -rf {} \;
find $logpath -mtime +180 -name *.log -exec rm -rf {} \;
echo "========================= $(date) 备份mongodb结束 ${nowtime}=========" >> ${logpath}/${nowtime_log}.log
#导入命令/usr/local/mongodb/bin/mongorestore --host 127.0.0.1 --port 123456 --gzip /data/mongodb_backups/mongo_bak/20230619/
二/定时任务
[root@abc mongodb_backups]# chmod +x mongodb_bachups.sh
[root@iZ mongodb_backups]# crontab -l
* 5 * * * sh /data/mongodb_backups/mongodb_bachups.sh > /dev/null 2
三/zabbix监控文件和文件大小,触发器

没了就这样了。