阿里云mongodb逻辑备份还原预案和恢复oplog增量数据

总结:通过DBS恢复到ECS自建数据库,耗费51分钟,从ECS自建数据库通过DTS迁移数据到阿里云mongodb耗费5分钟.总耗时大概在60分钟以内.
阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第1张图片
通过阿里云DBS恢复mongodb集合的操作步骤:
一:点击下面DBS的备份计划:
阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第2张图片
二:点击“恢复数据库”
阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第3张图片
三:填写需要恢复的时间点,选择ECS自建数据库,输入端口,账号和密码,测试通过
阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第4张图片
四:按需要恢复数据集合,可以恢复整个数据库,或者其中几个集合或者一个集合
阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第5张图片
阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第6张图片
六:点击“立即启动”,进行数据恢复
阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第7张图片
七:下面是恢复进度,这次选择一个集合,全量结构前置恢复进度,全量数据恢复进度 这两个步骤只是需要1分钟就完成.增量日志恢复需要20分钟左右,全量结构后置恢复进度需要28分钟.
阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第8张图片

八:使用阿里云DTS服务进行集合还原目标集合的数据:
阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第9张图片

九:按照要求填写下面内容,进入下一步:
阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第10张图片

十:选择要恢复的对象,进行还原操作,可以更改集合名称:
阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第11张图片

十一:预检查通过,进行下一步:

阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第12张图片

十二:选择购买服务,进行下一步.
阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第13张图片

十三:数据迁移成功.

阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第14张图片
阿里云mongodb逻辑备份还原预案和恢复oplog增量数据_第15张图片
十四:增量还原oplog操作日志
恢复单个文档命令:
mongorestore --host dds-*****.mongodb.rds.aliyuncs.com:3717 -u root --authenticationDatabase admin -d qdy_ecloud_contract_mongodb qdy_ecloud_contract_mongodb/

#oplog全量导出:
pre预发布:
mongodump -h dds-*****.mongodb.rds.aliyuncs.com --port 3717 --username root --password ****** --authenticationDatabase admin -d local -c oplog.rs -o ./pre_oplog_restore_all
2019-12-03T10:14:56.554+0800 writing local.oplog.rs to
2019-12-03T10:14:59.519+0800 [################…] local.oplog.rs 673490/974045 (69.1%)
2019-12-03T10:15:02.475+0800 [########################] local.oplog.rs 974045/974045 (100.0%)
2019-12-03T10:15:02.475+0800 done dumping local.oplog.rs (974045 documents)

#oplog根据条件导出:
文档按照正则表达式和指定的时间进行匹配:
mongodump -h dds-*****.mongodb.rds.aliyuncs.com --port 3717 --username root --password ****** --authenticationDatabase admin -d local -c oplog.rs -q ‘{ts:{KaTeX parse error: Expected 'EOF', got '}' at position 27: …p(1574989801,2)}̲,"ns":{"regex":“contract”}}’ -o ./pre_oplog_restore_incr
2019-12-03T10:30:30.950+0800 writing local.oplog.rs to
2019-12-03T10:30:32.306+0800 done dumping local.oplog.rs (125000 documents)

指定的文档名称和时间:
mongodump -h dds-*****.mongodb.rds.aliyuncs.com --port 3717 --username root --password ****** --authenticationDatabase admin -d local -c oplog.rs -q ‘{ts:{$gt:Timestamp(1574989801,2)},“ns”:“qdy_ecloud_contract_mongodb.contract”}’ -o ./pre_oplog_restore_incr
2019-12-03T10:36:43.052+0800 writing local.oplog.rs to
2019-12-03T10:36:44.206+0800 done dumping local.oplog.rs (57509 documents)

恢复前的文档数:
db.contract.count()
48106
恢复oplog日志:
mongorestore --host dds-*****.mongodb.rds.aliyuncs.com:3717 -u root --authenticationDatabase admin --oplogReplay ./pre_oplog_restore_incr/
出错信息如下,报唯一索引键冲突的错误:
2019-12-03T11:01:03.901+0800 preparing collections to restore from
2019-12-03T11:01:03.901+0800 replaying oplog
2019-12-03T11:01:06.877+0800 oplog 413KB

2019-12-03T11:01:56.795+0800 oplog 6.83MB
2019-12-03T11:01:56.795+0800 Failed: restore error: error applying oplog: applyOps: E11000 duplicate key error collection: qdy_ecloud_contract_mongodb.contract index: index_contract_code dup key: { : null }

恢复后的记录数:
48424

删除唯一索引后,恢复的记录数:49003

重新创建唯一索引:
db.contract.createIndex({code : 1}, {unique: true});

至此,所有增量数据都恢复成功.

你可能感兴趣的:(MongoDB)