在MySQL中,我可以要求它在同一实例中将一个数据库完全克隆到一个新数据库吗?

在MySQL中,我可以要求它在同一实例中将一个数据库完全克隆到一个新数据库吗?,mysql,Mysql,我们想知道是否可以以这样的方式运行一些命令,即可以克隆prod_addressdb以及约束、表模式,然后还可以克隆所有数据 这将避免任何真正的数据传输,并在短期内对我们有很大帮助。如果不进行mysql转储,将其传输到速度较慢的机器上,然后从我的机器上导入速度非常慢的文件,这是一种可能性吗 稍后,像mysqlinstance.prod_addressb->mysqlstaginstance.staging_addressdb这样的点对点也会非常好 有没有办法做到这一点 我们在谷歌云中,导出转储了一

我们想知道是否可以以这样的方式运行一些命令,即可以克隆prod_addressdb以及约束、表模式,然后还可以克隆所有数据

这将避免任何真正的数据传输,并在短期内对我们有很大帮助。如果不进行mysql转储,将其传输到速度较慢的机器上,然后从我的机器上导入速度非常慢的文件,这是一种可能性吗

稍后,像mysqlinstance.prod_addressb->mysqlstaginstance.staging_addressdb这样的点对点也会非常好

有没有办法做到这一点

我们在谷歌云中,导出转储了一个带有“创建数据库prod_addressdb”的文件,因此当我们尝试导入时,它无法转到staging_addressdb位置:(。导出的文件位于云存储中,我不知道如何自动查找并用staging_addressdb替换所有prod_addressdb:(.从多个不同的角度来看这个问题,尝试创建deploy prod的预生产测试位置,以便进行阶段测试、升级和测试

谢谢,
Dean

没有一条SQL语句可以克隆多个表

您可以使用
CREATE TABLE.LIKE.
,但这不包括外键

您可以使用
showcreatetable
,然后在新架构中执行它。这包括外键

您会发现在创建外键之前将数据加载到新表中更容易。然后在复制完数据后运行ALTER TABLE添加外键

然后可以将数据从旧表复制到新表,一次复制一个表:

INSERT INTO <newschema>.<newtable> SELECT * FROM <oldschema>.<oldtable>;
插入。选择*FROM。;

注意:这会在运行副本时锁定您从旧表中读取的数据。我不确定您的数据的大小,也不确定在您的云实例上需要多长时间。但它确实达到了避免数据传输到客户端和服务器的目的。

转储源数据库(例如,通过mysqldump),包括除CREATE DATABASE语句以外的所有对象。创建新数据库并将转储还原到其中。我可以从google cloud中的@Akina运行该命令到哪里?我似乎无法通过google api传递该命令,因为理想情况下,转储将进入google cloud存储,然后返回DB。我们正在使用google cloud build执行此操作,因此不确定d的限制云上的isk空间构建是为了自己做转储,更不用说什么IP到白名单了……它变得非常复杂,这就是为什么我要尝试一个直接命令。对于谷歌云,你可以阅读。哈哈,我和我的同事在发布这篇文章之前已经和文档进行了相当多的斗争。克隆一个实例是我们没有想到的事情(我们试图在实例中克隆数据库)所以我们甚至从来没有研究过那个文档…有趣的pivot是肯定的。天哪,OMG@kmoser,我认为这是一个很棒的选择…我担心将整个数据库下载到我的google云构建中。我可能可以在此基础上读取云存储备份,修改数据库名称,然后直接通过管道,云构建将看到所有的数据l流量很大,但从不使用任何磁盘。这可能正是我搜索的目的,为我指明了正确的方向。我会将其标记为正确的,因为它“足够近”,可以让我再次运行!!!事实上,@kmoser为我指出了一篇惊人的帖子,我可以通过我的云构建实例来传输数据,这非常惊人。它可能会从长远来看,如果我有一个单独的登台实例(现在这家初创公司有点手头拮据),我也会这样做。