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

lio*_*lio 2 mysql google-cloud-sql gcloud

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

这个想法是克隆/复制现有的实时数据库,然后废弃敏感数据(电子邮件等)。我知道我需要使用“gcloud”命令行功能,但我真的不知道该怎么做。

有人能帮我吗 ?

rob*_*emb 7

最简单的方法是将第一个实例上的备份恢复到新实例。我建议您查看有关备份的 Cloud SQL文档

示例步骤:

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

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

  • 还原完成后,您可以删除备份。执行此操作的最简单方法是通过控制台,但如有必要,也可以通过 REST API 完成。

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


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

export 的完整说明,但这里有一个快速摘要。

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

gcloud sql export sql [INSTANCE_NAME] gs://[BUCKET_NAME]/[DUMP_FILE_NAME] \
                                      --database=[DATABASE_NAME]
Run Code Online (Sandbox Code Playgroud)

然后,您可以下载文件并在本地数据库上使用它,或者将其导入新实例,如下所示:

gcloud sql import sql [INSTANCE_NAME] gs://[BUCKET_NAME]/[DUMP_FILE_NAME] \
                                      --database=[DATABASE_NAME]
Run Code Online (Sandbox Code Playgroud)

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