вторник, 17 мая 2011 г.

MySQL backup (mysqldump)

Создание бекапа

Для бекапа баз можно воспользоватся утилитой mysqldump Она сделает экспорт базы в текстовый файл.

Использование:

mysqldump -uuser -ppasswd -f database_name > ~/filename.sql

Этой командой мы делаем бэкап базы данных под именем database_name в файл filename.sql в домашнюю директорию текущего пользователя

Еще несколько вариантов:
mysqldump -uuser -ppasswd -f --default-character-set=utf8 database_name | gzip -c > filename.sql.gz


а если приходится делать дампы с разными кодировками, то удобно пользоваться переменными:
set DBCHARACTER = utf8
set DBNAME = breach
mysqldump -uuser -ppasswd -f --default-character-set=$DBCHARACTER $DBNAME | bzip2 -c > $DBNAME.`date "+%Y-%m-%d"`.sql.bz2


Если нужно автоматизировать удаление старых архивов, можно воспользоваться cron и командой find. Запуская периодически
find ~/каталог-с-архивами -name "*.gz" -mtime +7 -exec rm -f {} \;
Тем самым Вы будете удалять архивы, которые "старше" семи дней.

Несколько полезных параметров mysqldump:

--databases позволяет сделать так, что mysqldump включит в сценарий восстановления команды CREATE DATABASE /*!33333 IF NOT EXISTS*/ DBNAME и USE DBNAME. Это позволит создавать рабочие базы "с нуля". То есть, без использования --databases подразумевается, что пользователь восстанавливает одну базу данных и явно указывает, куда нужно помещать восстанавливаемые данные. Если же backup создается с целью сделать полностью рабочую копию данных, например, на другом MySQL-сервере, то нужно использовать этот ключ;

--all-databases позволяет сделать копии всех баз данных, которые существуют на данном MySQL-сервере. Если же нужно сделать копии только некоторых баз, нужно просто указать их через пробел при вызове mysqldump из командной строки (см. выше);

--add-drop-table - ключ, который заставит mysqldump добавлять в итоговый сценарий команду drop table перед созданием таблиц. Это позволит избежать некоторых ошибок при восстановлении базы из резервной копии. Конечно, нужно учитывать то, что таблицы, находящиеся в рабочей копии (если таблицы с таким же именем существуют в backup), перед восстановлением из резервной копии будут удалены из основной базы и пересозданы из backup;

--no-data. С помощью этого ключа можно быстро сделать копию структуры таблицы/баз без самих данных. Например, Вы создали сложную таблицу и хотели бы сохранить на будущее ее структуру, а сами данные, которые находятся в этой таблице, Вам в резервной копии не нужны;

Восстановление из бекапа

mysql -uasd -pasd qwerty < filename.sql

Комментариев нет:

Отправить комментарий