mongo自動備份腳本與恢復

mongo自動備份腳本與恢復

2018年12月17日 17:50:15 Data_driver 閱讀數 56更多mongodb

我的分類: 數據庫文件存儲Linux數據庫

1、建立MongoDB備份目錄bash

 
  1. mkdir -p /data/mongodb_bak/mongodb_bak_nowspa

  2. mkdir -p /data/mongodb_bak/mongodb_bak_list.net


2、新建MongoDB數據庫備份腳本(/data/mongodb_bak/MongoDB_bak.sh)
腳本以下:rest

 
  1. #!/bin/bashcode

  2. #backup MongoDBblog

  3.  

  4. #mongodump命令路徑索引

  5. #DUMP=/usr/local/mongodb/bin/mongodumpcrontab

  6. DUMP=/usr/bin/mongodump

  7. #臨時備份目錄

  8. OUT_DIR=/data/mongodb_bak/mongodb_bak_now

  9. #備份存放路徑

  10. TAR_DIR=/data/mongodb_bak/mongodb_bak_list

  11. #獲取當前系統時間

  12. DATE=`date +%Y_%m_%d`

  13. #數據庫帳號

  14. DB_USER=user

  15. #數據庫密碼

  16. DB_PASS=123

  17. #DAYS=15表明刪除15天前的備份,即只保留近15天的備份

  18. DAYS=15

  19. #最終保存的數據庫備份文件

  20. TAR_BAK="mongodb_bak_$DATE.tar.gz"

  21.  

  22. cd $OUT_DIR

  23. rm -rf $OUT_DIR/*

  24. mkdir -p $OUT_DIR/$DATE

  25. #備份所有數據庫 要用root權限的帳號

  26. $DUMP -h 15.62.32.112:27017 -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" -o $OUT_DIR/$DATE

  27. #備份單個數據庫

  28. #$DUMP -h 127.0.0.1:27017 -d myleguan -u $DB_USER -p $DB_PASS  -o $OUT_DIR/$DATE

  29. #壓縮爲.tar.gz格式

  30. tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE

  31. #刪除15天前的備份文件

  32. find $TAR_DIR/ -mtime +$DAYS -delete

  33.  

  34. exit 


3、修改文件屬性,使其可執行

chmod +x MongoDB_bak.sh


4、修改/etc/crontab,添加計劃任務

 
  1. vi /etc/crontab

  2. #每星期六晚上20:30開始執行MongoDB數據庫備份腳本

  3. 30 20 * * 6 root /data/mongodb_bak/MongoDB_bak.sh 


附錄:MongoDB數據庫恢復

 
  1. #恢復所有數據庫

  2. mongorestore -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" --noIndexRestore --dir /data/mongodb_bak/mongodb_bak_now/2016_12_17/

  3. #恢復單個數據庫

  4. 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參數:後面跟要恢復的數據庫名稱

 

#!/bin/bash

#backup MongoDB

#mongodump命令路徑

DUMP=/usr/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=myleguan

#數據庫密碼

DB_PASS=myleguan

#DAYS=15表明刪除15天前的備份,即只保留近15天的備份

DAYS=1

#最終保存的數據庫備份文件

TAR_BAK="mongodb_bak_$DATE.tar.gz"

cd $OUT_DIR

rm -rf $OUT_DIR/*

mkdir -p $OUT_DIR/$DATE

#備份所有數據庫
#$DUMP -h 127.0.0.1:27017 -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" -o $OUT_DIR/$DATE

$DUMP -h 127.0.0.1:27017 -d myleguan -u $DB_USER -p $DB_PASS  -o $OUT_DIR/$DATE

#壓縮爲.tar.gz格式

tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE

#刪除15天前的備份文件

find $TAR_DIR/ -mtime +$DAYS -delete

exit  

相關文章
相關標籤/搜索