gpt4 book ai didi

mysql - 如何复制MySQL数据库+包含存储过程(例程)

转载 作者:行者123 更新时间:2023-11-29 13:07:55 24 4
gpt4 key购买 nike

如果我想将数据库复制/备份到同一服务器,我会尝试:

mysqldump -u root -pfirdi --opt fdev | mysql -u root -pfirdi fdev2

但不包括存储过程。

如果我尝试运行:

mysqldump -u root -pfirdi -R --opt fdev | mysql -u root -pfirdi fdev2

(我在行中添加选项“-R”),它仍然不能(挂起)。

有人可以帮助我吗?

谢谢。

最佳答案

我经常使用这样的东西:

mysqldump ... -v -R yourDatabase | mysql ...

如果您的数据库太大,您可能需要先将其转储到文件,然后将其加载到您的服务器中:

mysqldump ... > sqlFile.sql
mysql ... < sqlFile.sql

在 Linux 中,类似这样的方法可能有效:

mysqldump ... > sqlFile.sql && mysql ... < sqlFile.sql && rm sqlFile.sql

这将:

  1. 将数据库转储到sqlFile.sql
  2. sqlFile.sql 加载到新数据库(仅当转储成功时)
  3. 删除sqlFile.sql(仅当加载操作成功时)。

如果其中任何步骤失败,指令将停止。

mysqldump的一些有用选项:

  • --delayed-insert:用途 insert delayed而不是普通的插入。
  • --disable-keys:将每个表的插入指令括在alter table ...禁用键alter table ...启用键<之间。这可能会提高插入速度
  • -v:将 mysqldump 正在执行的操作输出到标准输出。如果您想找出哪张 table 挂着您的转储,这非常有用。
  • -R:同时导出存储过程和函数。
  • -d:仅转储数据结构...如果您想创建数据库"template",它很有用。一起使用 -R-d 会创建一个带有例程的空数据库转储(无数据)。

如果您在导出例程时遇到问题,可以尝试如下操作:

  1. 创建数据库的“无数据”转储:mysql ... -d -R >emptyDbDump.sql`
  2. 使用文本编辑器编辑 emptyDbDump.sql 文件以删除所有表和 View 定义(仅保留存储的函数和过程定义)。
  3. 将这个新的 emptyDbDump.sql 文件加载到您的新数据库中。

查看reference manual了解更多信息。

希望这有帮助

关于mysql - 如何复制MySQL数据库+包含存储过程(例程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22460907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com