mongoshake副本集迁移配置

背景:需要从源库迁移到目标库,并且要将其中一个集合转化为时序集合。

经测试,使用mongoshake的机器配置相同的情况下,如果从源库同步到目标库预创建的时序集合,4亿数据量大概5小时左右,而且无法进行增量同步。如果是直接同步只需半小时,可以进行增量同步,最后采用的方式是直接同步,然后停服进行时序集合转换

mongoshake的迁移文档比较老旧,目前最新版是2.8.5,很多参数已经发生变化但是文档依然保留的是老参数。

mongoshake-2.8.5 配置文件实测可用参数如下

conf.version = 10
id = mongoshake
log.level = info
log.dir =
log.file = collector.log
tunnel = direct
# 这里是副本集同步副本集
mongo_urls = mongodb://admin:pwd@172.23.1.3:27218,172.23.1.4:27218,172.23.1.5:27218/admin
sync_mode = all # 全量+增量
incr_sync.tunnel.address = mongodb://admin:pwd@172.23.1.11:27017,172.23.1.12:27017/admin 
incr_sync.mongo_fetch_method = oplog  # 4.0以后可以使用change_stream
#incr_sync.mongo_fetch_method = change_stream
full_sync.collection_exist_drop = false 
checkpoint.storage.url = 
full_sync.create_index = none # 全量完成后是否创建索引
full_sync.executor.insert_on_dup_update = true
full_sync.reader.write_document_parallel = 16 # 并发相关参数,需要根据源端来调整,实测设置太大会造成巨大波动
full_sync.reader.parallel_thread = 16
full_sync.reader.document_batch_size = 512
incr_sync.tunnel.write_thread = 16
filter.namespace.black = config,admin,local # 需要排除的库

时序集合转换流程,注意时序集合不能重命名

# 重命名旧集合
db.latlon.renameCollection("latlon_bak");
# 创建时序集合
db.createCollection("latlon", {
  timeseries: {
    timeField: "uploadTime",
    metaField: "sn",
    granularity: "minutes"
  }
});
# 将旧集合导入时序集合
db.latlon_bak.aggregate([
    { $sort: { sn: 1, uploadTime: 1 } },
    { $out: "latlon" }
], { allowDiskUse: true });


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值