2014-02-10 3 views
1

Это может показаться очень глупым вопросом, но я не узнал его каким-либо другим способом, и я просто хочу получить некоторые разъяснения.Полный сброс базы данных для дампа MySQL?

Я начал использовать MySQL некоторое время назад и, чтобы протестировать различные сценарии, я создаю резервные копии своих баз данных. Я использовал MySQL дамп для этого:

Экспорт:

туздЫшпр -hSERVER -uUSER -pPASSWORD --all-базы данных> filename.sql

Импорт:

MySQL -hSERVER -uUSER -pPASSWORD < filename.sql

Достаточно легко, и до этого он работал довольно хорошо, когда я заметил небольшую проблему с этой «настройкой»: он не полностью «перезагружает» базы данных и таблицы. Если, например, есть дополнительная таблица, добавленная ПОСЛЕ создания файла дампа, эта дополнительная таблица не исчезнет, ​​если вы импортируете один и тот же файл дампа. Он по существу только «исправляет» таблицы уже там и воссоздает любые удаленные базы данных или таблицы, но не удаляет никаких дополнительных таблиц, которые имеют имена, которые не находятся в файле дампа.

Что я хочу сделать, это полностью сбросить все базы данных на сервере, когда я импортирую такой файл дампа. Что было бы лучшим решением? Есть ли специальная функция импорта, зарезервированная для этой цели, или мне сначала нужно удалить базы данных? Или это плохая идея?

+0

Удаление данных без резервного копирования никогда не является идеей бога. – beerwin

+0

AFAIK, импорт из файлов SQL не удаляет данные, если только файл SQL не содержит запросов DELETE/DROP. – beerwin

ответ

2

Вы можете использовать параметр -add-drop-database для добавления оператора «drop database» в дамп перед каждым оператором «создать базу данных».

например.

туздЫшпр -hSERVER -uUSER -pPASSWORD --all-базы данных --add-раскрывающихся базы данных> filename.sql

см here для деталей.

0

Нет ничего удивительного в процессах дампа и восстановления, которые вы описываете. mysqldump выписывает операторы SQL, которые описывают текущее состояние базы данных или баз данных, которые вы выгружаете. Он должен получить список таблиц в каждой базе данных, которую вы демпинг, затем она должна читать таблицы один за другим и записывать их как SQL. В базах данных любого размера это требует времени.

Итак, если вы создаете новую таблицу во время работы mysqldump, она может не поднять эту новую таблицу. Аналогично, если ваше прикладное программное обеспечение изменяет содержимое таблиц при запуске mysqldump, эти изменения могут отображаться или не отображаться в резервной копии.

Вы можете посмотреть файлы .sql. mysqldump выписывает, чтобы посмотреть, что они выбрали. Если вы хотите быть уверенным, что ваши сбрасываемые файлы .sql идеальны, вам нужно запустить mysqldump на тихом сервере - там, где никто не использует язык определения данных.

Доступны резервные решения MySQL. Возможно, вам придется изучить это.

0

ОП может потребоваться смотреть в

mysql_install_db 

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

mysql_secure_installation 

Кроме того, они могут предпочесть дамп БД (s) они создали отдельно:

mysqldump -hSERVER -uUSER -pPASSWORD --database foo > foo.sql 

, чтобы избежать случайного изменения внутренней БД: MySQL , information_schema, performance_schema.

Смежные вопросы