fbpx

MongoDB 教學 – 如何備份與還原 MongoDB


mongo-db-alternate-logoMySql 我們常用 mysqldump 命令備份資料,MongoDB 也一樣帶有基本的資料庫匯出匯入工具,就是 mongodump 與 mongorestore 這兩個命令列工具。Document Database 不同於 Relational Database,所匯出的資料並不是可以直接閱讀的 SQL 本文檔,而是一般的二進位檔案。這些工具在實務上其實都只能用在備份資料量比較小的環境中,如果資料庫已經好幾 T,不管是 MySQL 還是 MongoDB 這樣傳統的備份方法就不適用了,還是要用到 Replication 或 Sharding 這些 Online Backup 的方式比較好用。

利用 mongodump 命令備份 Mongo 資料庫

透過以下命令進行資料庫備份:

mongodump -h 127.0.0.1 -d my-mongo -o ./mongo-backup

mongodump 常用參數說明如下:

-h: 要備份的 MongoDB 連線位置
-d: 要備份的 Database 名稱
-u: 資料庫使用者名稱
-p: 資料庫密碼

執行完成後會在 mongo-backup 目錄下產生備份檔案,以資料庫名稱作為資料夾進行分類。執行畫面如下:

mongodump

利用 mongorestore 命令還原 Mongo 資料庫

要還原剛剛備份的資料庫可以透過以下命令

mongorestore -h 127.0.0.1 -d my-mongo-new --directoryperdb ./mongo-backup/my-mongo

常用參數說明如下:

-h: 要還原的 MongoDB 連線位置
-d: 要還原的 Database 名稱
-u: 資料庫使用者名稱
-p: 資料庫密碼
--directoryperdb: 指定要還原的資料庫檔案來源目錄名稱
--drop: 如果資料庫存在就刪除重新建立 (小心使用)

執行畫面如下:

mongorestore

還原 MongoDB 發生錯誤

如果沒有設定預設環境編碼,還原資料庫時會出現以下錯誤:

只要設定一下 LC_ALL 這個環境變數即可排除,如下:

export LC_ALL="en_US.UTF-8"

Linux 建立每日備份 Shell Script

上述 Script 如果不給 $database 就會全部備份,需要的人請自行享用,謝謝。

MongoDB 系列文章