将整个数据库复制到另一个服务器数据库

时间:2012-09-18 07:21:44

标签: mysql mysql-workbench

我目前正在开发一个带有MySQL后端的Windows应用程序。 现在我想将旧的数据库结构和数据复制到新的数据库服务器。

如何使用MySQL workbench解决此问题

谢谢。

4 个答案:

答案 0 :(得分:34)

  1. 打开MySQL Workbench
  2. 创建旧服务器的连接(如果没有)
  3. 创建新服务器的连接(如果没有)
  4. 转到“服务器管理”,然后单击“管理导入/导出”
  5. 选择旧服务器
  6. 在“导出到磁盘”选项卡中选择所有架构
  7. 在选项中选择导出到自包含文件,等待完成
  8. 返回“服务器管理”,然后单击“管理导入/导出”
  9. 选择新服务器
  10. 切换到“从磁盘导入”
  11. 点击“从自包含文件导入
  12. 这是仅使用MySQL Workbech的方式,有时你没有将它安装在新服务器中,比如在开发到生产场景中,这样就应该执行mysqlimport实用程序。

答案 1 :(得分:2)

要直接复制数据库而不先导出导入,可以使用MySQL Utilities命令mysqdbcopy

mysqldbcopy --source=root:root@localhost --destination=root:root@localhost world:world_clone

您可以在Windows cmd MySQL Utilities Console 中运行该命令。

答案 2 :(得分:1)

如果您安装了 phpmyadmin ,则可以使用以下步骤:

  1. 在源服务器的 phpmyadmin 中,使用“导出”功能,确保
  2. a)在导出方法中,选择“自定义 - 显示所有可能的选项”

    b)在“格式特定选项”中,确保选择“结构和数据”。

    c)在“对象创建选项”中,确保也标记了“ ADD CREATE DATABASE / USE语句”。

    导出SQL文件。

    1. scp 从源服务器到目标服务器的导出文件

    2. 在目标服务器的phpmyadmin中,使用“导入”功能,将SQL文件导入数据库。导入过程中无需选择自定义选项。

答案 3 :(得分:0)

要在不创建中间导出/转储文件的情况下将数据库从一台服务器直接复制到另一台服务器(甚至是本地服务器),可以在MySQL Workbench中使用向导进行操作。转到Database-> Migration Wizard(编辑:docs

如果以前已将源连接和目标连接保存到“连接”列表中,则可以从中选择源连接或目标连接,也可以动态创建新连接(请确保选中将其添加到“连接”列表中的框)。
您还将选择数据库类型,或选择其通用版本(不记得它的名字了),然后让它确定您拥有哪种数据库服务器。通常,您可以为MySQL数据库或MariaDB数据库选择MySQL,因为MariaDB通常被设计为MySQL的“二进制替代品”。

当它要求您选择哪些数据库时,据我了解,INFORMATION_SCHEMA是只读的,不应选择。否则,除非您有特定需求,否则,如果要克隆服务器(以及可能与其相关的网站),则可能选择所有其他表。

从那里开始,您将让MySQL Workbench完成其工作。在将模式从旧服务器反向工程到新服务器的过程中,请继续单击下一步,直到最终将数据复制过来。

您可以在很多地方进行更改,然后再继续。此外,您还可以选择在此过程中查看潜在的问题和警告。

完成后,您仍需要为克隆的数据库添加用户(手动?)。也可能有一种自动的方法来克隆用户表,但我对此一无所知。您可以从命令行执行此操作(如果没有其他操作)。由于我将其用于我的本地开发人员,因此我只能自己添加。

我不确定使用此工具会比以通常的方式导出和导入数据库更快。但这肯定更容易。
实际上,此工具是为在不同类型的数据库(例如PostgressSQL和MySQL)之间进行更复杂的迁移而设计的,而不是作为一种通用工具(例如,将实时数据库的副本检索到本地开发服务器,反之亦然)而设计。

在同一菜单下,有Database-> Schema Transfer Wizard,在您需要更新到新服务器版本时,可以使用它。我不清楚这两个工具之间的差异,也不清楚它们的实际用例。

关于如何执行标准导入/导出操作的说明,在MySQL工作台中,文档为SQL Data Export and Import WizardTable Data Export and Import Wizard

如果可以直接通过选择Connections(而不是保存然后读取转储文件)直接在dev服务器和实时服务器之间导入/导出,那将很酷。
我认为可以通过命令行完成。