Linux下shell腳本實現mongodb定時自動備份

MongoDB是一個基於分佈式文件存儲的數據庫。由C++語言編寫。旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。html

MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。mongodb

它支持的數據結構很是鬆散,是相似json的bson格式,所以能夠存儲比較複雜的數據類型。shell

Mongo最大的特色是它支持的查詢語言很是強大,其語法有點相似於面向對象的查詢語言,幾乎能夠實現相似關係數據庫單表查詢的絕大部分功能,並且還支持對數據創建索引。數據庫

 

一、建立備份目錄

[root@localhost data]# mkdir -p /data/backup/mongo/mongodb_bak_tmp [root@localhost data]# mkdir -p /data/backup/mongo/mongodb_bak_path

二、建立MongoDB備份shell腳本

#!/bin/bash # @Author: Tse先生 # @Create date: 2019-11-21 # @full backup MongoDB #mongodump命令路徑 DUMP=/usr/local/mongodb/bin/mongodump #tar備份包臨時備份目錄,這個tar包最好定時傳到本地存儲作備份 OUT_DIR=/data/backup/mongo/mongodb_bak_tmp #完整備份目錄路徑 TAR_DIR=/data/backup/mongo/mongodb_bak_path #獲取當前系統時間 DATE=`date +%Y_%m_%d_%H_%M` #數據庫帳號 DB_USER=root #數據庫密碼 DB_PASS=123456 #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 127.0.0.1:3717 -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 #刪除tar備份包10天前的備份文件 find $OUT_DIR/ -mtime +10 -name "*.tar.gz" -exec rm -rf {} \; exit

三、添加文件爲可執行權限

[root@localhost script]# chmod +x mongodbfullbackup.sh

四、添加定時計劃任務(設置天天晚上3點定時完整備份)

[root@localhost script]# crontab -e #天天凌晨3點開始執行MongoDB完整備份腳本 0 3 * * *  sh  /data/script/mongodbfullbackup.sh    >/dev/null 2>&1

關於須要修改crontab的定時任務時間的,能夠參考博主另一篇隨筆文章說明:json

http://www.javashuo.com/article/p-rmovnffl-m.htmlbash

五、MongoDB數據庫恢復說明

#恢復單個庫: /usr/local/mongodb/bin/mongorestore  --host 127.0.0.1 --port 3717 --authenticationDatabase admin --username root --password 123456  --drop  --stopOnError  --db local  /tmp/2019_11_21_14_57/local #恢復全部庫: /usr/local/mongodb/bin/mongorestore  --host 127.0.0.1 --port 3717 --authenticationDatabase admin --username root --password 123456  --drop  --stopOnError  /tmp/2019_11_21_14_57

參數說明:數據結構

  • --authenticationDatabase admin:驗證庫,也就驗證你帳號密碼的
  • --drop:恢復數據以前刪除原來的數據,避免數據重複
  • --stopOnError:恢復時候遇到錯誤就中止
  • --db:恢復單個庫的時候,後面加庫名
相關文章
相關標籤/搜索