官方地址: 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以确保一致性。



另外,乐得DBA的公众号有详细介绍,文章名称: MongoDB Sharding Cluster的一致性备份 ,讲的非常好,推荐阅读下