誠邀訪問我的個人博客:我在馬路邊
更好的閱讀體驗點擊查看原文:Shell腳本備份Mongodb數據庫
原創博客,轉載請注明出處
@
項目需要對Mongodb的數據進行定期備份,以免出現什么差錯難以追回,但是數據量比較大,本機硬盤不夠用,還要異地備份,於是乎通過通過dump遠程鏈接目標庫,然后將數據dump到另一個位置,暫時還在執行中,如果有錯誤再進行修改。
環境還原
- Mongodb服務器
A
(Linux),備份機器B
(Windows),備份移動硬盤C。 B
機器可以遠程A
服務器,由於A
和B
服務器的硬盤剩余空間都不夠備份,在B
機器插入移動硬盤C。- 在B機器上通過VirtualBox創建
Linux虛擬機
,與B
機器的移動硬盤C
進行共享文件夾D
。 Linux虛擬機
創建shell腳本,將數據備份到共享文件夾D
。Linux虛擬機
需要安裝Mongodb數據庫,如何安裝數據庫請參考 Centos7安裝MongoDB4.0,以便執行mongodump
命令。
環境創建
Linux虛擬機
在共享目錄<folder>
下創建導出dump的文件夾和將dump文件壓縮的目標文件夾,命令如下:
注:執行的時候請將下面提到的所有<folder>
替換成你的目標目錄,比如/media/sf_mongobak/
# 切換到你的目標目錄
$ cd <folder>
# 創建文件夾
$ mkdir -p dump_bak
$ mkdir -p tar_bak
編寫shell腳本
創建好文件夾后只需要編寫shell腳本就可以了,shell腳本里會用到上述創建的文件夾,如果寫錯了執行的時候會報錯,請注意。
准備文件
# 切換到你的目標目錄
$ cd <folder>
# 創建shell文件
$ sudo touch mongobak.sh
# 編寫文件
$ vi mongobak.sh
創建shell腳本
在mongobak.sh
文件中插入如下內容,為了方便理解下面寫的路徑都是臨時編寫,請將/media/sf_mongobak
自行修改成你的目錄。
# 在文件中編寫如下內容
## 指定到你安裝的Mongodb bin目錄下的mongodump
dump=/usr/local/mongodb/bin/mongodump
## 填寫你創建dump_bak文件的絕對路徑
out_dir=/media/sf_mongobak/dump_bak
## 填寫你創建tar_bak文件的絕對路徑
tar_dir=/media/sf_mongobak/tar_bak
## 記錄備份時間
sysdate=`date +%Y_%m_%d`
db_user=***
db_pass=***
## 設置刪除期限,刪除10天前的備份
days=10
## 設置最終壓縮的文件名稱,帶有日期
tar_bak="mondodb_bak_$sysdate.tar.gz"
cd $out_dir
# 刪除之前的dump文件
sudo rm -rf $out_dir
# 創建新的文件夾存放dump文件
sudo mkdir -p $out_dir/$sysdate
# 導出172.18.9.123機器上的masterdata庫的所有表到$out_dir/$sysdate文件夾
$dump -h 172.18.9.123 -u $db_user -p $db_pass -d masterdata -o $out_dir/$sysdate
# 壓縮$out_dir/$sysdate到目標文件夾
sudo tar -zcvf $tar_dir/$tar_bak $out_dir/$sysdate
# 刪除指定期限錢的備份文件
sudo find $tar_dir/ -mtime +$days -delete
# 退出
exit
注:上面插入的內容請注意空格,比如date +%Y_%m_%d
獲取時間date
和+
號之間就有空格。
導出dump數據的時候根據自己的需求自行修改,dump命令可參考:Mongo的備份和恢復(mongodump 和mongorestore )
執行shell腳本
給文件添加權限,然后shell命令執行。
# 添加權限
$ chmod +x mongobak.sh
# 執行shell腳本
sh +x mongobak.sh
在執行過程中遇到錯誤error running listCollections
,還有其他的錯誤一般就是mongodump
命令使用不對,這里參考了一篇文章:Not able to run mongodump,其他的請自行百度或者Google。
進階版
以上滿足了備份的腳本化,但是如果要做定時任務定期執行,那么就要結合linux的crontab完成,具體使用可參考文章Linux定時任務Crontab使用
感謝
誠邀訪問我的個人博客:我在馬路邊
更好的閱讀體驗點擊查看原文:Shell腳本備份Mongodb數據庫
原創博客,轉載請注明出處