我正在MySQL
使用以下命令克隆数据库:
$user@host: mysqldump -u root -p MyOriginalDatabase | mysql -u root -p MyDatabaseCopy
输出如下:
输入密码: 输入密码:
我输入了密码,它一直在执行此操作而没有停止或显示结果,但是,它正确生成了副本,所以我最终通过键盘中断(ctrl + c)取消了执行
我尝试使用相同的命令制作另一个副本,只是更改了副本的名称:
$user@host: mysqldump -u root -p MyOriginalDatabase | mysql -u root -p MyDatabaseCopy2
但是,它给了我以下错误:
错误 1049 (42000):未知数据库“MyDatabaseCopy2”
它从未完成执行,也没有正确复制数据库。
- 为什么它第一次正常工作,然后就不行了?
- 为什么在这两种情况下执行都没有完成?
- 克隆数据库的最佳和推荐方法是
MySQL
什么?
重要的一点是,由于您使用的是管道,因此可能无法从
STDIN
密码读取服务器。您可以将其直接包含在命令调用中:重要提示:
-p
选项和密码之间没有空格。您可以在 的选项-p
中执行相同的操作mysqldump
。如果要将数据库克隆到要从中提取数据库的同一服务器,则必须首先创建目标数据库。
在 MySQL CLI 中:
创建数据库后,您可以运行
mysqldump
:如果您要将数据库克隆到另一台服务器,则可以使用管道;只需确保
--DATABASES
在调用中包含该选项mysqldump
:重要提示:如果您这样做,目标主机上的数据库名称将与源主机上的相同。
如果您想测试该命令是否正常工作,但又不想等待整个数据库被转储,则可以使用
--no-data
(o-d
) 选项创建仅包含结构的转储,不包括每张桌子。:请记住在运行时包含相关选项
mysqldump
。例如,如果数据库具有存储过程或函数,则必须添加选项-R
以便将它们包含在转储中。当它为空白时,是因为它正在克隆,根据您要克隆的数据库的大小,是完成该过程所需的时间。
当您想第二次克隆它时,没有要克隆的数据库,这就是为什么它会给您一个错误,找不到数据库“MyDatabaseCopy2”...在克隆它之前,您必须创建数据库然后克隆成功了……
有不同的方法可以很好地为你工作,看,我会给你几个步骤来执行你想要的过程......(我从互联网资源得到它)
我们需要做的第一件事是将数据库转储到文件中:
第二件事是使用我们的客户端登录 MySQL 服务器:
在服务器内部,我们创建数据库:
我们离开客户:
我们现在可以将转储复制到新创建的数据库中: