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:恢復單個庫的時候,後面加庫名
相關文章
相關標籤/搜索