问题描述
我重新部署了一个 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脚本格式。然后手动将它们恢复到新的 实例?
您当然可以通过执行以下操作来实现:
- 将快照恢复到新集群(集群 B)。
- 根据您使用的 Aurora 数据库引擎,使用
pgdump
或mysqldump
从该集群导出数据。我建议在同一 VPC 中的 EC2 实例中执行此操作。 - 删除集群 B。
- 删除原始集群(集群 A)中的数据库。
- 将导出中的所有数据加载到集群 A 中。
但是,此时您所做的只是维护了 RDS 集群的端点 URL。如果您将系统设计为允许更改 RDS 端点 URL,那么您只需将快照恢复到新集群、交换应用程序连接到的端点并删除旧集群就会容易得多。
,您可以使用 Teddy Aryono 建议的方法来恢复数据库集群。
现在 rest 正在使用数据库主机名,使用秘密管理器来存储您的凭据,因此即使在将快照恢复到新集群后数据库主机名发生变化,您也不需要更新应用程序/lambda 配置。 (当然,您需要在恢复后使用新主机名更新机密管理器详细信息)