本文主要介紹MongoDB在Windows系統和Linux系統中如何實現自動定時備份。
目錄
- MongoDB在Windows系統中實現自動定時備份
- MongoDB在Linux系統中實現自動定時備份
- 備份步驟
- 備份恢復
MongoDB在Windows系統中實現自動定時備份
要在Windows系統中實現自動定時備份MongoDB數據庫,可以使用Windows任務計劃程序和MongoDB自帶的mongodump工具。
下面是MongoDB在Windows系統中實現自動定時備份的操作步驟:
-
創建備份目錄。在計算機上創建一個用于存儲備份文件的目錄。例如,在D盤根目錄下創建一個文件夾,命名為“mongodb_backup”。
-
創建備份腳本。使用文本編輯器(如Notepad++)創建一個批處理文件,命名為“backup.bat”。在備份腳本中輸入以下代碼:
@echo off SET date=%date:~0,4%%date:~5,2%%date:~8,2% SET time=%time:~0,2%%time:~3,2%%time:~6,2% SET datetime=%date%_%time% mongodump -h 127.0.0.1:27017 -d dbName -o "D:/mongodb_backup/%datetime%"
-
設置定時任務。使用Windows系統的任務計劃程序,創建一個新的任務來定時運行備份腳本。在任務計劃程序中創建一個基本任務,并設置以下屬性:
-
在“觸發器”選項卡中,選擇要運行備份腳本的日期和時間。
-
在“操作”選項卡中,將操作設置為“啟動程序”,并輸入備份腳本的路徑和名稱。
-
在“條件”選項卡中,根據需要設置其他選項,例如僅在計算機處于活動狀態時運行任務等。
- 測試備份是否成功。手動運行備份腳本,檢查備份文件是否被正確創建。如果備份文件正確生成,則說明備份已經成功,可以刪除手動創建的備份文件。
這樣就完成了MongoDB在Windows系統中實現自動定時備份的操作步驟。需要注意的是,備份腳本中的“dbName”需要替換為實際要備份的數據庫名稱。另外需要定期清理備份文件,以避免備份文件過多占用磁盤空間。
MongoDB在Linux系統中實現自動定時備份
備份步驟
下面是在Linux系統中使用crontab實現MongoDB自動定時備份的步驟:
- 創建一個備份腳本
首先,創建一個備份腳本,這個腳本將用來執行實際的備份操作。可以使用mongodump命令進行備份。以下是一個簡單的備份腳本,名為mongobackup.sh:
#!/bin/sh
#mongoDB目錄
PATH=/root/mongodb/bin:/sbin:/bin:/usr/sbin:/usr/bin
#設置備份目錄
OUT_DIR=/data/backup/mongod_bak/mongod_bak_now #臨時備份目錄
TAR_DIR=/data/backup/mongod_bak/mongod_bak_list #備份存放路徑
DATE=`date +%Y_%m_%d` #獲取當前系統時間
DB_HOST=127.0.0.1:27017 #數據庫地址和端口號
DB_USER=username #數據庫賬號
DB_PASS=password #數據庫密碼
DB_NAME='-d dbName' #備份的數據庫名稱,-d 不能刪除
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 #創建目錄
mongodump $DB_NAME -h=$DB_HOST -u=$DB_USER -p=$DB_PASS -o $OUT_DIR/$DATE/ #備份全部數據庫
cd $OUT_DIR #進入此目錄
tar -zcvf $TAR_DIR/$TAR_BAK $DATE #壓縮為.tar.gz格式
find $TAR_DIR/ -mtime +$DAYS -delete #刪除7天前的備份文件
上述代碼的功能是執行MongoDB的備份命令,將備份文件夾自動打包成.tar.gz
文件格式,并且可指定保留N
天內的備份文件,過期自動刪除。mongodump命令用于備份MongoDB數據庫,-h選項指定MongoDB服務器的主機地址,-o選項指定備份文件的輸出目錄。
- 給備份腳本授予執行權限
使用chmod命令為備份腳本賦予執行權限:
chmod +x mongobackup.sh
- 添加crontab任務
使用crontab命令添加自動備份任務。例如,以下命令將在每天凌晨2點執行備份操作:
crontab -e
在打開的文件中添加以下內容:
0 2 * * * /path/to/mongobackup.sh
這將在每天凌晨2點運行備份腳本,備份文件將保存在指定的目錄中。
- 驗證備份是否成功
可以手動運行備份腳本來驗證備份是否成功,并檢查備份文件是否正確生成。如果備份文件已經生成,則說明自動備份任務已經成功設置。
使用上述步驟,可以在Linux系統中實現MongoDB自動定時備份,并且可以通過修改crontab任務的配置,來更改備份的時間間隔。
備份恢復
執行以下備份恢復命令即可恢復備份。
mongorestore -d dbName -u=username -p=password --drop /data/backup/mongod_bak/mongod_bak_now/2023_12_12/dbName
這段代碼的具體功能如下:
-
mongorestore:表示使用MongoDB自帶的恢復工具mongorestore。
-
-d dbName:表示將備份數據恢復到名為dbName的數據庫中。
-
-u=username -p=password:表示用于連接MongoDB數據庫的用戶名和密碼。
-
–drop:表示在恢復數據之前刪除目標數據庫中的所有文檔,避免出現沖突。
-
/data/backup/mongod_bak/mongod_bak_now/2023_12_12/dbName:表示備份數據所在的文件夾路徑,即要恢復的備份文件所在的路徑和備份時使用的數據庫名稱。
這段代碼的作用是將指定路徑下的MongoDB備份文件恢復到指定的數據庫RV中,并在恢復前刪除RV中的所有文檔。用戶名和密碼用于連接MongoDB數據庫。