MongoDB備份與還原
mongoDB內建了mongodump 與mongorestore備份與還原的功能,可以直接在命令列輸入指令就執行備份與還原,使用mongodump備份出來的資料跟mongodexport的不一樣,mongodexport匯出的檔案可以選擇是csv或者json,但mongodump出來的是二進位檔案,需要透過mongodb專用的GUI軟體,或者是匯入來查看
mongodump 備份
使用mongodump只要輸入一行命令就可以進行備份,假設資料庫的名稱為test,使用者帳號與密碼也是test
1 | mongodump -h 127.0.0.1 -d test -u test -p test -o ./data/mongodb_backup |
這樣就可以將test資料庫的資料備份到data/mongodb_backup的資料夾中
mongorestore 還原
假設要把剛剛備份的test資料庫還原回去,就可以使用mongorestore來進行還原
1 | mongorestore -h 127.0.0.1 -d test -u test -p test --directoryperdb ./data/mongo-backup/test |
這邊要小心的是,因為我們原本就有test這個資料庫,如果進行還原的話,會無法成功,所以在還原之前我們必須先把資料庫刪除,或者是在命令列上加–drop,所以會變成
1 | mongorestore -h 127.0.0.1 -d test -u test -p test --directoryperdb ./data/mongo-backup/test --drop |
使用cron進行定時自動備份
可以使用linux內建的cron定時執行備份程式碼,首先我們必須先建立兩個資料夾,mongodb_bak_now保存的是當日的資料庫,隔天會刪掉並且備份新的資料庫內容,mongodb_bak_list則會存放每天備份的資料庫壓縮檔
mkdir -p /data/mongodb_bak/mongodb_bak_now
mkdir -p /data/mongodb_bak/mongodb_bak_list
之後我們在data/mongodb_bak內建立一個名為MongoDB_bak.sh的檔案,並進行編輯後保存
1 | cd /data/mongodb_bak |
MongoDB_bak.sh內容:
1 | #!/bin/sh |
修改MongoDB_bak.sh的文件屬性,讓系統有權限執行
1 | chmod +x MongoDB_bak.sh |
在crontab加入備份排程
1 | vi /etc/crontab |
根據需要備份的時間設定,這邊假設是root使用者,每天的18:00的時候執行data/mongodb_bak/MongoDB_bak.sh這個檔案,這樣就會每天下午六點的時候,執行我們剛剛建立的檔案
1 | # m h dom mon dow user command |
因為這邊已經改動cron的配置文件,所以我們必須讓cron服務去重新讀取這個檔案,cron的服務管理都要在/etc/init.d/中進行調用,所以先將command line切到/etc/init.d/中
1 | cd /etc/init.d/ |
接著讓cron重新讀取配置
1 | service cron reload |
這樣就設定完排程囉~
MongoDB 教學 – 如何備份與還原 MongoDB
Linux下MongoDB自動備份
Ubuntu cron 定時執行任務
備份及還原MongoDB(mongodump , mongorestore)
Mongo的備份和恢復(mongodump 和mongorestore )
Ubuntu 排程設定 :Crontab 排程使用教學
Mongodb 定時備份和恢復