如果我想将复制/备份数据库放到同一台服务器上,我试试:
mysqldump -u root -pfirdi --opt fdev | mysql -u root -pfirdi fdev2
但不包括存储过程。
如果我试图跑:
mysqldump -u root -pfirdi -R --opt fdev | mysql -u root -pfirdi fdev2
(我在行中添加选项'-R'),它仍然不能(挂起)。
有人可以帮助我吗?
谢谢。
答案 0 :(得分:1)
我经常使用这样的东西:
mysqldump ... -v -R yourDatabase | mysql ...
如果数据库太大,您可能需要先将其转储到文件中,然后将其加载到服务器中:
mysqldump ... > sqlFile.sql
mysql ... < sqlFile.sql
在Linux中,这样的事情可能有用:
mysqldump ... > sqlFile.sql && mysql ... < sqlFile.sql && rm sqlFile.sql
这将:
sqlFile.sql
sqlFile.sql
加载到新数据库(仅当转储成功时)sqlFile.sql
(仅当加载操作成功时)。如果其中任何步骤失败,说明将停止。
mysqldump
的一些有用选项:
--delayed-insert
:使用insert delayed
代替正常插入。--disable-keys
:在alter table ... disable keys
和alter table ... enable keys
之间插入每个表格的插入说明。这可以提高插入速度-v
:输出mysqldump
正在对标准输出执行的操作。如果要查找挂起转储的表,这非常有用。-R
:还导出存储过程和函数。-d
:只转储数据结构......如果你想创建一个数据库&#34;模板&#34;它是很有用的。使用-R
和-d
一起使用例程创建一个空的数据库转储(无数据)。如果您在导出例程时遇到问题,可以尝试这样的事情:
mysql ... -d -R
&gt; emptyDbDump.sql` emptyDbDump.sql
文件以删除所有表和视图定义(仅保留存储的函数和过程定义)。emptyDbDump.sql
文件加载到新数据库。请查看reference manual以获取更多信息。
希望这有帮助