新聞中心
近期在生產(chǎn)環(huán)境中碰到MongoDB數(shù)據(jù)庫備份問題,所以整理了一下腳本,大家拿去盡管享用。

目前創(chuàng)新互聯(lián)已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、麥積網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
在MongoDB中創(chuàng)建備份賬號(hào)
使用管理員賬號(hào)登錄MongoDB數(shù)據(jù)庫:
[root@renwolecomdbs /]$ mongo
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.9
> use admin
switched to db admin
認(rèn)證
> db.auth("admin","KM5d9KhJcW7O0lIAT")
下面開始創(chuàng)建MongoDB備份專有賬號(hào):
> db.createUser(
{
user: "renwolebackup",
pwd: "RenwoleComACC",
roles: [ { role: "backup", db: "admin" } ]
}
)
> exit
創(chuàng)建備份腳本存放目錄及文件
$ mkdir -p /etc/init.d/mongo
$ mkdir -p /apps/data/mongobackup_db
$ vim /etc/init.d/mongo/mongo-bak
添加以下內(nèi)容:
#!/bin/bash
sourcepath=''
targetpath='/apps/data/mongobackup_db'
nowtime=$(date +%Y%m%d)
start()
{
${sourcepath}mongodump --host 127.0.0.1:27017 -u renwolebackup -p renwolebackup --out ${targetpath}/${nowtime}
}
execute()
{
start
if [ $? -eq 0 ]
then
echo "back successfully!"
else
echo "back failure!"
fi
}
if [ ! -d "${targetpath}/${nowtime}/" ]
then
mkdir ${targetpath}/${nowtime}
fi
execute
echo "============== back end ${nowtime} =============="
以上腳本中,請(qǐng)注意路徑和文件夾根據(jù)你自己的需求修改。
注意:以上參數(shù)是我自己的實(shí)際使用情況,在使用前一定要認(rèn)真閱讀代碼中的設(shè)置情況。
如果上面代碼執(zhí)行時(shí)報(bào)格式錯(cuò)誤,請(qǐng)?jiān)赪indwos下使用Notepad++轉(zhuǎn)換為Unix格式即可,具體操作如下:
編輯-文檔格式轉(zhuǎn)換-轉(zhuǎn)換為unix格式。
刪除過期7天備份
$ vim /etc/init.d/mongo/mongo-delete
添加如下刪除內(nèi)容:
#!/bin/bash
targetpath='/apps/data/mongobackup_db'
nowtime=$(date -d '-7 days' "+%Y%m%d")
if [ -d "${targetpath}/${nowtime}/" ]
then
rm -rf "${targetpath}/${nowtime}/"
echo "=======${targetpath}/${nowtime}/===刪除成功=="
fi
echo "===$nowtime ==="
設(shè)置權(quán)限
如果不給執(zhí)行權(quán)限則無法運(yùn)行腳本:
$ cd /etc/init.d/mongo
$ chmod +x mongo-bak
$ chmod +x mongo-delete
添加定時(shí)任務(wù)
為達(dá)到每天備份的目的,請(qǐng)?jiān)O(shè)置任務(wù)計(jì)劃:
$ mkdir -p /var/log/mongobaklog
$ crontab –e
添加以下自動(dòng)備份和刪除備份腳本內(nèi)容:
30 03 * * * /etc/init.d/mongo/mongo-bak 1 > /var/log/mongobaklog/mongo-bak.log &
30 01 * * * /etc/init.d/mongo/mongo-delete 1 > /var/log/mongobaklog/mongo-delete &
前面所示分別為每日凌晨3.30和1.30執(zhí)行該腳本的時(shí)間。
其中 mongo-bak 和 mongo-delete 分別是腳本的名稱。后面的是備份日志情況,如果有異??梢酝ㄟ^日志查詢。
分享標(biāo)題:Linux下通過Shell腳本自動(dòng)備份MongoDB
URL分享:http://www.dlmjj.cn/article/dpgeseh.html


咨詢
建站咨詢
