1

我正在尝试使用 AWS DMS 将数据从巴黎地区 (eu-west-3) 的源数据库 (AWS RDS MySQL) 移动到爱尔兰地区 (eu-west-1) 的目标数据库 (AWS Redshift)。目标是不断复制正在进行的更改。

我遇到了这些错误:

An error occurred (InvalidResourceStateFault) when calling the CreateEndpoint operation: The redshift cluster datawarehouse needs to be in the same region as the current region. The cluster's region is eu-west-1 and the current region is eu-west-3.

文档说:

使用 AWS DMS 的唯一要求是您的终端节点之一必须位于 AWS 服务上。

所以我想做的应该是可能的。在实践中,这似乎是不允许的。

如何使用 AWS DMS 从一个区域到另一个区域?我的端点应该在哪个区域?我的复制任务应该在哪个区域?我的复制实例必须与 RDS MySQL 实例位于同一区域,因为它们需要共享一个子网

4

3 回答 3

1

AWS 提供了这份名为“将 AWS 资源迁移到新的 AWS 区域”的白皮书,该白皮书于去年更新。您可能想联系他们的支持,但一个想法是将您的 RDS 移动到适当区域的另一个 RDS,然后再迁移到 Redshift。在白皮书中,它们提供了一种迁移 RDS 的替代方法(如果您出于某种原因不想使用 DMS,则不使用 DMS):

  1. 停止所有事务或拍摄快照(但是,此时间点之后的更改将丢失,可能需要重新应用到目标 Amazon RDS 数据库实例)。
  2. 使用临时 EC2 实例,将所有数据从 Amazon RDS 转储到文件中:
    • 对于 MySQL,请使用 mysqldump 工具。您可能想要压缩此转储(请参阅 bzip 或 gzip)。
    • 对于 MS SQL,使用 bcp 实用程序将数据从 Amazon RDS SQL 数据库实例导出到文件中。您可以使用 SQL Server 生成和发布脚本向导为整个数据库或仅为选定对象创建脚本。 36
    • 注意:Amazon RDS 不支持 Microsoft SQL Server 备份文件恢复。
    • 对于 Oracle,请使用 Oracle 导出/导入实用程序或数据泵功能(请参阅 http://aws.amazon.com/articles/AmazonRDS/4173109646282306)。
    • 对于 PostgreSQL,您可以使用 pg_dump 命令导出数据。
  3. 使用 CP、FTP 或 Rsync 等标准工具将此数据复制到目标区域中的实例。
  4. 使用新的 Amazon RDS 安全组在目标区域中启动一个新的 Amazon RDS 数据库实例。
  5. 导入保存的数据。
  6. 验证数据库是否处于活动状态并且您的数据存在。
  7. 删除源区域中的旧 Amazon RDS 数据库实例
于 2018-09-03T13:54:46.283 回答
1

我找到了一个我目前正在测试的解决方法。

我将“Postgres”声明为 Redshift 集群的引擎类型。它诱使 AWS DMS 认为它是一个外部数据库,并且 AWS DMS 不再检查区域。

我认为这会导致性能下降,因为 DMS 可能会使用 INSERTs 而不是 COPY 命令将数据提供给 Redshift。

于 2018-09-05T11:00:56.630 回答
1

目前 Redshift 必须与复制实例位于同一区域。

Amazon Redshift 集群必须与复制实例位于同一 AWS 账户和同一 AWS 区域中。

https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Redshift.html

所以应该在 VPC 内的 Redshift 区域中创建复制实例,然后使用VPC 对等连接使复制实例能够连接到另一个区域中 MySQL 实例的 VPC

https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html

于 2018-09-07T16:02:06.823 回答