Восстановление 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