Восстановление mysql в другую базу данных

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

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

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

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

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

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

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

mysqldump -u username -p database_name > dump.sql

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

mysql -u username -p target_database_name < dump.sql

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

Ответ 3

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

Экспорт

mysqldump -u root -p mydb > mydb.sql

Импорт

mysql -u root -p mynewdb < mydb.sql

Ответ 4

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

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