如何将快照恢复到现有的 Aurora 数据库实例?
How can I restore a snapshot to an existing Aurora db instance?
我重新部署了一个 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 了解详情。
I understand that Aurora doesn't support it. Is there a workaround for
me to do that? Like whether I can download the snapshot to local in
plain sql script format. Then manually restore them to the new
instance?
您当然可以通过执行以下操作来实现:
- 将快照还原到新集群(集群 B)。
- 根据您使用的 Aurora 数据库引擎,使用
pgdump
或 mysqldump
从该集群导出数据。我建议在同一 VPC 的 EC2 实例中执行此操作。
- 删除集群 B。
- 删除原始集群(集群 A)中的数据库。
- 将导出的所有数据加载到群集 A。
但是,此时您所完成的只是维护了 RDS 集群的端点 URL。如果您将系统设计为允许更改 RDS 端点 URL,那么您只需将快照恢复到新集群、交换应用程序连接的端点并删除旧集群就会容易得多。
您可以使用Teddy Aryono推荐的方法恢复数据库集群。
现在其余使用数据库主机名,使用秘密管理器存储您的凭据,因此即使在将快照恢复到新集群后数据库主机名发生变化,您也不需要更新 application/lambda 配置。
(当然,您需要在恢复后使用新主机名更新秘密管理器详细信息)
我重新部署了一个 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 了解详情。
I understand that Aurora doesn't support it. Is there a workaround for me to do that? Like whether I can download the snapshot to local in plain sql script format. Then manually restore them to the new instance?
您当然可以通过执行以下操作来实现:
- 将快照还原到新集群(集群 B)。
- 根据您使用的 Aurora 数据库引擎,使用
pgdump
或mysqldump
从该集群导出数据。我建议在同一 VPC 的 EC2 实例中执行此操作。 - 删除集群 B。
- 删除原始集群(集群 A)中的数据库。
- 将导出的所有数据加载到群集 A。
但是,此时您所完成的只是维护了 RDS 集群的端点 URL。如果您将系统设计为允许更改 RDS 端点 URL,那么您只需将快照恢复到新集群、交换应用程序连接的端点并删除旧集群就会容易得多。
您可以使用Teddy Aryono推荐的方法恢复数据库集群。
现在其余使用数据库主机名,使用秘密管理器存储您的凭据,因此即使在将快照恢复到新集群后数据库主机名发生变化,您也不需要更新 application/lambda 配置。 (当然,您需要在恢复后使用新主机名更新秘密管理器详细信息)