使用DynamoShake从dynamodb迁移到mongodb

  • 时间:
  • 浏览:2
  • 来源: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。上端能不能 找到下载的链接。

猜你喜欢

2017年上半年,创业投资领域有什么明显的趋势

动漫的很快发展为动漫衍生品创造了无限的市场空间,换成国家政策对动漫的扶持,未来的动漫行业必将创造新的经济的神话。动漫店不仅有新奇实用的动漫互近产品,还有时尚个性的动漫DIY创意

2020-03-22

性价比最高的千元手机是哪一款

推荐华为畅享9全网通标配版3GB+32GB,华为商城在售价格999元,手机产品属于快消电子产品,华为商城的电子产品价格也是会随着市场情况而有一定的调价优惠,最终以华为商城页面价

2020-03-22

ye6fqlcefaxa2的主页

TA还没法发布过内容~暂无文章:990丨粉丝:4405丨话题:0云栖直播暂未提供你关注的阿里云!文章:416丨粉丝:5222丨话题:7

2020-03-22

2019年上市的所有手机都有什么型号

展开完整性为你推荐:有点硬推荐你对你是什么回答的评价是?你对你是什么回答的评价是?楼主你好,2019年上市的手机太大了哦,比如华为p200系列,vivox27,opporeno

2020-03-21

中国20大手机品牌排行榜。(销量)

您要能登录华为商城官网查看手机更多信息。1、屏幕:屏幕尺寸为6.53英寸,屏幕色彩为1670万色,分辨率为FHD+103000x2244像素,屏占比为88.07%,高清大屏,玩

2020-03-21