mongodb-consistent-backup 一致性備份工具的使用
- 2019 年 10 月 4 日
- 筆記
官方地址: https://github.com/Percona-Lab/mongodb_consistent_backup
wget https://github.com/Percona-Lab/mongodb_consistent_backup/releases/download/1.4.1/mongodb_consistent_backup-1.4.1-1.el7.x86_64.rpm yum install mongodb_consistent_backup-1.4.1-1.el7.x86_64.rpm
我的mongodb使用的是3.2.16版本,使用binary方式安裝的。
需要確保mongodump能被發現,因此我這裡做了個軟鏈接
ln -s /usr/local/mongodb_3.2.16/mongodump /usr/bin/mongodump
我這裡沒有設置帳號和密碼,因此備份命令很簡單,如下:
mongodb-consistent-backup -H 127.0.0.1 -P 27017 -n production_baks -l /root/mongodb_backups/
## mongodb-consistent-backup -h 可以列出全部支援的參數,常用幾個參數如下:
-H | 連接的IP,如果啟用了多個mongos,可將多個mongos寫入配置,備份進程會自動找到可用的mongos,避免單個mongos進程異常導致的備份失敗。如配置兩個:127.0.0.1:27011, 127.0.0.1:27012 |
|---|---|
-P | 埠,如果在-H指定了埠,此參數可以省略 |
-u | 開啟了認證的用戶名 |
-p | 開啟了認證的密碼 |
-l | 備份的保存路徑 |
-n | 備份的目錄,如果不指定,將創建default作為目錄 |
--rotate.max_backups | 保存的備份數量,默認無限制 |
--rotate.max_days | 備份保留的最大天數,默認無限制 |
--archive.method | 備份保存方式,默認為tar,將備份保存為tar包 |
--backup.mongodump.compression | 備份的壓縮方式,是指每個集合是否壓縮,gzip |
備份文件的恢復步驟:
cd /root/mongodb_backups/ cd production_baks/ cd latest/ 這是一個軟鏈接,始終指向最新的備份文件 tar xf production.tar cd production/dump/ find ./ -type f -name "*.gz" -exec gunzip {} ; 解壓出各個備份文件 最後的恢復命令: /usr/local/mongodb_3.2.16/mongorestore --host 127.0.0.1 --port 27017 --oplogReplay --dir /root/mongodb_backups/production_baks/latest/production/dump/ 備份與mongorestore兼容,並存儲在每個備份的目錄中。必須存在--oplogReplay標誌才能重放oplog以確保一致性。