MongoDB 備份與還原


MongoDB 自動備份

一、 創建備份目錄

查詢磁盤空間

df -h

在/data目錄下創建備份目錄

mkdir -p /data/mongodb_bak/mongodb_bak_now
mkdir -p /data/mongodb_bak/mongodb_bak_list

 

二、新建mongodb數據庫自動備份腳本

vim /data/mongodb_bak/MongoDB_bak.sh

按Esc鍵,按i鍵進入編輯模式

#!/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_%H_%M_%S`
#數據庫賬號
DB_USER=admin
#數據庫密碼
DB_PASS=admin
#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: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

按Esc鍵,輸入:wq退出並保存

 

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

chmod +x /data/mongodb_bak/MongoDB_bak.sh

單獨執行備份

/data/mongodb_bak/MongoDB_bak.sh

按Ctrl+C鍵退出

 

四、添加計划任務

vim /etc/crontab

在最底部添加

0 2 * * * root /data/mongodb_bak/MongoDB_bak.sh

每天02:00以root身份運行備份數據庫的腳本。

重啟crond使其生效

systemctl restart crond.service
systemctl enable crond.service

至此,一個自動備份的任務就完成了。

 

MongoDB 還原

cd /data/mongodb_bak/mongodb_bak_list
ll

選擇一個備份文件進行解壓並還原

tar -zxvf /data/mongodb_bak/mongodb_bak_list/mongod_bak_2019_06_14_11_11_41.tar.gz  -C /

mongorestore -u admin -p admin --authenticationDatabase "admin"  --dir /data/mongodb_bak/mongodb_bak_now/2019_06_14_11_41

 

可選參數說明

--drop 參數:恢復數據之前刪除原來的數據,避免數據重復

--noIndexRestore 參數:恢復數據時不創建索引

--dir 參數:數據庫備份目錄

-d 參數:后面跟要恢復的數據庫名稱

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM