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

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

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

The selected file was generated by mysqldump and cannot be restored by this application.

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

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
577
0
868 559
17
Перейти к ответу Данный вопрос помечен как решенный

Ответы 17

Ответ принят как подходящий

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

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

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

USE <database-name-here>;

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

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

Я использую «Клиент командной строки MySQL»? Я никогда раньше не использовал MySQL.

Zack Peterson 20.09.2008 01:31

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

Justin Bennett 20.09.2008 01:34

Конечно, сначала должна существовать база данных, которую вы добавляете в оператор using.

Justin Bennett 20.09.2008 01:35

см. ответ vogs. Синтаксис: mysql -u<user> -p mydatabasename < db_backup.dump, нет необходимости в инструкции USE в начале файла.

Toskan 17.01.2014 18:29

Эта функция работает в интерфейсе командной строки MySQL. Обратите внимание, однако, что, чтобы избежать безобидной, но сбивающей с толку серии сообщений об ошибках, при установке Windows необходимо заменять обратную косую черту в строках пути на косую черту. Я также использовал tee для прикрепления файла журнала и запускал SHOW TABLES после каждого восстановления, чтобы продемонстрировать, что оно выполнено.

David A. Gray 23.01.2018 11:06

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

mikato 15.02.2018 00:54

мой файл дампа sql находится на моем локальном компьютере, тогда каким должен быть путь к файлу дампа. Можно ли использовать путь к локальному компьютеру, потому что он не работает для меня. Должен ли я сначала загрузить файл дампа на дисковое пространство удаленного сервера?

Ankit Sahu 29.04.2019 12:55

Как упомянул @Toskan, вам не нужен USE <database-name>; в верхней части файла. Для единственного дампа базы данных вы можете указать имя базы данных в операторе mysql в качестве параметра. Ответ, выбранный как правильный, следует отредактировать с учетом этой информации, поскольку не все замечают полезные комментарии.

surfbuds 30.01.2020 04:00

Когда мы создаем файл дампа с помощью 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) и cd в каталог, где находится исполняемый файл mysql.exe (возможно, вам придется немного поискать его, это будет зависеть от того, как вы установили mysql, т.е. автономно или как часть пакета, такого как WAMP). Оказавшись в этом каталоге, вы сможете просто ввести команду.

Я заставил его работать, выполнив следующие действия ...

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

  2. Слева выберите "Каталоги".

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

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

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

    Новая схема MySQL 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. Наслаждаться!

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

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

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

C:\> mysql -u root -p

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

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

ToughPal 13.01.2010 16:31

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

Joe Holloway 13.09.2011 06:52

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

Chris Cooper 27.01.2012 21:23

это все хорошо, если делать такие вещи вручную, но не работает из сценария bash.

chacham15 05.01.2015 07:14

также - если вы не знаете имя базы данных, запустите: "head -n 30 db_backup.dump", и вы должны увидеть там имя базы данных

ski_squaw 22.08.2015 19:49

Мне нужно было восстановить резервную копию, чтобы я мог импортировать ее в SQL Server. Я установил только MySql, но не зарегистрировал его как службу и не добавил в свой путь, так как у меня нет необходимости держать его в рабочем состоянии. Я просто использовал проводник Windows, чтобы поместить файл дампа в C: \ code \ dump.sql. Затем открыл mySql из пункта меню «Пуск». Создал БД, затем выполнил исходную команду с полным путем: mysql> create database temp mysql> use temp mysql> source c:\code\dump.sql (я добавил ее как ответ ниже, который имеет лучшее форматирование пространства.)

Michael 14.01.2017 01:08

это лучше, поскольку вам не нужно изменять файл дампа, если он взят из одной базы данных.

Buddy 25.09.2017 06:53

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

Marinos An 03.10.2018 21:16

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

Если вы хотите посмотреть, как идет дамп, попробуйте следующее:

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

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

Вы можете попробовать инструмент SQLyog «Выполнить сценарий SQL» для импорта файлов sql / dump.

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

source file.sql

подход из командной строки mysql, чем с

mysql  < file.sql

подход в командной строке, который вызвал некоторую ошибку 2006 «сервер ушел» (в Windows)

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

Мои ценности

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

mysql -u username -p -h localhost DATA-BASE-NAME < data.sql

посмотрите здесь - шаг 3: таким образом вам не нужен оператор USE

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

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

miken32 28.07.2016 21:01

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

Najeeb 12.10.2016 21:44

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

Roland Illig 18.04.2020 19:39

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

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

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

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

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

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

например mysql -u root -p12345678 -e "source /tmp/backup.sql;"

Jossef Harush 27.12.2017 19:10

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

user2473015 11.06.2018 08:44

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

Jossef Harush 11.06.2018 08:56

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

 # mysql -u root -p 

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

mysql> create database MynewDB;
mysql> exit

И сделайте exit.Afetr. Выполните эту команду

# 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

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

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

Отбросьте схему, если она существует в настоящее время

DROP DATABASE `your_db_name`;

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

CREATE SCHEMA `your_db_name`;

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

MySQLWorkbench open sql file

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

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

mysql databasename < backup.sql

Другие вопросы по теме