mongodb 定時備份

2021-09-22 21:19:06 字數 3174 閱讀 6000

通過centos 腳步來執行備份操作,使用crontab實現定時功能,並刪除指定天數前的備份

具體操作:

1、建立mongodb資料庫備份目錄

mkdir -p /home/backup/mongod_bak/mongod_bak_now

mkdir -p /home/backup/mongod_bak/mongod_bak_list

2、新建mongodb資料庫備份指令碼

vi /home/crontab/mongod_bak.sh #新建檔案,輸入以下**

#!/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天前的備份檔案

3、修改檔案屬性,使其可執行

chmod +x /home/crontab/mongod_bak.sh

4、修改/etc/crontab #新增計畫任務

crontab -e
#在下面新增

30 1 * * * root /home/crontab/mongod_bak.sh #表示每天凌晨1點30執行備份
5、重新啟動crond使設定生效

/sbin/service crond reload #重新載入配置

chkconfig --level 35 crond on #加入開機自動啟動:

/sbin/service crond start #啟動服務

crontab -l #列出crontab檔案

每天在/home/backup/mongod_bak/mongod_bak_list目錄下面可以看到mongod_bak_2017_02_28.tar.gz這樣的

壓縮檔案。

至此,linux下自動備份mongodb資料庫並刪除指定天數前的備份完成。

附錄:mongodb資料庫恢復

恢復全部資料庫:

mongorestore –drop –directoryperdb 

/home/backup/mongod_bak/mongod_bak_now/2017_02_28/

恢復單個資料庫:

mongorestore –drop -d dataname –directoryperdb 

/home/backup/mongod_bak/mongod_bak_now/2017_02_28/dataname

–drop引數:恢復資料之前刪除原來資料庫資料,避免資料重複。

–directoryperdb引數:資料庫備份目錄

-d引數:後面跟要恢復的資料庫名稱

關於crontab

crontab命令常見於unix和類unix的作業系統之中,用於設定週期性被執行的指令。該命令從標準輸入裝置讀取指令,並將其存放於「crontab」檔案中,以供之後讀取和執行。該詞**於希臘語 chronos(χρ?νο?),原意是時間。

通常,crontab儲存的指令被守護程序啟用, crond常常在後台執行,每一分鐘檢查是否有預定的作業需要執行。這類作業一般稱為cron jobs。

安裝crontab:

[root@centos ~]# yum install vixie-cron

[root@centos ~]# yum install crontabs

說明:

vixie-cron軟體包是cron的主程式;

crontabs軟體包是用來安裝、卸裝、或列舉用來驅動 cron 守護程序的**的程式。

cron 是linux的內建服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:

/sbin/service crond start #啟動服務

/sbin/service crond stop #關閉服務

/sbin/service crond restart #重啟服務

/sbin/service crond reload #重新載入配置

檢視crontab服務狀態:

service crond status
手動啟動crontab服務:

service crond start
其他命令:

#檢視crontab服務是否已設定為開機啟動,執行命令:

ntsysv

#加入開機自動啟動:

chkconfig --level 35 crond on

#列出crontab檔案

crontab -l

#編輯crontab檔案

crontab -e

#刪除crontab檔案

$ crontab -r

#恢復丟失的crontab檔案

#假設你在自己的$home目錄下還有乙個備份,那麼可以將其拷貝到/var/spool/cron/,其中是使用者名稱

#或者使用如下命令其中,是你在$home目錄中副本的檔名

crontab

linux下定時備份mongodb資料

在linux伺服器上通過用shell語言 python完成對mongo庫的定時備份 通過命令nohup python u mongod back.py out.log 2 1 掛在指令碼,每天0點執行mongodb資料備份。import time import schedule import os ...

mongodb 備份壓縮 mongodb備份與恢復

mongodb是目前最流行的nosql資料庫,其自身也提供了備份與恢復命令 具體程式為mongodump和mongorestore 一 mongodump備份 mongodump的具體用法可以檢視幫助 error required parameter is missing in host expor...

Linux 定時備份你的MongoDB資料庫

前段時間,我個人的伺服器資料庫莫名其妙就被刪了,得知情況的我淚流滿面。後來我搜了很多關於恢復資料庫的資料,但是基本都是依賴備份去恢復的,而身為小白的我卻沒有定時備份我的資料庫。幸虧我的資料庫裡面的資料還不算多,就打算從頭開始。經過這次疼痛的教訓,當時我第一件事就是給我的伺服器上乙個定時備份的指令碼,...