Как восстановить файл дампа из mysqldump?


544

Мне дали файл базы данных MySQL, который мне нужно восстановить как базу данных на моем компьютере с Windows Server 2008.

Я пытался использовать MySQL Administrator, но я получил следующую ошибку:

Выбранный файл был создан mysqldump и не может быть восстановлен этим приложением.

Как мне заставить это работать?

Ответы:


587

Это должно быть так же просто, как запустить это:

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

Если дамп относится к одной базе данных, вам может потребоваться добавить строку вверху файла:

USE <database-name-here>;

Если это был дамп многих баз данных, операторы использования уже там.

Чтобы выполнить эти команды, откройте командную строку (в Windows) и перейдите cdв каталог, где находится mysql.exeисполняемый файл (вам, возможно, придется немного поискать его, это будет зависеть от того, как вы установили mysql, т.е. отдельно или как часть пакет как WAMP). Как только вы окажетесь в этом каталоге, вы сможете просто набрать команду, как у меня выше.


1
Использую ли я «MySQL Command Line Client»? Я никогда не использовал MySQL раньше.
Зак Петерсон

1
Откройте файл дампа в текстовом редакторе, его довольно легко выбрать, если есть какие-либо операторы использования, то это из нескольких баз данных, если их нет, вам придется добавить один вверху, прежде чем вы сможете запустить эту команду.
Джастин Беннетт

6
Конечно, база данных, которую вы помещаете в оператор «using», должна сначала существовать.
Джастин Беннетт

113
смоги ответь. Синтаксис mysql -u<user> -p mydatabasename < db_backup.dump не нуждается в USEутверждении в начале файла
Toskan

1
Предложение «открыть файл дампа в текстовом редакторе» кажется странным. Это может работать с небольшими базами данных или с буферизованным текстовым редактором, таким как EditPad, но со всем остальным он захлебнется. Было бы неплохо, если бы вам не пришлось делать этот шаг.
Микато

719

Если база данных, которую вы хотите восстановить, еще не существует, вам нужно сначала создать ее.

В командной строке, если вы находитесь в том же каталоге, где находится файл дампа, используйте эти команды (с соответствующими заменами):

C:\> mysql -u root -p

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

52
Мне лично нравится этот метод. он показывает ход выполнения дампа, а также точно, сколько времени занимает другой sql.
ToughPal

11
@Phrogz На самом деле вы можете ввести пароль в командной строке, используя mysql -u root -psecret без пробела, но имеет тот недостаток, что ваш пароль отображается в виде открытого текста в списках процессов и файлах журнала. Как вы предлагаете, лучше использовать пустой -pи ввести его в командной строке.
Джо Холлоуэй

Этот метод имеет то преимущество, что позволяет устанавливать переменные на основе сеанса (например, FOREIGN_KEY_CHECKS) без необходимости редактирования файла дампа
Крис Купер,

это все хорошо и замечательно, когда вы делаете подобные вещи вручную, но не работает из скрипта bash.
chacham15

1
Один недостаток: он не может загрузить GZIP-дамп (например, сгенерированный с помощью mysqldump db | gzip -9 > dumpfile.sql.gz)
Marinos

246

Вам просто нужно запустить это:

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

Если дамп содержит несколько баз данных, вы должны опустить имя базы данных:

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

Чтобы выполнить эти команды, откройте командную строку (в Windows) и перейдите cdв каталог, где находится mysql.exeисполняемый файл (вам, возможно, придется немного поискать его, это будет зависеть от того, как вы установили mysql, т.е. отдельно или как часть пакет как WAMP). Как только вы окажетесь в этом каталоге, вы сможете просто набрать команду.



33

Когда мы создаем файл дампа с помощью mysqldump, он содержит большой SQL-скрипт для воссоздания содержимого базы данных. Поэтому мы восстанавливаем его с помощью запуска клиента командной строки MySQL:

mysql -uroot -p 

(где имя rootнашего администратора для MySQL), и после подключения к базе данных нам нужны команды для создания базы данных и чтения файла в нее:

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

Детали будут зависеть от того, какие параметры использовались при создании файла дампа.


19

Запустите команду для входа в БД

 # mysql -u root -p 

Введите пароль для пользователя Затем создайте новую БД

mysql> create database MynewDB;
mysql> exit

И сделайте выход. После этого. Запустите эту команду

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

Затем введите в БД и введите

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

Вот и все ........ Ваш дамп будет восстановлен из одной БД в другую БД

Или есть альтернативный способ восстановления дампа

# mysql -u root -p 

Затем введите в БД и введите

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

14

Я получил его на работу после этих шагов ...

  1. Откройте MySQL Administrator и подключитесь к серверу

  2. Выберите «Каталоги» слева

  3. Щелкните правой кнопкой мыши в левом нижнем поле и выберите «Создать новую схему»

    Администратор MySQL http://img204.imageshack.us/img204/7528/adminsx9.th.gif увеличить изображение

  4. Назовите новую схему (пример: "dbn")

    MySQL New Schema http://img262.imageshack.us/img262/4374/newwa4.th.gif увеличить изображение

  5. Откройте командную строку Windows (cmd)

    Командная строка Windows http://img206.imageshack.us/img206/941/startef7.th.gif увеличить изображение

  6. Перейдите в папку установки MySQL

  7. Выполнить команду:

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

    … Где «root» - это имя пользователя, «dbn» - это имя базы данных, а «C: \ dbn_20080912.dump» - это путь / имя файла mysqldump .dump.

    Командная строка восстановления дампа MySQL http://img388.imageshack.us/img388/2489/cmdjx0.th.gif увеличить изображение

  8. Наслаждайтесь!



11

Если вы хотите просмотреть ход выполнения дампа, попробуйте это:

pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME

Вам, конечно, нужно установить 'pv'. Эта команда работает только на * nix.


10

В качестве конкретного примера предыдущего ответа:

Мне нужно было восстановить резервную копию, чтобы я мог импортировать / перенести ее в SQL Server. Я установил только MySql, но не зарегистрировал его как службу или не добавил его в свой путь, поскольку у меня нет необходимости поддерживать его работу.

Я использовал проводник Windows, чтобы поместить мой файл дампа в C: \ code \ dump.sql. Затем открыл MySql из пункта меню «Пуск». Создал БД, затем запустил команду источника с полным путем, вот так:

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

9

Используя файл дампа 200 МБ, созданный в Linux для восстановления в Windows w / mysql 5.5, я добился большего успеха с

source file.sql

Подход из приглашения MySQL, чем с

mysql  < file.sql

Подход в командной строке, что вызвало некоторые ошибки 2006 "сервер ушел" (на окнах)

Как ни странно, служба, созданная во время (mysql) установки, ссылается на файл my.ini, который не существует. Я скопировал «большой» файл примера в my.ini, который я уже модифицировал с помощью рекомендованных увеличений.

Мои ценности

[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250

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

Это то же самое, что и пара других ответов, и это восьмилетний вопрос.
miken32

2
Хотя выбранный ответ очень хорош, этот ответ был для меня более полезным. Мой файл базы данных был ОГРОМНЫМ, и открытие его в Notepad ++ было кошмаром, он просто не мог обработать размер и не позволил бы мне добавить имя базы данных вверху файла sql. В этом случае возможность указать имя БД из командной строки на самом деле более полезна.
Наджиб

Команда mysqlне принимает пробелы между параметрами и их аргументами. Это должно быть -u<username>вместо этого, и пароль вообще не должен указываться в командной строке.
Роланд Иллиг

4

Вы не можете использовать меню Восстановления в MySQL Admin, если резервная копия / дамп не была создана оттуда. Хотя стоит попробовать. Если вы решите «игнорировать ошибки» с помощью этого флажка, он скажет, что он завершился успешно, хотя он явно завершает работу с импортированной только частью строк ... это с дампом, обратите внимание.


2

Однострочная команда для восстановления сгенерированного SQL из mysqldump

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

1
напр.mysql -u root -p12345678 -e "source /tmp/backup.sql;"
Йосеф Харуш

Не используйте такой пароль, просто используйте -p, и командная строка предложит вам запрос безопасного пароля после того, как вы нажмете ввод.
user2473015

Когда вы можете позволить себе интерактивную подсказку, вы правы. Когда вы не можете (например, автоматический скрипт), вы, вероятно, будете использовать его встроенным
Jossef Harush

1

Вы также можете использовать меню восстановления в MySQL Administrator. Вам просто нужно открыть файл резервной копии, а затем нажать кнопку восстановления.


0

Как восстановить базу данных MySQL с MySQLWorkbench

Вы можете запустить сброс и создать команды на вкладке запроса.

Удалите схему, если она существует

DROP DATABASE `your_db_name`;

Создать новую схему

CREATE SCHEMA `your_db_name`;

Откройте файл дампа

MySQLWorkbench открыть файл sql

  1. Нажмите Открыть скрипт SQL на новой вкладке запроса. и выберите файл дампа данных.
  2. Затем нажмите Run SQL Script ...
  3. Затем он позволит вам предварительно просмотреть первые строки сценария дампа SQL.
  4. Затем вы выберете схемы умолчанию
  5. Затем выберите набор символов по умолчанию utf8, как правило, безопасная ставка, но вы можете разглядеть ее, посмотрев в строки предварительного просмотра что-то вроде персонажа .
  6. щелчок Run
  7. Будьте терпеливы в отношении сценариев восстановления больших БД и наблюдайте, как ваше дисковое пространство тает! 🎉

0

Предполагая, что у вас уже есть пустая база данных, вы также можете восстановить базу данных из командной строки следующим образом:

sudo mysql databasename < backup.sql
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.