检索自动 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 <instance-name> | 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