全部产品
云市场

数据迁移

更新时间:2019-10-15 10:03:20

我们提供了数据迁移工具来方便的把数据从AWS Dynamodb迁移到阿里云。这个工具可以通过一行命令完成数据的不停机迁移,其中存量数据是通过scan读取,增量数据则是通过stream接口读取的,迁移工具会保证迁移过程中增量数据不被全量数据覆盖。

致谢:迁移工具使用了dynamodb-import-export-tooldynamodb-cross-region-library这两个开源工具的源码,是在这两个工具的基础上做了一些增强。

下面介绍如何使用迁移工具进行数据迁移。

准备工作

1 下载数据迁移工具

  1. wget http://public-cstar.oss-cn-beijing.aliyuncs.com/dynamodb-import-export-tool-1.0.1.jar
  2. java dynamodb-import-export-tool-1.0.1.jar --help ##显示工具帮助

2 配置aws的AK和阿里云的用户名密码。

这两个配置在迁移过程中都需要用到,建议在配置时使用不同的profile来做区分。

  1. $ aws configure
  2. AWS Access Key ID [None]: $ak
  3. AWS Secret Access Key [None]:$sk
  4. Default region name [None]:$region
  5. Default output format [None]:
  6. $ aws configure --profile aliyun
  7. AWS Access Key ID [None]: $username,$password
  8. AWS Secret Access Key [None]:fake
  9. Default region name [None]:fake
  10. Default output format [None]:

3 目标实例的初始化工作

需要在阿里云的实例上面开通Dynamodb功能并创建好要同步的表。这个过程可以参见快速入门

不停机迁移

1 在AWS上对要进行同步的表开启stream,开启时选择“New and old images”。

2 使用如下命令进行同步:

  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

命令执行后,会同时同步增量数据和存量数据。当在日志中看到

  1. INFO com.amazonaws.dynamodb.bootstrap.CommandLineInterface - Finished Copying Table.

表明存量数据迁移完成。此后迁移工具会继续同步新写入的增量数据,增量数据没有进度输出,需要自行根据数据来判断是否追上源表。

3 当增量数据追上源表时,把应用切换到阿里云即可。

只迁移存量数据

如果应用只需要做存量数据的迁移,可以用如下命令:

  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

存量数据迁移完成后,迁移进程退出。

多机并行

可以通过使用多台机器并行处理的方式来加快数据迁移的速度。为此,迁移工具提供了—totalSections 和 —section 这两个选项。例如我们使用三台机器来一起做数据迁移,可以在三台机器上分别运行如下命令:

  1. #机器1
  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 0
  3. #机器2
  4. 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
  5. #机器3
  6. 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