MongoDB备份工具 mongodb consistent_backup

##### https://github.com/Percona-Lab/mongodb_consistent_backup

##### 安装
wget https://github.com/Percona-Lab/mongodb_consistent_backup/releases/download/1.1.0/mongodb_consistent_backup-1.1.0-1.el7.centos.x86_64.rpm
rpm -ivh mongodb_consistent_backup-1.1.0-1.el7.centos.x86_64.rpm


** WARNING: Readahead for /home/mongodb/data1 is set to 4096KB
** We suggest setting it to 256KB (512 sectors) or less

echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
** http://dochub.mongodb.org/core/readahead

###### 搭建副本集
mongod --fork --dbpath /home/mongodb/data1 --logpath /var/log/mongodb1.log --replSet rs0 --port 27017
mongod --fork --dbpath /home/mongodb/data2 --logpath /var/log/mongodb2.log --replSet rs0 --port 27018
mongod --fork --dbpath /home/mongodb/data3 --logpath /var/log/mongodb3.log --replSet rs0 --port 27019


rs.initiate( {
_id : "rs0",
members: [ { _id : 0, host : "127.0.0.1:27017" } ]
})

rs.add("127.0.0.1:27018")
rs.add("127.0.0.1:27019")

db.getSiblingDB("admin").createUser({
user: "mongodb_consistent_backup",
pwd: "123456",
roles: [
{ role: "backup", db: "admin" },
{ role: "clusterMonitor", db: "admin" }
]
})

mongodb-consistent-backup 重要参数
[-n BACKUP.NAME] 备份名称
[-l BACKUP.LOCATION] 备份目录
[-H HOST] 主机
[-P PORT] 端口
[-u USERNAME] 用户名
[-p PASSWORD] 密码

[root@localhost db]# mongodb-consistent-backup --help
usage: mongodb-consistent-backup [-h] [-c CONFIGPATH]
[-e {production,staging,development}] [-V]
[-v] [-H HOST] [-P PORT] [-u USERNAME]
[-p PASSWORD] [-a AUTHDB] [-L LOG_DIR]
[--lock-file LOCK_FILE]
[--sharding.balancer.wait_secs SHARDING.BALANCER.WAIT_SECS]
[--sharding.balancer.ping_secs SHARDING.BALANCER.PING_SECS]
[--archive.method {tar,zbackup,none}]
[--archive.tar.compression {gzip,none}]
[--archive.tar.threads ARCHIVE.TAR.THREADS]
[--archive.zbackup.binary ARCHIVE.ZBACKUP.BINARY]
[--archive.zbackup.cache_mb ARCHIVE.ZBACKUP.CACHE_MB]
[--archive.zbackup.compression {lzma}]
[--archive.zbackup.password_file ARCHIVE.ZBACKUP.PASSWORD_FILE]
[--archive.zbackup.threads ARCHIVE.ZBACKUP.THREADS]
[-n BACKUP.NAME] [-l BACKUP.LOCATION]
[-m {mongodump}]
[--backup.mongodump.binary BACKUP.MONGODUMP.BINARY]
[--backup.mongodump.compression {auto,none,gzip}]
[ --backup.mongodump.threads BACKUP.MONGODUMP.THREADS]
[--notify.method {nsca,none}]
[--notify.nsca.server NOTIFY.NSCA.SERVER]
[--notify.nsca.password NOTIFY.NSCA.PASSWORD]
[--notify.nsca.check_name NOTIFY.NSCA.CHECK_NAME]
[--notify.nsca.check_host NOTIFY.NSCA.CHECK_HOST]
[--oplog.compression {none,gzip}]
[--oplog.flush.max_docs OPLOG.FLUSH.MAX_DOCS]
[--oplog.flush.max_secs OPLOG.FLUSH.MAX_SECS]
[--oplog.resolver.threads OPLOG.RESOLVER.THREADS]
[--oplog.tailer.enabled OPLOG.TAILER.ENABLED]
[--oplog.tailer.status_interval OPLOG.TAILER.STATUS_INTERVAL]
[--replication.max_lag_secs REPLICATION.MAX_LAG_SECS]
[--replication.min_priority REPLICATION.MIN_PRIORITY]
[--replication.max_priority REPLICATION.MAX_PRIORITY]
[--replication.hidden_only]

[root@localhost mongodb]# mongodb-consistent-backup -H 127.0.0.1 -P 27017 -u mongodb-consistent-backup -p 123456 -n prodwebsite -l /home/data/db
[2017-08-14 04:48:11,876] [INFO] [MainProcess] [Main:init:144] Starting mongodb-consistent-backup version 1.1.0 (git commit: 34818a208f53bac476c5d85c2466de8bb170ebc3)
[2017-08-14 04:48:11,877] [INFO] [MainProcess] [Main:init:145] Loaded config: {"archive": {"method": "tar", "tar": {"compression": "gzip"}, "zbackup": {"binary": "/usr/bin/zbackup", "cache_mb": 128, "compression": "lzma"}}, "authdb": "admin", "backup": {"location": "/home/data/db", "method": "mongodump", "mongodump": {"binary": "/usr/bin/mongodump", "compression": "auto"}, "name": "prodwebsite"}, "environment": "production", "host": "127.0.0.1", "lock_file": "/tmp/mongodb-consistent-backup.lock", "notify": {"method": "none"}, "oplog": {"compression": "none", "flush": {"max_docs": 1000, "max_secs": 1}, "tailer": {"enabled": "true", "status_interval": 30}}, "port": 27017, "replication": {"max_lag_secs": 10, "max_priority": 1000}, "sharding": {"balancer": {"ping_secs": 3, "wait_secs": 300}}, "upload": {"gs": {"threads": 4}, "method": "none", "s3": {"chunk_size_mb": 50, "region": "us-east-1", "retries": 5, "secure": true, "threads": 4}}}
[2017-08-14 04:48:11,877] [INFO] [MainProcess] [Stage:init:32] Notify stage disabled, skipping
[2017-08-14 04:48:11,882] [INFO] [MainProcess] [State:init:135] Initializing root state directory /home/data/db/prodwebsite
[2017-08-14 04:48:11,882] [INFO] [MainProcess] [State:load_backups:153] Found 0 existing completed backups for set
[2017-08-14 04:48:11,883] [INFO] [MainProcess] [State:init:119] Initializing backup state directory: /home/data/db/prodwebsite/20170814_0448
[2017-08-14 04:48:11,884] [INFO] [MainProcess] [Stage:init:32] Upload stage disabled, skipping
[2017-08-14 04:48:11,885] [INFO] [MainProcess] [Main:run:269] Running backup in replset mode using seed node(s): 127.0.0.1:27017
[2017-08-14 04:48:11,961] [INFO] [MainProcess] [Main:run:297] Backup method supports compression, disabling compression in archive step
[2017-08-14 04:48:11,961] [INFO] [MainProcess] [Task:compression:38] Setting Tar compression method: none
[2017-08-14 04:48:11,962] [INFO] [MainProcess] [Stage:run:83] Running stage mongodb_consistent_backup.Backup with task: Mongodump
[2017-08-14 04:48:11,964] [INFO] [MainProcess] [Replset:find_primary:153] Found PRIMARY: rs0/127.0.0.1:27017 with optime Timestamp(1502698446, 1)
[2017-08-14 04:48:11,964] [INFO] [MainProcess] [Replset:find_secondary:229] Found SECONDARY rs0/127.0.0.1:27018: {'priority': 1, 'lag': 0.0, 'optime': Timestamp(1502698446, 1), 'score': 100}
[2017-08-14 04:48:11,965] [INFO] [MainProcess] [Replset:find_secondary:229] Found SECONDARY rs0/127.0.0.1:27019: {'priority': 1, 'lag': 0.0, 'optime': Timestamp(1502698446, 1), 'score': 100}
[2017-08-14 04:48:11,965] [INFO] [MainProcess] [Replset:find_secondary:239] Choosing SECONDARY rs0/127.0.0.1:27018 for replica set rs0 (score: 100)
[2017-08-14 04:48:11,967] [WARNING] [MainProcess] [Mongodump:threads:126] Threading unsupported by mongodump version 3.0.4. Use mongodump 3.2.0 or greater to enable per-dump threading.
[2017-08-14 04:48:11,967] [WARNING] [MainProcess] [Mongodump:threads:126] Threading unsupported by mongodump version 3.0.4. Use mongodump 3.2.0 or greater to enable per-dump threading.
[2017-08-14 04:48:11,967] [INFO] [MainProcess] [Mongodump:run:158] Starting backups using mongodump 3.0.4 (options: threads_per_dump=None, mongodump=3.0.4, git=efe71bf185cdcfe9632f1fc2e42ca4e895f93269, compression=auto)
[2017-08-14 04:48:11,972] [INFO] [MongodumpThread-2] [MongodumpThread:run:140] Starting mongodump backup of rs0/127.0.0.1:27018
[2017-08-14 04:48:11,982] [INFO] [MongodumpThread-2] [MongodumpThread:wait:107] rs0/127.0.0.1:27018: writing captured oplog to /home/data/db/prodwebsite/20170814_0448/rs0/dump/oplog.bson
[2017-08-14 04:48:11,984] [INFO] [MongodumpThread-2] [MongodumpThread:run:176] Backup rs0/127.0.0.1:27018 completed in 0.01 seconds, 0 oplog changes
[2017-08-14 04:48:15,974] [INFO] [MainProcess] [Mongodump:wait:110] All mongodump backups completed successfully
[2017-08-14 04:48:15,975] [INFO] [MainProcess] [Stage:run:92] Completed running stage mongodb_consistent_backup.Backup with task Mongodump in 4.01 seconds
[2017-08-14 04:48:15,976] [INFO] [MainProcess] [Stage:run:83] Running stage mongodb_consistent_backup.Archive with task: Tar
[2017-08-14 04:48:16,008] [INFO] [MainProcess] [Tar:run:56] Archiving backup directories with pool of 1 thread(s)
[2017-08-14 04:48:16,009] [INFO] [PoolWorker-3] [TarThread:run:41] Archiving directory: /home/data/db/prodwebsite/20170814_0448/rs0
[2017-08-14 04:48:18,011] [INFO] [MainProcess] [Stage:run:92] Completed running stage mongodb_consistent_backup.Archive with task Tar in 2.04 seconds
[2017-08-14 04:48:18,012] [INFO] [MainProcess] [Main:update_symlinks:167] Updating prodwebsite latest symlink to: /home/data/db/prodwebsite/20170814_0448
[2017-08-14 04:48:18,013] [INFO] [MainProcess] [Main:run:473] Completed mongodb-consistent-backup in 6.13 sec

##### 恢复
mongod --fork --dbpath /home/mongodb/data4 --logpath /var/log/mongodb4.log --port 27020
cd /home/data/db/prodwebsite/20170814_0449
tar -zvf rs0.tar 
mongorestore --host 127.0.0.1 --port 27020 --oplogReplay --dir /home/data/db/prodwebsite/20170814_0531/rs0/dump/

原文地址:https://www.cnblogs.com/hyming011/p/8251682.html