检索自动 Google Cloud SQL 备份

Posted

技术标签:

【中文标题】检索自动 Google Cloud SQL 备份【英文标题】:Retrieving Automated Google Cloud SQL Backups 【发布时间】:2012-12-17 03:27:01 【问题描述】:

我的团队要求我们能够检索数据库的备份(托管在 Google Cloud SQL 上)并将该数据库恢复到本地托管的 mysql 实例。

我知道 Google Cloud SQL 能够安排备份,但这些似乎无法在任何地方下载。

我也知道我们能够将我们的数据库“导出”到 Google Cloud Storage,但我们希望能够安排“导出”。

这里的最终目标是在某种管理脚本中执行以下步骤:

    自动备份托管在 Google Cloud SQL 上的数据库。 将备份下载到本地(非云)服务器。 将备份还原到 MySQL 的本地实例。

有什么想法吗?

【问题讨论】:

3年后,jmwicks给出了正确答案 【参考方案1】:

gcloud sdk 命令现在提供导入/导出功能:

gcloud sql export sql <DATABASE_INSTANCE> \
    gs://<CLOUD_STORAGE_BUCKET>/cloudsql/export.sql.gz \
    --database <DATABASE_NAME>

可以使用gsutil 下载此导出。也可以使用mysqlimport导入

【讨论】:

您还需要为 sql 实例 (gcloud sql instances describe &lt;instance-name&gt; | grep -i account) 授予服务帐户Storage Object Creator 权限,以便它可以在存储桶中创建转储文件。 此命令已弃用,将在版本 205.0.0 中删除。请改用gcloud sql export sql【参考方案2】:

这是我遇到的问题,我的解决方案是:

    转到IAM Service Accounts Management 创建一个新的服务帐户(我称之为sql-backuper),以 JSON 格式下载它的访问密钥 在主 IAM 页面上授予查看者、存储对象创建者角色(目前 GCloud 没有单独的 SQL 只读角色) 在将进行备份的机器上进行设置: gcloud auth activate-service-account sql-backuper@project-name-123.iam.gserviceaccount.com --key-file /home/backuper/gcloud-service-account.json (gcloud auth documentation) 在GCloud Storage Browser创建一个新的bucket 现在您可以在备份计算机上运行:gcloud sql instances export [sql-instance-name] gs://[bucket-name]/[file-name].gz --database [your-db-name] (gcloud sql documentation) 和 gsutil cp gs://[bucket-name]/[file-name].gz [local-file-name].gz (gsutil cp documentation) 您已经获得了一个本地数据库副本,您现在可以随意使用它

【讨论】:

这应该是公认的答案,因为它涵盖了所有要求【参考方案3】:

请注意,您现在可以使用Cloud SQL REST API 触发Export 操作。

因此您的管理脚本可以执行此操作,然后从 Cloud Storage 下载备份(不过,您需要等到导出操作完成)。

【讨论】:

【参考方案4】:

抱歉,Cloud SQL 目前没有此功能。我们希望将来更容易做到这一点。同时,您可以将 Selenium(或其他一些 UI 脚本框架)与 cron 作业结合使用。

【讨论】:

继续并将其标记为答案,因为它是。但这似乎是功能上的一个很大的漏洞。【参考方案5】:

如果您想下载备份(手动或自动),您可以启动另一个 CloudSQL 实例,然后:

    点击备份实例中的备份选项(恢复) 选择在之前启动的实例上恢复 从新恢复的 CloudSQL 中导出数据 在 Cloud Storage 上获取 .sql 或 .csv

【讨论】:

以上是关于检索自动 Google Cloud SQL 备份的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Datastore备份 - 已弃用?

无法从在具有自定义运行时的 Docker 中运行 .NET Core 应用程序的 App Engine 连接到 Google Cloud SQL 中的 postgres

Google Cloud Bigtable 备份和恢复

Google Cloud Storage 数据的备份选项或快照?

检索旧版本的 Google Cloud 函数源

GKE 上的 Google Cloud PubSub:尝试检索凭据时出现 FileNotFoundException