我可以告诉 Google Cloud SQL 将我的备份恢复到一个完全不同的数据库吗?

Can I tell Google Cloud SQL to restore my backup to a completely different database?

因为有 SQL 的每晚备份,我们想知道如何将此备份恢复到同一 MySQL 服务器实例中的不同数据库的好方法。我们所有的生产数据库都有 prod_xxxx,所有的登台数据库都有 staging_xxxx(是的,不是很好,因为它们现在都在同一个 mysql 实例上)。

无论如何,我们很乐意将所有 tables/constraints/etc 和数据从 prod_incomingdb 恢复到 staging_incomingdb。这在云端可能吗 SQL?

我无法弄清楚夜间备份,因为它似乎可以恢复整个实例。我认为以上问题的答案是否定的。我确实发现我可以导出然后导入(虽然不是我想要的,因为我不想在白天导出我们的数据库,但现在,我们可以使用它并在以后自动执行夜间导出)。

由于这是一个生产实例,我建议您在开始之前执行备份,以避免任何数据损坏。

要在同一实例中克隆数据库,没有直接的方法来执行任务(这是 MySQL 上缺少的功能)。

为了在同一个 MySQL 云 SQL 实例中成功克隆数据库,我遵循了这条路径。

1.- 按照这些 steps

使用 Google 云控制台(Web UI)创建所需数据库的转储

*仅以 SQL 格式转储 所需数据库 非常重要,请勿转储 select 多个数据库。

完成该过程后,转储将在 Google 云存储桶中可用。

2.- 使用 linux.

将转储文件下载到 Compute Engine VM 或任何本地计算机

3.- 请替换 USE 子句中的数据库名称(旧的)。

我对下载的转储使用了这个 sed 命令来更改数据库的名称

 sed -i 's/USE `employees`;/USE `emp2`;/g' employees.sql

*这可能需要几秒钟,具体取决于文件的大小。

4.- 将更新后的文件上传到云存储桶。

5.- 在您的 Cloud SQL 实例上创建一个新的空数据库,在这种情况下,我的目标实例称为 emp2

6.- 按照这些 steps

导入修改后的转储