如何从mysqldump恢复转储文件?

我得到了一个MySQL数据库文件,我需要将其恢复为Windows Server 2008机器上的数据库。

我尝试使用MySQL管理员,但我得到以下错误:

所选文件由 Mysqldump,不能恢复 这个应用程序。< / p >

我如何让它工作?

963439 次浏览

它应该像运行这样简单:

mysql -u <user> -p < db_backup.dump

如果转储的是单个数据库,您可能需要在文件顶部添加一行:

USE <database-name-here>;

如果它是许多数据库的转储,则use语句已经在其中。

要运行这些命令,打开一个命令提示符(在Windows中)和cdmysql.exe可执行文件所在的目录(你可能需要四处寻找它,这取决于你如何安装mysql,即独立或作为WAMP包的一部分)。进入该目录后,您应该能够像上面那样键入命令。

当我们使用mysqldump创建转储文件时,它包含一个用于重新创建数据库内容的大型SQL脚本。所以我们通过启动MySQL的命令行客户端来恢复它:

mysql -uroot -p

(其中root是MySQL的管理员用户名),一旦连接到数据库,我们需要命令来创建数据库并将文件读入其中:

create database new_db;
use new_db;
\. dumpfile.sql

详细信息将根据创建转储文件时使用的选项而有所不同。

你只需要运行这个:

mysql -p -u[user] [database] < db_backup.dump

如果转储包含多个数据库,您应该省略数据库名称:

mysql -p -u[user] < db_backup.dump

要运行这些命令,打开一个命令提示符(在Windows中)和cdmysql.exe可执行文件所在的目录(你可能需要四处寻找它,这取决于你如何安装mysql,即独立或作为WAMP包的一部分)。进入该目录后,您应该能够键入命令。

我按照这些步骤使它工作。

  1. 打开MySQL管理员并连接到服务器

  2. 选择左侧的“Catalogs”

  3. 在左下角单击右键,选择“Create New Schema”

    # EYZ0 # EYZ1 < / p >

  4. 命名新的模式(例如:"dbn")

    # EYZ0 # EYZ1 < / p >

  5. 打开Windows命令提示符(cmd)

    # EYZ0 # EYZ1 < / p >

  6. 修改目录为MySQL安装目录

  7. < p >执行命令:

    mysql -u root -p dbn < C:\dbn_20080912.dump
    

    其中“root”是用户名,“dbn”是数据库名,“C:\dbn_20080912.”Dump "是mysqldump .dump文件的路径/文件名

    # EYZ0 # EYZ1 < / p >

  8. 享受吧!

您也可以使用MySQL管理员中的恢复菜单。你只需要打开备份文件,然后点击还原按钮。

如果要恢复的数据库还不存在,则需要首先创建它。

在命令行中,如果你在包含转储文件的同一个目录中,使用这些命令(使用适当的替换):

C:\> mysql -u root -p


mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;

如果备份/转储不是在MySQL管理中创建的,则不能使用MySQL管理中的Restore菜单。不过还是值得一试。如果你选择“忽略错误”的复选框,它会说它成功完成,尽管它显然只导入了一小部分行…注意,这是在垃圾场。

如果你想查看转储的进度,试试这个:

# EYZ0

你当然需要安装“pv”。此命令仅适用于*nix。

您可以尝试SQLyog“执行SQL脚本”工具导入SQL /dump文件。

enter image description here

使用在Linux上创建的200MB转储文件在Windows w/ mysql 5.5上进行恢复,我使用

source file.sql

方法从mysql提示符比用

mysql  < file.sql

在命令行,这导致一些错误2006“服务器已经离开”(在windows)

奇怪的是,在(mysql)安装期间创建的服务指的是一个不存在的my.ini文件。我将“大”示例文件复制到my.ini中 我已经按照建议的增加量进行了修改。< / p >

我的价值观是

[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250
mysql -u username -p -h localhost DATA-BASE-NAME < data.sql

这里-第三步:这样你就不需要USE语句了

./mysql -u <username> -p <password> -h <host-name like localhost> <database-name> < db_dump-file

作为前面回答的一个具体例子:

我需要恢复备份,以便导入/迁移到SQL Server。我只安装了MySql,但没有把它注册为服务,也没有把它添加到我的路径中,因为我不需要让它一直运行。

我用windows资源管理器把我的转储文件放在C:\code\dump.sql。然后从开始菜单项中打开MySql。创建DB,然后运行source命令,使用完整路径,如下所示:

mysql> create database temp
mysql> use temp
mysql> source c:\code\dump.sql

一行命令从mysqldump恢复生成的SQL

mysql -u <username> -p<password> -e "source <path to sql file>;"

运行命令进入DB

 # mysql -u root -p

输入用户密码,然后创建新DB

mysql> create database MynewDB;
mysql> exit

然后退出。Afetr。执行此命令

# mysql -u root -p  MynewDB < MynewDB.sql

然后进入db并键入

mysql> show databases;
mysql> use MynewDB;
mysql> show tables;
mysql> exit

就是这样........您的转储将从一个DB恢复到另一个DB

或者还有另一种转储恢复的方法

# mysql -u root -p

然后进入db并键入

mysql> create database MynewDB;
mysql> show databases;
mysql> use MynewDB;
mysql> source MynewDB.sql;
mysql> show tables;
mysql> exit

如何使用MySQLWorkbench恢复MySQL数据库

您可以在查询选项卡中运行drop和创建命令。

删除当前存在的模式

DROP DATABASE `your_db_name`;

创建新模式

CREATE SCHEMA `your_db_name`;

打开转储文件

MySQLWorkbench open sql file .

  1. 单击在新的查询选项卡中打开SQL脚本图标并选择您的db转储文件。
  2. 然后单击运行SQL脚本…
  3. 然后,它将允许您预览SQL转储脚本的第一行。
  4. 然后您将选择默认模式名
  5. 接下来选择默认字符集 utf8通常是一个安全的赌注,但您可以通过查看预览行来识别像character_set这样的东西。
  6. 点击# EYZ0
  7. 耐心等待大型DB恢复脚本,并看着您的驱动器空间融化!🎉

假设你已经创建了空白数据库,你也可以像这样从命令行恢复数据库:

mysql databasename < backup.sql

如果您已经在mysql提示符中,并假设您的转储文件是dump.sql,那么我们还可以使用下面的命令来恢复转储

mysql> \. dump.sql

如果您的转储大小较大,请将max_allowed_packet值设置为更高。设置此值将帮助您更快地恢复转储。