问题描述
我正在尝试将 aurora 集群从我们的一个帐户迁移到另一个帐户。我们实际上没有很多写入请求,而且数据库本身也很小,但不知何故,我们决定尽量减少停机时间。
我研究了几个选项
- 使用快照:切断源数据库中的突变,在另一个帐户中进行快照、共享和恢复。这肯定会导致一些停机时间
- 使用 aurora 克隆:切断源数据库中的突变,克隆目标帐户中的集群并切换到目标数据库。据 AWS 称,克隆比拍摄和恢复快照快得多,因此停机时间应该更短。
- 我不确定是否可以使用 DMS 来执行此操作,因为我没有找到有关跨帐户移动 aurora 的有用文档/教程。另外,我不确定 DMS 是否会在迁移期间将任何写入请求同步到目标数据库。
- 如果 DMS 无法实时同步,那么我可能应该使用 Bucardo 进行实时迁移。
解决方法
查看文档,具有 PostgreSQL 兼容性的 AWS Aurora 被允许作为 source 和 target 端点。因此,回答您的问题,是这是可能的。
显然,您的源 Aurora 数据库应该可以从目标帐户访问。检查 DB 端点是否是公共的,并且流量不受 ACL 规则或 SG 规则的限制。
此外,如果要启用持续复制,则需要向源数据库用户授予 rds_replication
(或 rds_superuser
)角色。 docs 的链接。
实际上,我们最终使用 DMS 进行了这次迁移。我们所做的是:
- 拍摄原始帐户中目标数据库的快照。
- 将快照共享到目标帐户并在那里恢复。 (您必须使用快照来迁移触发器、自定义类型、序列等)
- 在两个帐户之间设置连接(如 VPC 对等或安全组)。
- 在源帐户(端点、复制实例、任务)中设置 DMS
- 编写 SQL 临时禁用/删除加载源数据时可能导致错误的约束、触发器等。
- 使用 DMS 加载源数据并启用持续复制。
- 启用/添加约束、触发器等。
- 迁移后测试