我们提供了数据迁移工具来方便的把数据从AWS Dynamodb迁移到阿里云。这个工具可以通过一行命令完成数据的不停机迁移,其中存量数据是通过scan读取,增量数据则是通过stream接口读取的,迁移工具会保证迁移过程中增量数据不被全量数据覆盖。
致谢:迁移工具使用了dynamodb-import-export-tool和dynamodb-cross-region-library这两个开源工具的源码,是在这两个工具的基础上做了一些增强。
下面介绍如何使用迁移工具进行数据迁移。
1 下载数据迁移工具
wget http://public-cstar.oss-cn-beijing.aliyuncs.com/dynamodb-import-export-tool-1.0.1.jar
java dynamodb-import-export-tool-1.0.1.jar --help ##显示工具帮助
2 配置aws的AK和阿里云的用户名密码。
这两个配置在迁移过程中都需要用到,建议在配置时使用不同的profile来做区分。
$ aws configure
AWS Access Key ID [None]: $ak
AWS Secret Access Key [None]:$sk
Default region name [None]:$region
Default output format [None]:
$ aws configure --profile aliyun
AWS Access Key ID [None]: $username,$password
AWS Secret Access Key [None]:fake
Default region name [None]:fake
Default output format [None]:
3 目标实例的初始化工作
需要在阿里云的实例上面开通Dynamodb功能并创建好要同步的表。这个过程可以参见快速入门。
1 在AWS上对要进行同步的表开启stream,开启时选择“New and old images”。
2 使用如下命令进行同步:
java -jar dynamodb-import-export-tool-1.0.1.jar --destinationTable $DEST_TABLE --sourceTable $SOURCE_TABLE --destinationEndpoint $ALIYUN_ENDPOINT --destinationCredentials aliyun --writeThroughputRatio 0.5 --sourceEndpoint $AWS_ENDPOINT --readThroughputRatio 0.5 --replicateStream --sourceRegion $SOURCE_REGION --destinationRegion us-east-2 --dontPublishCloudwatch
命令执行后,会同时同步增量数据和存量数据。当在日志中看到
INFO com.amazonaws.dynamodb.bootstrap.CommandLineInterface - Finished Copying Table.
表明存量数据迁移完成。此后迁移工具会继续同步新写入的增量数据,增量数据没有进度输出,需要自行根据数据来判断是否追上源表。
3 当增量数据追上源表时,把应用切换到阿里云即可。
如果应用只需要做存量数据的迁移,可以用如下命令:
java -jar dynamodb-import-export-tool-1.0.1.jar --destinationTable $DEST_TABLE --sourceTable $SOURCE_TABLE --destinationEndpoint $ALIYUN_ENDPOINT --destinationCredentials aliyun --writeThroughputRatio 0.5 --sourceEndpoint $AWS_ENDPOINT --readThroughputRatio 0.5
存量数据迁移完成后,迁移进程退出。
可以通过使用多台机器并行处理的方式来加快数据迁移的速度。为此,迁移工具提供了—totalSections 和 —section 这两个选项。例如我们使用三台机器来一起做数据迁移,可以在三台机器上分别运行如下命令:
#机器1
java -jar dynamodb-import-export-tool-1.0.1.jar --destinationTable $DEST_TABLE --sourceTable $SOURCE_TABLE --destinationEndpoint $ALIYUN_ENDPOINT --destinationCredentials aliyun --writeThroughputRatio 0.5 --sourceEndpoint $AWS_ENDPOINT --readThroughputRatio 0.5 --replicateStream --sourceRegion $SOURCE_REGION --destinationRegion us-east-2 --dontPublishCloudwatch --totalSections 3 --section 0
#机器2
java -jar dynamodb-import-export-tool-1.0.1.jar --destinationTable $DEST_TABLE --sourceTable $SOURCE_TABLE --destinationEndpoint $ALIYUN_ENDPOINT --destinationCredentials aliyun --writeThroughputRatio 0.5 --sourceEndpoint $AWS_ENDPOINT --readThroughputRatio 0.5 --replicateStream --sourceRegion $SOURCE_REGION --destinationRegion us-east-2 --dontPublishCloudwatch --totalSections 3 --section 1
#机器3
java -jar dynamodb-import-export-tool-1.0.1.jar --destinationTable $DEST_TABLE --sourceTable $SOURCE_TABLE --destinationEndpoint $ALIYUN_ENDPOINT --destinationCredentials aliyun --writeThroughputRatio 0.5 --sourceEndpoint $AWS_ENDPOINT --readThroughputRatio 0.5 --replicateStream --sourceRegion $SOURCE_REGION --destinationRegion us-east-2 --dontPublishCloudwatch --totalSections 3 --section 2
在文档使用中是否遇到以下问题
更多建议
匿名提交