Установка и использование Percona XtraBackup

1.Установка Percona XtraBackup

Centos

Ubuntu

Импортируем публичный GPG¬-ключ

Добавляем репозитарий Percona

Проверяем,что добавился новый репозитарий

Обновляем локальный кеш и устанавливаем пакет

Также можно скачать конкретную версию Percona XtraBackup для требуемой операционной системы с официального сайта Percona

 

2.Создание бекапа всех баз данных(полного бекапа)

Будет создана подкаталог с текущей датой (например, 2015-12-16_14-11-01).
Также можно указать флаг

чтобы программа не создавала каталог резервного копирования с текущей временной меткой.
Важно чтобы каталог, куда будет складываться бекап, либо не существовал либо был пустым
(innobackupex по умолчанию не будет перезаписывать уже существующие файлы в каталоге для бекапа и выдаст ошибку)

С флагом или без него, программа должна вернуть в последней строке результата.

используется для ускорения процесса резервного копирования и минимизирования времени блокировки для НЕ InnoDВ-таблиц — FLUSH TABLES WITH READ LOCK
Когда указан —rsync, innobackupex использует Rsync, чтобы скопировать все файлы, отличные от InnoDB, вместо того, чтобы создавать отдельный процесс cp для каждого файла, что может быть намного быстрее на серверах с большим количеством баз данных или таблиц
Innobackupex будет вызывать rsync дважды, один раз перед FLUSH TABLES WITH READ LOCK и один раз во время, чтобы свести к минимуму время блокировки. Во время второго вызова rsync будет синхронизировать только изменения с НЕ-транзакционными данными (если они есть), с момента первого вызова rsync,которвый был выполнен до FLUSH TABLES WITH READ LOCK.
Этот параметр нельзя использовать вместе с параметром –stream или —remote-host

После этого необходимо накатить лог изменений на файл данных.(Это не применимо для инкрементальных бекапов. Подготовка инкрементальных бекапов указана ниже в статье)
Это подготовит бекап к использованию.
Для этого нужно воспроизвести лог транзакций и внести все несовершённые транзакции в резервную копию.Подготовка резервной копии позволяет согласовать и уточнить данные

применяет транзакции,указанные в файле xtrabackup_logfile, который был создан утилитой innobackupex в том же каталоге,где распологается сам бекап (/data/backup/2015-12-16_14-11-01) в момент создания бекапа
После этого innobackupex выполнит зафиксированные транзакции в файлах журналов (некоторые транзакции могли быть выполнены во время резервного копирования) и откат незафиксированных. Как только это будет сделано, вся информация будет находится в табличном пространстве (файлы InnoDB), и файлы журналов(ib_logfile*) будут заново созданы.
По умолчанию используется InnoDB-конфигурация с файла backup-my.cnf, который был создан утилитой innobackupex в том же каталоге,где распологается сам бекап (/data/backup/2015-12-16_14-11-01) в момент создания бекапа
Но это можно переопределить с помощью параметра —defaults-file, но обязательным условием является передача этой опции ПЕРВОЙ (innobackupex —defaults-file…..)

Для ускорения подготовки бекапа может использоваться опция

при наличии свободной памяти на сервере.По умолчанию используется 100MB.Например, установим 1G

 

3.Восстановление всех баз данных из бекапа
Останавливаем MySQL-сервер
Centos 7

Ubuntu 14

Перемещаем старый каталог mysql
Centos 7

Ubuntu 14

Перемещаем бекап в /var/lib/mysql

Либо используем второй вариант

После уcпешного выполнения этой команды программа проинформирует

Выставляем корректного владельца и группу рекурсивно на каталог /var/lib/mysql

И корректные права на каталог /var/lib/mysql

Запускаем MySQL-сервер
Centos 7

Ubuntu 14

 

4.Создание инкрементальных бекапов
Например,раз в неделю — полный бекап, раз в сутки – инкрементальный
Рассмотрим на примере один полный и два инкрементальных
Создание полного бекапа

Создание первого инкрементального бекапа

Альтернативная команда

Создание второго инкрементального бекапа

Альтернативная команда

Все таблицы отличные от InnoDB-типа будут копироваться каждый раз полностью при инкрементальном копировании т.к у них нет поддержки транзакций, на которых основан механизм инкрементального копирования для InnoDB-таблиц

Подготовка инкрементального бекапа

1.Накатывание изменений на полный бекап

2. Применение первого инкрементального бекапа к полному бекапу

3.Применение второго инкрементального бекапа к полному бекапу

Т.к это последний инкрементальный бекап, то не используется опция —redo-only

Далее указан опциональный шаг,который рекомендуется выполнять для ускорения запуска сервера при восстановлении с бекапа
Этот шаг откатывает незавершенные транзакции.
Если его не выполнить в подготовительной части,то при запуске MySQL-сервера сервер баз данных будет выполнять откатывание незавершенных транзакций(ту же самую работу он делает в случае аварии),что
замедлит запуск сервера баз данных

 

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

Простой скрипт для создания полного бекапа еженедельно(по воскресеньям) и инкрементального в остальные дни

 

Начиная с Percona XtraBackup версии 2.3 innobackupex был переписан на C и настроен как символическая ссылка на xtrabackup.
Innobackupex поддерживает все функции и синтаксис также ,как и в версии 2.2, но теперь он устарел и будет удален в следующей major версии. Синтаксис для новых функций не будет добавлен в innobackupex, только для xtrabackup.

Используем xtrabackup для создания, подготовки и восстановления бекапа

Полный цикл по созданию,подготовки и восстановлению ПОЛНОГО бекапа всех баз данных

 

1.Создание бекапа (—backup) с сжатем(—compress) в 2 потока одновременно(—compress-threads)

Если нет необходимости сжимать бекап для экономии дискового пространства,то используем

Перед подготовкой бекапа(накатыванием транзакционных логов) сжатые файлы должны бать расжаты (если использовалась опция –compress при создании бекапа)

Для расжатия используется утилита qpress
Установка qpress
Ubuntu(при подключенном репозитарии Percona)

Centos(при подключенном репозитарии Percona)

Либо загружаем готовый бинарник

 

2. Расжатие бекапа(—decompress) с удалением сжатых файлов после расжатия(—remove-original)

 

3.Подготовка бекапа

 

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

 

Скрипт для ежедневного создания ПОЛНОГО бекапа всех баз данных

Добавляем в планировщик cron задание на ежесуточный запуск скрипта по выполнению бекапа с позиционной переменной

Для декомпресси и подготовки бекапа, когда понадобится восстанвоить секапа используем соотвественно позиционные переменные

Системы мониторинга (Nagios/Zabbix) при необходимости мониторят файл /var/log/backup-xtrabackup-report.log для мониторинга успешности/неуспешности создания бекапа

 

Источник:
http://habrahabr.ru/company/centosadmin/blog/229731/
http://ruhighload.com/post/Xtrabackup
http://www.8host.com/blog/goryachee-rezervnoe-kopirovanie-dannyx-mysql-pri-pomoshhi-percona-xtrabackup-v-centos-7/
https://ramses2000.net/2015/02/02/xtrabackup/

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика