使用DynamoShake从dynamodb迁移到mongodb

  • 时间:
  • 浏览:3
  • 来源:uu快3输钱_uu快3赢钱诀窍_豹子

DynamoFullCheck是原本用于校验DynamoDB和MongoDB数据是否是一致的工具,目前仅支持全量校验,不支持增量,也否则 否则 说,可能性增量同步阶段,没办法 源和目的是不一致的。

DynamoFullCheck只支持单向校验,也否则 否则 校验DynamoDB的数据是否是MongoDB的子集,反向不进行校验。

另外,还支持抽样校验,支持只校验感兴趣的表。

校验主要分为以下几偏离 :

其中status_table表中"status_value" : "incr_sync"表示进入了增量阶段。增量的每个shard后会 记录原本checkpoint,关于具体shard分裂的规则可不要能参考dynamodb的guan'fa官方文档。下面是增量表checkpoint的各个字段的说明:

所有源端的表会写入到目的的原本库(默认是dynamo-shake)的不同表中,比如用户有table1,table2,没办法 同步之前 ,目的端会有个dynamo-shake的库,库里面有table1和table2的表。

在原生的dynamodb中,协议是国际国际邮包了一层类型字段,其格式是“key: type: value”格式,类似 用户插入了四根{hello: 1},没办法 dynamodb接口获取的数据是{"hello": {"N": 1}}的格式。

Dynamo所有的数据类型:

启动:./dynamo-shake -conf=dynamo-shake.conf,配置参数在dynamo-shake.conf中指定,以下是各个参数的意义:

全量同步不支持断点续传功能,增量同步支持断点续传,也否则 否则 说可能性增量断开了,一定时间内恢复是可不要能只进行增量的断点续传。但在否则 情况汇报下,比如断开的时间过久,可能性之前 的位点(参考下文)丢失,没办法 后会 是原应重新触发全量同步。

没办法 我门歌词 都提供2种转换最好的办法,raw和change,其中raw否则 否则 按照裸的dynamodb接口获取的数据写入:

本小节主要介绍DynamoShake的偏离 架构细节

增量的断点续传是根据位点来实现的,默认的位点是写入到目的MongoDB中,库名是dynamo-shake-checkpoint。每个表后会 记录原本checkpoint的表,同样后会 有原本status_table表记录当前是全量同步还是增量同步阶段。

用户可不要能根据此人 的需求制定此人 的同步类型。

下图是基本的原本table的数据同步架构图(dynamo-shake会启动多个并发tcp连接运行tableSyncer进行拉取,用户可控并发度),fetchertcp连接运行从源端dynamodb拉取数据后将数据推入队列,紧接着parsertcp连接运行从队列中拿取数据并进行解析(dynamo协议转bson),executor负责聚合偏离 数据并写入mongodb。

精确校验的之前 ,可能性启用抽样,没办法 会对每个doc进行抽样,判断当前doc是否是可不要能抽样。原理比较简单,比如按50%抽样,没办法 再0~50中产生原本随机数,可能性是0~50的就校验,反之不校验。

DynamoFullCheck可能性从源DynamoDB拉取也可不要能经过fetch,parse阶段,否则 否则 一定程度上,该偏离 代码复用了DynamoShake,不同的是DynamoFullCheck內部各个fetcher, parser, executortcp连接运行并发度全部后会 1。

根据默认的primary key创建原本唯一索引,否则根据partition key创建shard key。用户此人 的索引gsi目前不进行创建。

full-check参数稍微简单点,直接用的命令行注入,类似 :./dynamo-full-check --sourceAccessKeyID=BUIASOISUJPYS5OP3P5Q --sourceSecretAccessKey=TwWV9reJCrZhHKSYfqtTaFHW0qRPvjXb3m8TYHMe --sourceRegion=ap-east-1 -t="10.1.1.1:50441" --sample=50

去年和今年年初,我门歌词 都开源了MongoShake和RedisShake分别用于MongoDB和Redis的迁移、同步、备份等多种需求。最近,我门歌词 都的shake系列又进一步壮大,我门歌词 都推出了一款dynamodb迁移的工具:dynamo-shake(叫雪nimo-shake)。目前支持从dynamodb迁移到MongoDB,后续我门歌词 都后会 考虑支持多种通道,比如直接文件备份、迁移至kafka,可能性迁移到别的数据库如cassandra,redis等。

github地址:https://github.com/alibaba/nimoshake。里面可不要能找到下载的链接。

change表示剥离类型字段:

10.15可能性开源,欢迎关注。

增量整体架构如下:



Fetchertcp连接运行负责感知stream中shard的变化,Manager负责进行消息的通知,可能性创建新的Dispatcher进行消息的防止,原本shard对应原本Dispatcher。Dispatcher从源端拉取增量数据,并通过Batcher进行数据解析和打包整合,否则通过executor进行写入到MongoDB,同后会 更新checkpoint。另外,可能性是断点续传,没办法 Dispatcher会从旧的checkpoint位点现在结速了了拉取,而全部后会 从头现在结速了了拉。

status: 目前同步的阶段,一共有以下几条情况汇报:

DynamoDB支持全量和增量的同步,tcp连接运行运行启动后会 先进行全量同步,全量同步现在结速了了后进入增量同步的阶段。

全量同步分为数据同步和索引同步两偏离 ,数据同步用于同步数据,数据同步现在结速了了后可能性进行索引的同步,索引同步会同步默认的primary key,用户自建的索引GSI可能性MongoDB是副本集支持,集群版目前暂时不支持同步。

增量同步只同步数据,不同步增量同步过程中产生的索引。

此外,全量和增量同步阶段不支持对原本的库表进行DDL操作,比如删表,建表,建索引等。