Дамп и восстановление базы данных MySQL
Дамп и восстановление базы данных MySQL довольно просто и удобно делать удаленно через SSH или прямо через консоль сервера. Удаленно, это можно делать используя программы Putty/Kitty. Также указанные ниже примеры Вы можете выполнять и на Windows запустив командную строку ‘cmd‘. Ниже приведены примеры о том, как создавать дампы базы данных MySQL и затем восстанавливать их при необходимости, например для Вашего сайта, интернет-магазина или какого либо другого проекта.
Создание дампа базы данных MySQL
Для того, чтоб выполнять данные команды, подключитесь удаленно к Вашему серверу через SSH используя одну из перечисленных выше программ. После подключения и авторизации к серверу/хостингу, Вы можете вводить приведенные ниже команды.
# Бекап одной базы данных в файл dump_file.sql |
mysqldump -uroot -p your_base > dump_file.sql |
# На windows дамп лучше всего создавать немного другой командой, которая предотвращает |
# случайное затирание строк дампа из за конвертации символов перевода строки ‘\r\n’ в ‘\n’ |
mysqldump -uroot -p your_base -r dump_file_utf8.sql |
# Если Вам нужен бекап только отдельных таблиц, а не всей базы данных |
# (указываем наименования таблиц через пробел после названия базы данных) |
mysqldump -uroot -p your_base TABLE1 TABLE2 TABLE3 > dump_file.sql |
# Если нужно создать бекап только структуры базы данных без самих данных |
mysqldump -uroot -p —no-data your_base > dump_file.sql |
# Бекап всех баз данных в файл текущая_дата.gz |
mysqldump -uroot -p —all_databases | gzip -c > ‘date «+%Y-%m-%d»‘.gz |
# Бекап, где для каждой записи создается отдельный INSERT |
# и с явным указанием кодировки базы данных UTF-8 |
mysqldump -uroot -p —default-character-set=utf8 your_base —extended-insert=FAL |
В приведенном выше примере, для создания бекапа используется утилита mysqldump, которая входит в состав mysql. Далее указываются параметры для создания бекапа базы данных, которые разберем подробнее:
- -u– параметр указывает логин, который будет использоваться для подключения к базе данных. В примере мы используем логин root, который нужно указать в этом параметре без пробела! В результате у нас это выглядит как -uroot
- -p– параметр указывает что нужно ввести пароль для указанного логина. Мы его оставили пустым, в результате чего пароль нужно будет ввести после нажатия “Enter” при выполнении команды. Тем не менее, можно указать пароль сразу же здесь, как и в параметре логина, без пробела после -p, однако этот способ не является безопасным, так как консоль сохраняет Ваши команды в лог файл и если Вы его регулярно не очищаете, то он может быть просмотрен злоумышленником.
- your_base– вместо этой строки в примере, вам необходимо указать реальное имя Вашей базы данных, для которой Вы создаете бекап.
- >– оператор который показывает направление действия, т.е. как бы указывает, что вы собираетесь сделать запись из базы в файл.
- sql– это название Вашего файла .slq в которую нужно сохранить Вашу базу данных. Он указывается через пробел после оператора ‘>’. Вы можете задать любое другое имя. Например, чтобы в имени система автоматически вставила текущее время, достаточно указать строку вида:
1 |
‘date «+%Y-%m-%d»‘
|
после этой строки в примере указывается расширение файла ‘.gz‘. В результате будет создан файл вида ‘2014-11-15.gz‘.
- Во втором примере, вместо оператора ‘>‘ используется оператор ‘|‘, который указывает на необходимость выполнения дополнительной команды gzip c параметром ‘-c‘ которая позволяет сразу же запаковать дамп в архив, а только затем сохранить его в файл вида ‘2014-11-15.gz‘, о чем сообщает оператор ‘>‘.
- Параметр –no-dataпозволяет создать дамп только структуры базы данных без самих данных. В некоторых случаях довольно полезно, когда данные не нужны.
- Параметры–default-character-set=utf8 и –extended-insert=FALSE. Первый позволяет Вам явно указать кодировку, которая используется этой базой данных, тем самым избежать сохранение базы в неверной кодировке Вместо utf8 можно указать любую другую кодировку, например cp1251. Второй параметр позволяет указать, что при экспорте для каждой записи необходимо создать отдельную команду INSERT. В некоторых случаях это может потребоваться при частичном восстановлении данных из дампа.
Восстановление базы данных из файла дампа MySQL
Теперь рассмотрим с Вами обратный процесс восстановления базы данных из файла дампа. Данное действие выполняется при помощи программы mysql. Рассмотрим сразу же пример.
1
2 |
# Восстанавливаем базу данных your_base из файла дампа dump_file
mysql -uroot -p your_base < dump_file.sql
|
Здесь также используются параметры ‘-u‘ и ‘-p‘, которые указывают на логин и пароль для подключения к базе данных аналогично утилите mysqldump, рассмотренной в предыдущем примере. После этого идет название базы данных, а также файла, из которого необходимо восстановить данные. Между ними ставится оператор ‘<‘ который указывает направление, что мы хотим импортировать данные в базу из файла.