如何将快照还原到现有的 Aurora 数据库实例?

问题描述

我重新部署了一个 Auraro 集群(postgresql 11)。我通过删除现有的并重新创建一个来做到这一点。我有一个数据库实例的快照备份,我想将数据恢复到现有实例。

我知道 aurora 不支持它。有没有办法让我做到这一点?比如我是否可以将快照以纯 sql 脚本格式下载到本地。然后手动将它们恢复到新实例?

解决方法

您可以从已保存的数据库集群快照中恢复。要从数据库集群快照还原数据库集群,请使用 AWS CLI 命令 restore-db-cluster-from-snapshot

在本示例中,您将从之前创建的名为 mydbclustersnapshot 的数据库集群快照中恢复。您恢复到名为 mynewdbcluster 的新数据库集群。您使用的是 Aurora PostgreSQL。

示例:

对于 Linux、macOS 或 Unix:

aws rds restore-db-cluster-from-snapshot \
    --db-cluster-identifier mynewdbcluster \
    --snapshot-identifier mydbclustersnapshot \
    --engine aurora-postgresql

对于 Windows:

aws rds restore-db-cluster-from-snapshot ^
    --db-cluster-identifier mynewdbcluster ^
    --snapshot-identifier mydbclustersnapshot ^
    --engine aurora-postgresql

此外,您还可以使用 AWS 管理控制台或 RDS API 来执行此操作。阅读this docs了解详情。

,

我知道 Aurora 不支持它。是否有解决方法 我要这样做吗?比如我是否可以将快照下载到本地 纯sql脚本格式。然后手动将它们恢复到新的 实例?

您当然可以通过执行以下操作来实现:

  1. 将快照恢复到新集群(集群 B)。
  2. 根据您使用的 Aurora 数据库引擎,使用 pgdumpmysqldump 从该集群导出数据。我建议在同一 VPC 中的 EC2 实例中执行此操作。
  3. 删除集群 B。
  4. 删除原始集群(集群 A)中的数据库。
  5. 将导出中的所有数据加载到集群 A 中。

但是,此时您所做的只是维护了 RDS 集群的端点 URL。如果您将系统设计为允许更改 RDS 端点 URL,那么您只需将快照恢复到新集群、交换应用程序连接到的端点并删除旧集群就会容易得多。

,

您可以使用 Teddy Aryono 建议的方法来恢复数据库集群。

现在 rest 正在使用数据库主机名,使用秘密管理器来存储您的凭据,因此即使在将快照恢复到新集群后数据库主机名发生变化,您也不需要更新应用程序/lambda 配置。 (当然,您需要在恢复后使用新主机名更新机密管理器详细信息)