linux下備份自動mongodb

首先,要了解mongodb備份相關的命令和參數
linux

語法:mongodump -h IP -d 數據庫 -o 文件存在路徑(-u 數據庫用戶名 -p 數據庫密碼)
mongodb

例如:數據庫

mongodump -h 127.0.0.1 -d testdb -o /backup/mongobak/

其中,不傳參則採用默認參。好比不傳-d則默認備份所有數據庫。spa

固然,既然有備份的命令,也有恢復的命令~~~rest

語法:mongorestore -h 主機 -d 目標庫 -drop  --directoryperdb 備份文件code

例如:crontab

mongorestore -h 127.0.0.1 --directoryperdb /data/dump

說明一下,--drop參數,有此參數,則表示,先刪除全部的記錄,而後恢復。如無此參數,則恢復備份時候的數據,備份以後新增長的數據依然存在。ci

PS:mongoexport 和 mongoimport 這兩個命令也能夠用來導出或導入數據哦。同步

而後,咱們固然不可能每次手動來敲命令備份咯,因此須要天天系統自動執行這些命令~~~it

新建一個文件,vi mongodb_back.sh(當前目錄爲:/home)

#!/bin/sh
DUMP=/usr/local/mongodb/bin/mongodump #mongodump備份文件執行路徑
OUT_DIR=/home/backup/mongod_bak/mongod_bak_now #臨時備份目錄
TAR_DIR=/home/backup/mongod_bak/mongod_bak_list #備份存放路徑
DATE=`date +%Y_%m_%d` #獲取當前系統時間
DB_USER=username #數據庫帳號
DB_PASS=123456 #數據庫密碼
DAYS=7 #DAYS=7表明刪除7天前的備份,即只保留最近7天的備份
TAR_BAK="mongod_bak_$DATE.tar.gz" #最終保存的數據庫備份文件名
cd $OUT_DIR
rm -rf $OUT_DIR/*
mkdir -p $OUT_DIR/$DATE
$DUMP -u $DB_USER -p $DB_PASS -o $OUT_DIR/$DATE #備份所有數據庫
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE #壓縮爲.tar.gz格式
find $TAR_DIR/ -mtime +$DAYS -delete #刪除7天前的備份文件

說明一下,都是很簡單的linux基本命令,要根據本身的實際狀況適當修改

修改其權限爲可執行:

chmod +x /home/mongod_back.sh

而後添加到自動自動任務中:vi /etc/crontab(路徑通常是這個)

30 1 * * * root /home/crontab/mongod_bak.sh #在最後面添加,表示天天凌晨1點30執行備份,可適當修改

最後,就是使咱們的修改生效了

這裏我遇到了問題,網上說是用(/etc/rc.d/init.d/crond restart),可是我whereis crond找不到,結果在/etc/init.d裏找到cron,而且還不讓我restart,囧~~~而後我採用的是暴力的方式:

一、service cron stop

二、service cron start

呵呵,都看得懂,先暴力stop,再暴力start,你們都懂的。(這一步,但願大神給出通用點的方式)

之後實踐成功,再繼續補充主從數據庫同步(主要是防止主數據庫出錯,而後就能夠改連從數據庫,保證項目不垮)

相關文章
相關標籤/搜索