我正在尝试使用AWS DMS将数据从巴黎地区(eu-west-3)中的源数据库(AWS RDS MySQL)移至爱尔兰地区(eu-west-中的目标数据库(AWS Redshift)) 1)。目标是不断复制正在进行的更改。
我遇到了这类错误:
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实例位于同一区域,因为它们需要共享一个子网
答案 0 :(得分:1)
AWS提供了this whitepaper,称为“将AWS资源迁移到新的AWS区域”,该服务已于去年更新。您可能需要联系他们的支持,但是一个想法是在迁移到Redshift之前,将您的RDS移到适当区域中的另一个RDS。在白皮书中,它们提供了另一种迁移RDS的方法(如果您出于某些原因不想使用DMS,则无需DMS):
- 停止所有事务或拍摄快照(但是,此时间点之后的更改会丢失,可能需要重新应用于 目标Amazon RDS数据库实例)。
- 使用临时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命令导出数据。
- 使用CP,FTP或Rsync等标准工具将此数据复制到目标区域中的实例。
- 使用新的Amazon RDS安全组在目标区域中启动新的Amazon RDS数据库实例。
- 导入保存的数据。
- 验证数据库是否处于活动状态并且您的数据是否存在。
- 在源区域中删除旧的Amazon RDS数据库实例
答案 1 :(得分:0)
我找到了当前正在测试的解决方法。
我将“ Postgres”声明为Redshift集群的引擎类型。它欺骗AWS DMS认为它是一个外部数据库,并且AWS DMS不再检查区域。
我认为这将导致性能下降,因为DMS可能会使用INSERT(而不是COPY命令)将数据提供给Redshift。
答案 2 :(得分:0)
当前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