Як відновити дамп-файл із mysqldump?


542

Мені видали файл бази даних MySQL, який мені потрібно відновити як базу даних на моїй машині Windows Server 2008.

Я спробував використовувати MySQL Administrator, але у мене з’явилася така помилка:

Вибраний файл був згенерований mysqldump і не може бути відновлений цим додатком.

Як мені це зробити?

Відповіді:


586

Це має бути таким же простим, як це:

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

Якщо дамп має одну базу даних, можливо, вам доведеться додати рядок у верхній частині файлу:

USE <database-name-here>;

Якщо це був дамп з багатьох баз даних, заяви про використання вже є.

Щоб запустити ці команди, відкрийте командний рядок (у Windows) та cdдо каталогу, де є mysql.exeвиконуваний файл (можливо, вам доведеться трохи оглянути його, це залежатиме від того, як ви встановили mysql, тобто автономно або як частина пакет типу WAMP). Опинившись у цьому каталозі, ви зможете просто ввести команду, як у мене її вище.


1
Чи потрібно використовувати "Клієнт командного рядка MySQL"? Я ніколи раніше не використовував MySQL.
Зак Петерсон

1
Відкрийте дамп-файл у текстовому редакторі, його досить легко провести, якщо є якісь "використовуючі" заяви, то його безліч баз даних, якщо таких немає, вам доведеться додати його вгорі, перш ніж ви зможете запустити цю команду.
Джастін Беннетт

6
Звичайно, спочатку повинна існувати база даних, яку ви вводите в оператор "using".
Джастін Беннетт

112
див відповідь на мопсів. Синтаксис mysql -u<user> -p mydatabasename < db_backup.dump не потребує USEтвердження на початку файлу
Тоскан

1
Пропозиція "Відкрити дамп-файл у текстовому редакторі" здається дивним. Це може працювати з невеликими базами даних або буферизованим текстовим редактором, як EditPad, але з усім іншим він задушиться. Було б добре, якби вам не довелося робити цей крок.
mikato

718

Якщо база даних, яку ви хочете відновити, ще не існує, спершу її потрібно створити.

У командному рядку, якщо ви перебуваєте в тому самому каталозі, який містить вивантажений файл, використовуйте ці команди (з відповідними підмінами):

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) без встановлення файлу дампа
Кріс Купер,

це все добре і чудово, коли ви робите подібні речі вручну, але це не працює з баш сценарію.
чача15

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

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

Потім введіть в db і введіть

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

Це ........ Ваш дамп буде відновлений з однієї БД в іншу БД

Або ж є альтернативний спосіб відновлення дампа

# mysql -u root -p 

Потім введіть в db і введіть

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 Administrator 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" - це шлях / ім'я файлу .qump 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 Explorer, щоб розмістити свій дамп-файл у 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 "сервер пішов" (у Windows)

Дивно, що сервіс, створений під час встановлення (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. У цьому випадку можливість вказувати ім'я db з командного рядка насправді корисніше.
Najeeb

mysqlКоманда не приймає прогалини між опціями і їх аргументами. Він повинен бути -u<username>замість цього, а пароль взагалі не повинен бути вказаний у командному рядку.
Roland Illig

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, і командний рядок запропонує вам захистити пароль після натискання клавіші Enter.
user2473015

Коли ви можете дозволити собі інтерактивне підказку, ви маєте рацію. Коли ви не можете (наприклад, без нагляду сценарію), ви, ймовірно, будете використовувати його в режимі Inline
Джозеф Харуш

1

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


0

Як відновити базу даних MySQL за допомогою MySQLWorkbench

Ви можете запустити краплю та створити команди на вкладці запитів.

Скиньте схему, якщо вона існує

DROP DATABASE `your_db_name`;

Створіть нову схему

CREATE SCHEMA `your_db_name`;

Відкрийте свій дамп-файл

MySQLWorkbench відкритий файл sql

  1. Клацніть Відкрити скрипт SQL у новій вкладці вкладки запитів та оберіть свій db-файл.
  2. Потім натисніть кнопку Запустити сценарій SQL ...
  3. Потім він дозволить переглянути попередні рядки сценарію скидання SQL.
  4. Потім ви виберете ім'я схеми за замовчуванням
  5. Далі виберіть Набір символів за замовчуванням utf8, як правило, є безпечною ставкою, але, можливо, ви зможете відрізнити це, переглядаючи рядки попереднього перегляду для чогось типу набору символів .
  6. Клацніть Виконати
  7. Будьте терплячі до великих сценаріїв відновлення БД і спостерігайте за тим, як ваш диск накопичується! 🎉

0

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

sudo mysql databasename < backup.sql
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.