33

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

如何使用 MySQL 工作台解决这个问题?

谢谢!

4

5 回答 5

46
  1. 打开 MySQL 工作台
  2. 创建旧服务器的连接(如果还没有)
  3. 创建新服务器的连接(如果还没有)
  4. 转到服务器管理并单击管理导入/导出
  5. 选择旧服务器
  6. 在“导出到磁盘”选项卡中选择所有模式
  7. 在选项中选择导出到独立文件,等到它完成
  8. 返回服务器管理并单击管理导入/导出
  9. 选择新服务器
  10. 切换到“从磁盘导入”
  11. 点击“从独立文件导入

这是只有 MySQL Workbech 的方式,有时您还没有将它安装在新服务器中,例如在开发到生产场景中,这样您应该执行 mysqlimport 实用程序。

于 2012-09-18T07:28:56.337 回答
9

使用 MySQL Workbench [迁移向导]

要直接将数据库从一台服务器复制到另一台服务器(甚至是本地服务器)而不创建中间导出/转储文件,您可以在 MySQL Workbench 中使用其Migration Wizard执行此操作。转到Database--> Migration Wizard

如果您之前已将源连接和目标连接保存到连接列表,则可以从那里选择它们,或者您可以即时创建新连接(请务必选中将其添加到连接列表的框)。
您还将选择数据库类型,或选择它们的通用版本(不记得它叫什么)并让它弄清楚您拥有什么样的数据库服务器。通常,您可以为 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

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

于 2019-06-24T21:26:39.230 回答
5

要直接复制数据库,无需先进行导出和导入,您可以使用MySQL Utilities命令mysqdbcopy

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

您可以在 WindowscmdMySQL Utilities Console中运行该命令。

于 2018-02-02T10:44:21.903 回答
1

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

  1. 在源服务器的phpmyadmin中,使用“导出”功能,确保

a) 在导出方法中,选择“自定义 - 显示所有可能的选项”

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

c) 在“对象创建选项”中,确保“添加创建数据库/使用语句”也被标记。

导出 SQL 文件。

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

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

于 2014-05-07T03:12:03.270 回答
0

如果您的两个 mysql 服务器都在 linux 环境中运行(即使您的应用程序适用于 windows,这种情况也很有可能),复制数据库的最可靠和快速的方法是在我们复制的服务器上运行这个 oneliner到:

ssh -p <ssh port (usually 22)> host.from.where.we.copy "mysqldump -u my.sql.username.on.from.host -p\"mysql.password (might require some escaping-magic in case you got special characters in there)\" -F -f --databases name.of.database.we.copy | grep -vE \"^(USE|CREATE DATABASE)\" | bzip2 -c -" </dev/null > /tmp/name.of.database.we.copy.sql.bz2; bzip2 -dc /tmp/name.of.database.we.copy.sql.bz2 | mysql -u mysql.username.on.host.we.copy.to -p'mysql.password' new.database.name

例如:

ssh -p 22 example.com "mysqldump -u root -p\"12345\" -F -f --databases mycooldb | grep -vE \"^(USE|CREATE DATABASE)\" | bzip2 -c -" </dev/null > /tmp/mycooldb.sql.bz2; bzip2 -dc /tmp/mycooldb.sql.bz2 | mysql -u someotheruser -p'54321' mynewcooldbcopy

这将在我们复制的主机上进行转储,用 bz2 压缩它,将文件传输到新服务器并将 db 部署到另一个用户(如果需要)并命名

于 2021-11-28T10:17:08.840 回答