xtrabackup - резервное копирование mysql

Применимость: Linux

Слова для поиска: бэкап, резервирование


Задача:

Нужно регулярно создавать резервные копии баз данных большого размера и при этом недопустима блокировка базы данных.

Решение:

Есть немало неплохих вариантов решения этой задачи, но с ними могут быть различные трудности, например:

  • Некорректная работа с таблицами InnoDB
  • Неприемлемое время блокировки базы данных
  • Сложные требования
  • Высокая стоимость

На текущий момент лучшим решением задачи является XtraBackup — это утилита от Percona Labs, предназначенная для горячих бекапов таблиц InnoDB и XtraDB.

Установка

Centos/RHEL:

Установим и откорректируем репозиторий:

rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm

Измените enabled = 1 на enabled = 0 чтобы это репозиторий ничего не поломал при обновлении системы.

Измените enabled = 1 на enabled = 0 в файле /etc/yum.repos.d/Percona.repo

# Name: Percona RPM Repository
# URL: http://www.percona.com/percona-lab.html
[percona]
name = CentOS $releasever - Percona
baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/
enabled = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona
gpgcheck = 1

Установите пакеты:

yum --enablerepo=percona install percona-xtrabackup percona-toolkit

Debian/Ubuntu

apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

Add this to /etc/apt/sources.list, replacing VERSION with the name of your distribution: Добавьте следующие строки /etc/apt/sources.list, заменив VERSION именем вашего дистрибутива (lsb_release -c):

deb http://repo.percona.com/apt VERSION main
deb-src http://repo.percona.com/apt VERSION main
apt-get update && apt-get -y install percona-toolkit percona-xtrabackup netcat-openbsd

Установите скрипты:

mkdir /etc/backup
wget http://www.colobridge.net/wiki/files/innobackupex-restore.sh \
-O /etc/backup/innobackupex-restore.sh
wget http://www.colobridge.net/wiki/files/run-innobackupex.sh \
-O /etc/backup/run-innobackupex.sh

Может быть кому пригодятся скрипты

wget http://www.colobridge.net/wiki/files/innobackupex-runner.sh \
-O /etc/backup/innobackupex-runner.sh
wget http://www.colobridge.net/wiki/files/xtrabackup.sh \
-O /etc/backup/xtrabackup.sh
chmod +x /etc/backup/*

Если требуется, настройте параметры в скриптах.

Резервное копирование

Для запуска используйте опции

опции

/innobackupex-runner.sh -h
Usage: innobackupex-runner.sh [-d backdir] [-f config] [-g group] [-u username] [-p password] [-H host] [-P port] [-S socket]
  -d  Directory used to store database backup
  -f  Path to my.cnf database config file
  -g  Group to read from the config file
  -u  Username used when connecting to the database
  -p  Password used when connecting to the database
  -H  Host used when connecting to the database
  -P  Port number used when connecting to the database
  -S  Socket used when connecting to the database
  -h  Display basic help

пример

  /etc/backup/innobackupex-runner.sh -d /mnt/backup/ -f /etc/my.cnf -ubuser -pSECRET

  innobackupex-runner.sh: MySQL backup script
started: Fri Nov 15 15:28:35 CET 2013

Running new full backup.
Databases backed up successfully to: /mnt/backup/full/2013-11-15_15-28-35

Cleanup. Keeping only 1 full backups and its incrementals.

completed: Fri Nov 15 15:29:30 CET 2013

Смотрите также: