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



由于有SQL的夜间备份,我们想知道在同一MySQL服务器实例中将此备份恢复到不同数据库的好方法。我们所有的生产数据库都有prod_xxx,所有的暂存数据库都有staging_xxxx(是的,不太好,因为它们现在都在同一个mysql实例上(。

无论如何,我们希望将prod_incomingdb中的所有表/约束等和数据恢复到staging_incomingdb。这在云SQL中可能吗?

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

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

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

1.-按照以下步骤,使用谷歌云控制台(Web UI(创建所需数据库的转储

*仅以SQL格式转储所需的数据库非常重要,请不要在转储中选择多个数据库。

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

2.-将转储文件下载到计算引擎虚拟机或任何使用linux的本地机器。

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

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

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

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

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

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

6.-按照以下步骤导入修改后的转储

我无法计算夜间备份,因为它似乎可以恢复整个实例。我认为以上问题的答案是否定的。我确实发现我可以先导出,然后再导入(虽然这不是我想要的,因为我不想在白天导出我们的数据库,但目前,我们可能会这样做,稍后会自动进行夜间导出(。

相关内容

  • 没有找到相关文章

最新更新