如何复制 Google Cloud MySQL 数据库用于开发目的?

How to duplicate Google Cloud MySQL database for development purposes?

我有点卡住了,我最近切换到 Google Cloud MySQL 我想克隆我的一个数据库(不是实例)用于自由职业者的外部开发环境。

想法是 clone/duplicate 现有的实时数据库,然后废弃敏感数据(电子邮件等...)。 我知道我需要使用 "gcloud" 命令行功能,但我真的不知道该怎么做。

有人可以帮助我吗?

最简单的方法是将第一个实例上的备份还原到新实例。我建议您查看云 SQL documentation around backups

示例步骤:

gcloud sql backups create --async --instance [SOURCE_INSTANCE_NAME]
  • 您可以通过以下方式查看源实例的备份 ID 列表:
gcloud sql backups list --instance [SOURCE_INSTANCE_NAME]
gcloud sql backups restore [BACKUP_ID] --restore-instance=[TARGET_INSTANCE_NAME] \
                                       --backup-instance=[SOURCE_INSTANCE_NAME]

您也可以通过控制台执行上述所有操作。

  • 恢复完成后,您可以remove the backup。最简单的方法是通过控制台,但如有必要,也可以通过 REST API 完成。

当然,没有 gcloud 命令可以执行您描述的数据清理,您需要根据自己的数据和匿名要求自行执行。除非您的敏感数据数量非常有限,否则做好匿名化可能会很棘手。


如果您只想导出单个数据库,则可以使用 export and import functionality。这会受到一些限制,例如触发器、存储过程和可能的视图等将需要手动重新创建。

Full instructions for export,但这里有一个简短的摘要。

您将需要一个云存储桶来保存输出,并且数据库的服务帐户需要是该桶的写入者。一旦到位:

gcloud sql export sql [INSTANCE_NAME] gs://[BUCKET_NAME]/[DUMP_FILE_NAME] \
                                      --database=[DATABASE_NAME]

然后您可以下载该文件并在本地数据库中使用它,或者 import it into a new instance,如下所示:

gcloud sql import sql [INSTANCE_NAME] gs://[BUCKET_NAME]/[DUMP_FILE_NAME] \
                                      --database=[DATABASE_NAME]

显然,清理数据仍然取决于您。