MySQL восстановление в другую базу данных - PullRequest
18 голосов
/ 26 января 2012

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

mysqldump -u root --opt --skip-extended-insert --databases my_production_db

Полученный файл дампа имеет следующие строки вверху:

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_production_db` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `my_production_db `;

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

Тогда я бегу:

mysql -u root  -p <password> < mydumpfile

Я не нашел другого способа сделать это.

По мере увеличения базы данных это становится непрактичным.

Я что-то упустил? Не могу ли я как-то указать, где я хочу восстановить базу данных? Нужна ли мне другая команда резервного копирования?

Ответы [ 4 ]

48 голосов
/ 31 января 2012

@ minaz ответ был хорошим, но я хочу добавить еще немного.

Проблема была вызвана ключевым словом --databases.Если вы опустите ключевое слово, оно не будет содержать содержимого для создания базы данных.

Итак, дамп без ключевого слова --databases.

mysqldump -u username -p database_name > dump.sql

И восстановите его с именем целевой базы данных.

mysql -u username -p target_database_name < dump.sql

Также есть несколько способов сделать это.Смотрите аналогичную проблему на здесь (dba.stackexchange).

13 голосов
/ 31 января 2012

Если вы уроните опцию --databases, но при этом укажите имя базы данных, вы НЕ получите инструкции создания базы данных. то есть:

mysqldump -u root --opt --skip-extended-insert  my_production_db

На вашем компьютере разработчика просто создайте любую базу данных, в которую вы хотите восстановить.

1 голос
/ 29 октября 2015

В windows xampp я использовал следующие команды для достижения этого

Экспорт

mysqldump -u root -p mydb > mydb.sql

Импорт

mysql -u root -p mynewdb < mydb.sql
1 голос
/ 27 августа 2015

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

sed '4d' dump.sql | sed '5d' > dump-striped.sql
...