国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務(wù)器 > Linux服務(wù)器 > 正文

Linux中MongoDB如何實(shí)現(xiàn)遠(yuǎn)程自動備份詳解

2024-09-05 23:04:59
字體:
供稿:網(wǎng)友

前言

看過上一篇接手老項(xiàng)目的痛——MongoDB學(xué)習(xí)及集群搭建知道,最近接手了一個后媽養(yǎng)的項(xiàng)目,項(xiàng)目的數(shù)據(jù)庫沒有人維護(hù),DBA以各種理由推脫暫時不接,面對裸奔沒有備份的數(shù)據(jù)庫,我的內(nèi)心很焦灼,于是花了點(diǎn)時間把生產(chǎn)環(huán)境的自動備份給搞起來。

下面話不多說了,來一起看看詳細(xì)的介紹吧

一些準(zhǔn)備

既然都備份了,為了保險起見,備份與庫就不放在同一臺服務(wù)器上了,于是向運(yùn)維申請了一臺服務(wù)器,同時安裝好mongo,如果不知道怎么安裝mongo的話可以看我的上一篇文章

安裝完之后,首先測試下是否可以遠(yuǎn)程訪問目標(biāo)mongodb,到安裝好mongo的bin目錄下

./mongo 10.100.1.101:27017 #目標(biāo)mongo的ip及端口

然后創(chuàng)建些必要的目錄,比如備份文件放在哪個目錄之類的。

接下來測試下利用mongodump來備份數(shù)據(jù)庫:

./bin/mongodump --host test/10.100.1.101:27017,10.100.1.102:27017 -d testdb --out /data/temp# test為副本集名稱# 10.100.1.101:27017,10.100.1.102:27017為副本集節(jié)點(diǎn),有多個可以多個# -d testdb是要備份的庫名,不填默認(rèn)副本集下全部# --out 保存路徑

到這里,mongo的備份已經(jīng)實(shí)現(xiàn),現(xiàn)在要完成的就是自動啦。

編寫腳本

自動定時備份其實(shí)就是通過crontab命令來實(shí)現(xiàn)啦。但前提是我們需要編寫個定時跑的腳本。首先我們新建個腳本:

vi /home/local/mongod_bak.sh

然后編寫對應(yīng)的腳本,腳本上有對應(yīng)的注釋,供大家參考,這里主要做了三個動作,首先是備份,然后將備份的文件壓縮,然后只保留最近7天的文件。

#!/bin/bashsourcepath='/home/local/mongodb/bin'  #mongodb文件路徑targetpath='/home/local/mongodb_bak' #備份的路徑nowtime=$(date +%Y-%m-%d-%H)replicationname='test'  #副本集名dbname='testdb' #庫名port='27017' #端口ip1='10.100.1.101' #ipip2='10.100.1.102'echo "============== start backup ${nowtime} =============="start(){ ${sourcepath}/mongodump --host ${replicationname}/${ip1}:${port},${ip2}:${port} -d ${dbname} --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}fiexecuteecho "============== back end ${nowtime} =============="echo "============== start zip ${nowtime} =============="zip -r ${targetpath}/${nowtime}.zip ${targetpath}/${nowtime}rm -rf ${targetpath}/${nowtime}echo "============== zip end ${nowtime} =============="echo "============== start delete seven days ago back ${nowtime} =============="find ${targetpath} -type f -mtime +7 -name "*" -exec rm -rf {} /; echo "============== delete end ${nowtime} =============="

編寫完之后,給到文件可執(zhí)行權(quán)限,并可以手動執(zhí)行測試下:

chmod +x /home/local/mongod_bak.sh

定時任務(wù)

最后就是添加執(zhí)行計(jì)劃了,修改/etc/crontab

crontab -e

添加執(zhí)行腳本,保存即可。

30 1 * * * /home/local/mongod_bak.sh #表示每天凌晨1點(diǎn)30執(zhí)行備份

這里簡單介紹下crontab。

crontab命令常見于Unix和類Unix的操作系統(tǒng)之中,用于設(shè)置周期性被執(zhí)行的指令。該命令從標(biāo)準(zhǔn)輸入設(shè)備讀取指令,并將其存放于crontab文件中,以供之后讀取和執(zhí)行。

通常,crontab儲存的指令被守護(hù)進(jìn)程激活, crond常常在后臺運(yùn)行,每一分鐘檢查是否有預(yù)定的作業(yè)需要執(zhí)行。這類作業(yè)一般稱為cron jobs。

一些常用命令可以參考下:

#啟動服務(wù)/sbin/service crond start #關(guān)閉服務(wù)/sbin/service crond stop #重啟服務(wù)/sbin/service crond restart #重新載入配置/sbin/service crond reload #查看crontab服務(wù)狀態(tài)service crond status #手動啟動crontab服務(wù)service crond start #查看crontab服務(wù)是否已設(shè)置為開機(jī)啟動,執(zhí)行命令:ntsysv#加入開機(jī)自動啟動:chkconfig --level 35 crond on#列出crontab文件crontab -l#編輯crontab文件crontab -e#刪除crontab文件$ crontab -r#恢復(fù)丟失的crontab文件#假設(shè)你在自己的$HOME目錄下還有一個備份,那么可以將其拷貝到/var/spool/cron/<username>,其中<username >是用戶名#或者使用如下命令其中,<filename>是你在$HOME目錄中副本的文件名crontab <filename>

總結(jié)

慢工出細(xì)活,有些東西一開始覺得很難很麻煩,但當(dāng)你靜下心來認(rèn)真研究下,還是很容易理解的,畢竟你不是第一個踩坑的,所以還是好好學(xué)習(xí)吧。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到服務(wù)器教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 平乡县| 房产| 平顶山市| 黔江区| 广昌县| 深水埗区| 田林县| 昌邑市| 华阴市| 嘉定区| 额敏县| 太白县| 雷山县| 都江堰市| 镇康县| 天全县| 建平县| 兴宁市| 丰镇市| 达日县| 登封市| 阿图什市| 会东县| 沐川县| 田东县| 宜春市| 辽阳县| 阜宁县| 湘潭市| 宁都县| 建德市| 凌云县| 惠东县| 和硕县| 石首市| 马边| 固安县| 邳州市| 珲春市| 五原县| 乌鲁木齐市|