Дамп и восстановление базы данных 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=FALSE  | gzip -c > 'date "+%Y-%m-%d"'.gz

В приведенном выше примере, для создания бекапа используется утилита mysqldump, которая входит в состав mysql. Далее указываются параметры для создания бекапа базы данных, которые разберем подробнее:

-u – параметр указывает логин, который будет использоваться для подключения к базе данных. В примере мы используем логин root, который нужно указать в этом параметре без пробела! В результате у нас это выглядит как -uroot

-p – параметр указывает что нужно ввести пароль для указанного логина. Мы его оставили пустым, в результате чего пароль нужно будет ввести после нажатия “Enter” при выполнении команды. Тем не менее, можно указать пароль сразу же здесь, как и в параметре логина, без пробела после -p, однако этот способ не является безопасным, так как консоль сохраняет Ваши команды в лог файл и если Вы его регулярно не очищаете, то он может быть просмотрен злоумышленником.

your_base – вместо этой строки в примере, вам необходимо указать реальное имя Вашей базы данных, для которой Вы создаете бекап.

> – оператор который показывает направление действия, т.е. как бы указывает, что вы собираетесь сделать запись из базы в файл.

dump_file.sql – это название Вашего файла .slq в которую нужно сохранить Вашу базу данных. Он указывается через пробел после оператора ‘>’. Вы можете задать любое другое имя. Например, чтобы в имени система автоматически вставила текущее время, достаточно указать строку вида: ‘date «+%Y-%m-%d»‘ 1 ‘date «+%Y-%m-%d»‘ после этой строки в примере указывается расширение файла ‘.gz‘. В результате будет создан файл вида ‘2014-11-15.gz‘. Внимание! Если Вы указываете только имя файла, то он будет сохранен в той же директории, относительно которой Вы выполняете данную команду. Т.е. если Вы видите в строке приглашения ввода команд что-то вроде [root@dvs home]#, где root@dvs это логин и имя сервера, то файл будет создан в директории /home. Чтобы изменить сохранение файла по другому пути, укажите вместо имени полный путь для сохранения файла, например: /var/www/backup/dump_file.sql.

Во втором примере, вместо оператора ‘>‘ используется оператор ‘|‘, который указывает на необходимость выполнения дополнительной команды gzip c параметром ‘-c‘ которая позволяет сразу же запаковать дамп в архив, а только затем сохранить его в файл вида ‘2014-11-15.gz‘, о чем сообщает оператор ‘>‘.

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

Параметры –default-character-set=utf8 и –extended-insert=FALSE. Первый позволяет Вам явно указать кодировку, которая используется этой базой данных, тем самым избежать сохранение базы в неверной кодировке Вместо utf8 можно указать любую другую кодировку, например cp1251. Второй параметр позволяет указать, что при экспорте для каждой записи необходимо создать отдельную команду INSERT. В некоторых случаях это может потребоваться при частичном восстановлении данных из дампа.

Восстановление базы данных из файла дампа MySQL

Теперь рассмотрим с Вами обратный процесс восстановления базы данных из файла дампа. Данное действие выполняется при помощи программы mysql. Рассмотрим сразу же пример.

Восстанавливаем базу данных your_base из файла дампа dump_file

mysql -uroot -p your_base < dump_file.sql

Здесь также используются параметры ‘-u‘ и ‘-p‘, которые указывают на логин и пароль для подключения к базе данных аналогично утилите mysqldump, рассмотренной в предыдущем примере. После этого идет название базы данных, а также файла, из которого необходимо восстановить данные. Между ними ставится оператор ‘<‘ который указывает направление, что мы хотим импортировать данные в базу из файла.

Category: Bash SQL Unix Метки: backup mysql, backup mysql ubuntu, backup базы данных mysql, бекап базы данных MySQL, восстановление базы данных из дампа MySQL, восстановление дампа mysql, дамп базы данных mysql, как создать backup, резервное копирование базы данных, сохранение базы данных в файл