12

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

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

我也知道我们能够将我们的数据库“导出”到谷歌云存储,但我们希望能够安排“导出”。

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

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

有任何想法吗?

4

5 回答 5

13

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

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

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

于 2016-02-29T18:05:57.853 回答
4

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

  1. 转到IAM 服务账户管理
  2. 创建一个新的服务帐户(我称之为sql-backuper),以 JSON 格式下载它的访问密钥
  3. 在主 IAM 页面上授予查看者、存储对象创建者角色(目前 GCloud 没有单独的 SQL 只读角色)
  4. 在将进行备份的机器上进行设置:( gcloud auth activate-service-account sql-backuper@project-name-123.iam.gserviceaccount.com --key-file /home/backuper/gcloud-service-account.jsongcloud auth 文档
  5. 在GCloud 存储浏览器中创建一个新存储桶
  6. 现在在您的备份机器上,您可以运行:gcloud sql instances export [sql-instance-name] gs://[bucket-name]/[file-name].gz --database [your-db-name]gcloud sql 文档)和 gsutil cp gs://[bucket-name]/[file-name].gz [local-file-name].gzgsutil cp 文档
  7. 你有一个本地数据库副本,现在可以随意使用
于 2016-08-09T18:54:04.783 回答
3

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

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

于 2013-12-05T07:21:30.977 回答
2

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

于 2013-01-02T19:37:44.510 回答
2

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

  1. 单击备份实例中的备份选项(恢复)
  2. 选择在之前启动的实例上恢复
  3. 从新恢复的 CloudSQL 导出数据
  4. 获取 Cloud Storage 上的 .sql 或 .csv
于 2016-11-09T16:03:21.287 回答