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