Бекап mysql с percona xtrabackup

Добавляем ключ:

Узнаем версию linux

Добавляем в sources.list реппозитории (если релиз не wheezy то поменять строки на нужный)

Обновляем и устанавливаем

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

Xtrabackup создает копии файлов данных таблиц innoDB (xtraDB), а также текущего бинлог файла. Для начала нужно создать директорию для бекапов:

Для запуска процесса создания бекапа:

Некоторые пояснения:

Спустя определенное время (зависит от размера данных), получим снимок в папке для бекапов, из которого можно восстановится:

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

Для восстановления, необходимо выплнить команду с опцией «—prepare»:

Команду восстановления данных нужно выполнить дважды, после чего будут созданы лог файлы для MySQL. После этого нужно скопировать лог файл и файл данных в папку MySQL (по умолчанию — /var/lib/mysql).

И задать права:

Инкрементальные бекапы

Понятно, что делать полный бекап на больших объемах будет крайне ресурсоемко, поэтому XtraBackup обладает возможностью инкрементальных бекапов и восстановления. Для этого, Вам сначала необходимо сделать полный бекап, а затем в отдельную папку — т.н. дельта бекап:

Для восстановления нужно выполнить следующую команду:

Если ругается на размер лога то:

Правильное изменение размера лога innodb (innodb_log_file_size)

Во время работы innodb записывает все измененные данные не сразу в файлы баз данных, а первоначально сбрасывает все в бинарный лог (опция innodb_log_file). Это позволяет повысить скорость работы, т.к. операция записи в файл таблицы более трудоемкая, чем в файл лога. К тому же ведение лога позволяет записывать в файл таблицы последовательными кусками данных, быстрее обслуживать клиентов mysql (данные принял, записал в лог, отчитался клиенту что все ОК)

При аварийном завершении сервера данный лог файл позволяет откатить поврежденные (незавершенные) транзакции. Чем больше лог файл — тем больше операций в нем хранится, и тем больше время для просмотра/анализа корректности последнего запершения работы необходимо innodb.

По-умолчанию бинарный лог-файл innodb имеео объем 5 Мб:

Для изменения его объема необходимо выполнить следующие операции (от пользователя root):

1. Корректно останавливаем работу mysql сервера:

2. Изменяем/добавляем параметр в конфигурационном файле ( /etc/mysql/my.cnf — Debian (Ubuntu), /etc/my.cnf — CentOS):

3. Важно! Переименовать существующие лог-файлы. Иначе при загрузке innodb будет рапортовать, что логфайл поврежден :

4. Запустить mysql сервер.

5. Проверить отсутствие ошибок в файле лога mysql демона:

Как видно по логу, innodb создал новые бинарные логи ib_logfile0 и ib_logfile1 нового объема.