如何从 GCP 上的实例备份恢复单个数据库?

Bri*_*gIT 7 mysql google-cloud-sql google-cloud-platform

我是一名新手 GCP 管理员。我在一个实例上运行多个应用程序。每个应用程序都有自己的数据库。我通过 GCP GUI 设置了自动实例备份。

我想为其中一个应用程序(即一个数据库)可能出现的故障做好准备。我想准备一个恢复此类数据库的过程,但在 GCP GUI 中没有恢复一个数据库的选项,我需要恢复整个实例,但由于该实例上其他应用程序的操作,我无法恢复。

我还在文档中读到无法导出备份。

有没有办法从整个实例备份中只恢复一个数据库?

我是否需要编写一个 MySQL 脚本来单独备份每个数据库并将其保存到云存储?

jhs*_*vik 7

就像 Daniel 提到的,您可以使用 gcloud sql 导出/导入来执行此操作。您还需要一个 Google 存储桶。

首先将数据库导出到文件

gcloud sql export sql [instance-name] [gs://path-to-export-file.gz] --database=[database-name]
Run Code Online (Sandbox Code Playgroud)

创建一个空数据库

gcloud sql databases create [new-database-name] --instance=[instance-name]
Run Code Online (Sandbox Code Playgroud)

使用导出文件填充新的空数据库。

gcloud sql import sql [instance-name] [gs://path-to-export-file.gz] --database=[database-name]
Run Code Online (Sandbox Code Playgroud)


Dan*_*ndo 1

截至目前,还没有办法从整个实例备份中仅恢复一个数据库。您可以查看文档,其余应用程序也将经历停机(因为目标实例将无法用于连接,并且现有连接将丢失)。

由于没有内置方法可以从整个备份实例中仅恢复一个数据库,因此您是正确的,编写一个 MySQL 脚本来单独备份每个数据库并使用导入和导出操作(这里是有关云中导入导出操作的相关文档) SQL MySQL 上下文)。

但从实施的角度来看,我建议您为每个应用程序使用单独的 Cloud SQL 实例,然后您可以在某个特定应用程序发生故障时恢复数据库,而不会导致其余应用程序出现停机或问题。