由于有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.-按照以下步骤导入修改后的转储
我无法计算夜间备份,因为它似乎可以恢复整个实例。我认为以上问题的答案是否定的。我确实发现我可以先导出,然后再导入(虽然这不是我想要的,因为我不想在白天导出我们的数据库,但目前,我们可能会这样做,稍后会自动进行夜间导出(。