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