天天看點

mongodb自動備份,并zabbix檢測備份檔案是否正常,備份檔案大小

作者:街頭角落裡
mongodb自動備份,并zabbix檢測備份檔案是否正常,備份檔案大小
mongodb自動備份,并zabbix檢測備份檔案是否正常,備份檔案大小

推薦

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監控檔案和檔案大小,觸發器

mongodb自動備份,并zabbix檢測備份檔案是否正常,備份檔案大小

沒了就這樣了。