使用DynamoShake从dynamodb迁移到mongodb

  • 时间:
  • 浏览:0
  • 来源:5分3DAPP下载_5分3DAPP官网

精确校验的事先,或者 启用抽样,这麼会对每个doc进行抽样,判断当前doc与非 须要抽样。原理比较简单,比如按1000%抽样,这麼再0~1000中产生另一好多个 随机数,或者 是0~1000的就校验,反之不校验。

DynamoFullCheck或者 从源DynamoDB拉取也须要经过fetch,parse阶段,什么都一定程度上,该帕累托图代码复用了DynamoShake,不同的是DynamoFullCheck内控 各个fetcher, parser, executor守护tcp连接并发度都是1。

这麼亲戚朋友提供2种转换法律法律法律依据,raw和change,其中raw什么都按照裸的dynamodb接口获取的数据写入:

10.15或者 开源,欢迎关注。

本小节主要介绍DynamoShake的帕累托图架构细节

DynamoFullCheck是另一好多个 用于校验DynamoDB和MongoDB数据与非 一致的工具,目前仅支持全量校验,不支持增量,也什么都说,或者 增量同步阶段,这麼源和目的是不一致的。

DynamoFullCheck只支持单向校验,也什么都校验DynamoDB的数据与非 MongoDB的子集,反向不进行校验。

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

校验主要分为以下几帕累托图:

所有源端的表会写入到目的的另一好多个 库(默认是dynamo-shake)的不同表中,比如用户有table1,table2,这麼同步事先,目的端会有个dynamo-shake的库,库上端有table1和table2的表。

在原生的dynamodb中,协议是寄包裹 邮寄了一层类型字段,其格式是“key: type: value”格式,类似用户插入了一条{hello: 1},这麼dynamodb接口获取的数据是{"hello": {"N": 1}}的格式。

Dynamo所有的数据类型:

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

change表示剥离类型字段:

根据默认的primary key创建另一好多个 唯一索引,或者 根据partition key创建shard key。用户我本人的索引gsi目前不进行创建。

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

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

全量同步不支持断点续传功能,增量同步支持断点续传,也什么都说或者 增量断开了,一定时间内恢复是能不能 只进行增量的断点续传。但在某些清况 下,比如断开的时间过久,或者 事先的位点(参考下文)丢失,这麼都是原因 重新触发全量同步。

用户能不能 根据我本人的需求制定我本人的同步类型。

status: 目前同步的阶段,一共有以下好多个清况 :

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

增量整体架构如下:



Fetcher守护tcp连接负责感知stream中shard的变化,Manager负责进行消息的通知,或者 创建新的Dispatcher进行消息的防止,另一好多个 shard对应另一好多个 Dispatcher。Dispatcher从源端拉取增量数据,并通过Batcher进行数据解析和打包整合,或者 通过executor进行写入到MongoDB,同都是更新checkpoint。另外,或者 是断点续传,这麼Dispatcher会从旧的checkpoint位点刚开始拉取,而都是从头刚开始拉。

DynamoDB支持全量和增量的同步,守护tcp连接启动都是先进行全量同步,全量同步刚开始后进入增量同步的阶段。

全量同步分为数据同步和索引同步两帕累托图,数据同步用于同步数据,数据同步刚开始后或者 进行索引的同步,索引同步会同步默认的primary key,用户自建的索引GSI或者 MongoDB是副本集支持,集群版目前暂时不支持同步。

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

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

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

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

github地址:https://github.com/alibaba/nimoshake。上端能不能 找到下载的链接。

猜你喜欢

相亲男天天说想我喜欢我,想要跟我结婚,说结婚就能跟我在一起了,是不是太随便了

展开删改为你推荐:本回答被日本日本前老外采纳换一换收起更多回答(2)你对这俩 回答的评价是?使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。展开删改

2020-01-27

与prepStmtCacheSize相关精彩内容

作者:zysql4593人浏览mysqlprepare原理数据存储与数据库服务器mysqlOracleSQLCache测试kernelpreparePreparedStatem

2020-01-27

谈了两年多的男朋友前几天吵架,说他累了,分手了。说现在不想谈恋爱。加上还有几个月要毕业了,他说在毕

扫描二维码下载追问使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。追问可选中有另一个 或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个

2020-01-27

因为自身原因很多,所以一直很孤单的单着,看见别人可以成双成对,心里好难堪,情何以堪,没运气去拍拖只

追问展开完正可选中另另另一一个多或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个疑问报告 。扫描二维码下载本回答由男友见面 推荐下载百度知道APP,抢鲜体验

2020-01-27