mongo自動備份指令碼與恢復
mongo自動備份指令碼與恢復
2018年12月17日 17:50:15 Data_driver 閱讀數 56更多
一、建立MongoDB備份目錄
-
mkdir -p /data/mongodb_bak/mongodb_bak_now
-
mkdir -p /data/mongodb_bak/mongodb_bak_list
二、新建MongoDB資料庫備份指令碼(/data/mongodb_bak/MongoDB_bak.sh)
指令碼如下:
-
#!/bin/bash
-
#backup MongoDB
-
-
#mongodump命令路徑
-
DUMP=/usr/local/mongodb/bin/mongodump
-
#臨時備份目錄
-
OUT_DIR=/data/mongodb_bak/mongodb_bak_now
-
#備份存放路徑
-
TAR_DIR=/data/mongodb_bak/mongodb_bak_list
-
#獲取當前系統時間
-
DATE=`date +%Y_%m_%d`
-
#資料庫賬號
-
DB_USER=user
-
#資料庫密碼
-
DB_PASS=123
-
#DAYS=15代表刪除15天前的備份,即只保留近15天的備份
-
DAYS=15
-
#最終儲存的資料庫備份檔案
-
TAR_BAK="mongodb_bak_$DATE.tar.gz"
-
-
cd $OUT_DIR
-
rm -rf $OUT_DIR/*
-
mkdir -p $OUT_DIR/$DATE
-
#備份全部資料庫
-
$DUMP -h 15.62.32.112:27017 -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" -o $OUT_DIR/$DATE
-
#壓縮為.tar.gz格式
-
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
-
#刪除15天前的備份檔案
-
find $TAR_DIR/ -mtime +$DAYS -delete
-
-
exit
三、修改檔案屬性,使其可執行
chmod +x MongoDB_bak.sh
四、修改/etc/crontab,新增計劃任務
-
vi /etc/crontab
-
#每星期六晚上20:30開始執行MongoDB資料庫備份指令碼
-
30 20 * * 6 root /data/mongodb_bak/MongoDB_bak.sh
附錄:MongoDB資料庫恢復
-
#恢復全部資料庫
-
mongorestore -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" --noIndexRestore --dir /data/mongodb_bak/mongodb_bak_now/2016_12_17/
-
#恢復單個數據庫
-
mongorestore -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" --noIndexRestore -d dbname --dir /data/mongodb_bak/mongodb_bak_now/2016_12_17/dbname
部分引數說明
--drop引數:恢復資料之前刪除原來的資料,避免資料重複
--noIndexRestore引數:恢復資料時不建立索引
--dir引數:資料庫備份目錄
-d引數:後面跟要恢