Percona XtraBackup — одно из основных предложений для администраторов баз данных MySQL и Percona, разработанное Percona. Этот инструмент представляет собой утилиту резервного копирования с открытым исходным кодом, которая не блокирует наши базы данных во время процессов резервного копирования по сравнению с тем же Mysqldump. Percona заявляет, что их инструмент может обеспечить автоматическую проверку сделанных резервных копий, обеспечить быстрое создание дампов и восстановление, и, прежде всего, он поддерживается их отмеченными наградами консультационными услугами, помогающими нам быть уверенными, что наши данные и их резервные копии находятся в надежных руках. днем и ночью.
Как использовать Percona XtraBackup?
Чтобы начать изучать возможности, предлагаемые Percona XtraBackup, установите этот инструмент, прежде чем продолжить — инструмент можно установить из репозитория, из архива, из пакетов или через исходный код — старомодный способ установки инструмент из репозитория — любимый вариант многих. Чтобы установить инструмент из репозитория, перейдите к документации Percona , и как только вы закончите установку, вы сможете сделать резервную копию своих данных, выполнив команду ниже (команда ниже выполнит полную резервную копию вашей базы данных, а затем сохранит резервную копию в каталоге с именем «backups»):
xtrabackup --backup --target-dir=/backups
Имейте в виду, что в этом случае, в отличие от mysqldump , каталог «резервные копии» не будет состоять только из одного файла — XtraBackup от Percona создаст резервную копию следующего:
- Файл my.cnf, содержащий наиболее важную информацию для правильной работы MySQL (XtraBackup создаст резервную копию файла и назовет его backup-my.cnf ).
- Файл, жизненно важный для правильной работы InnoDB — ibdata1 . Поскольку ibdata1 содержит данные, индексы, данные Multiversion Concurrency Control (MVCC) и двойные буферы записи и вставки, необходимые для работы InnoDB, без него инфраструктура InnoDB рухнет в пепел.
- Все базы данных внутри вашей инфраструктуры MySQL, включая базы данных test и Performance_schema .
Добавочные резервные копии также можно создавать очень похожим способом: сначала создайте полную резервную копию с помощью приведенной выше команды, затем выполните очень похожую команду, просто добавьте команду в конце, например: –-incremental-basedir
xtrabackup --backup --target-dir=/backups --incremental-basedir=/data/backups/base
Чтобы создать сжатую резервную копию, добавьте эту опцию, а для частичных резервных копий используйте одну или несколько из следующих опций:--compress
xtrabackup --backup --compress --target-dir=/data/compressed/
Используйте параметры или для резервного копирования базы данных или списка баз данных из файла: * Файл Databases.txt должен содержать базы данных и таблицы в формате data.table .--databases--databases-file
xtrabackup --databases=”db1 db2 test_db demo_db” xtrabackup --databases-file=databases.txt*
Используйте параметры или для резервного копирования таблицы или списка таблиц так же, как при резервном копировании баз данных.--tables--tables-file
Подготовка XtraBackups
Как вы могли заметить, Percona XtraBackup не создает резервные копии в простой форме backup.sql , к которой вы могли бы привыкнуть при использовании других инструментов резервного копирования базы данных — вместо этого Percona XtraBackup часто создает резервные копии файлов, связанных с базой данных, с собой.
Вот почему все резервные копии, созданные с помощью Percona XtraBackup, должны быть подготовлены к восстановлению, прежде чем их можно будет успешно восстановить — вот как это сделать для каждого типа резервных копий:
Чтобы подготовить к восстановлению полную или зашифрованную резервную копию, выполните следующую команду:
xtrabackup --prepare --target-dir=backups/
Чтобы подготовить инкрементальную резервную копию для восстановления, вам необходимо убедиться, что этап отката будет пропущен, указав соответствующий параметр. Сами Percona заявляют, что если фазу отката не предотвратить, инкрементные резервные копии не будут иметь никакого смысла, и вам придется начинать все сначала , так что имейте это в виду. Чтобы подготовить инкрементную резервную копию, запустите ту же команду, что и для полной резервной копии, только с опцией , здесь нет ничего сложного: –apply-log-only –
xtrabackup --prepare –target-dir=backups/ --apply-log-only
Чтобы подготовить частичную резервную копию, укажите тег (не беспокойтесь о предупреждениях в этом случае — они, скорее всего, выдаются потому, что InnoDB «видит» таблицы, но их файлы не существуют в каталоге данных): --export
xtrabackup --prepare --export --target-dir=backups/
Восстановление XtraBackups
Теперь, когда вы сделали и подготовили резервные копии, очевидно, наступит момент, когда вам нужно будет восстановить то, что у вас есть. Опять же, этот процесс немного отличается для каждого типа резервного копирования. Вот как можно обойти эту проблему:
Чтобы восстановить полные, сжатые, инкрементальные или зашифрованные резервные копии, добавьте опцию восстановления резервной копии в каталог данных:--copy-back
xtrabackup --copy-back --target-dir=/backups
Чтобы восстановить частичные резервные копии, все, что вам нужно сделать, это восстановить все таблицы из частичной резервной копии (скопировать их обратно на сервер по вашему выбору).
Опции, предлагаемые Percona XtraBackup
Как и во всем, что связано с командной строкой, Percona XtraBackup имеет несколько связанных с ним опций. Некоторые из них следующие (все параметры можно найти в с помощь man)
man xtrabackup
Распишем опции
- —backup Делает резервную копию базы данных.
- —check-privileges Проверяет, имеет ли Percona XtraBackup все необходимые привилегии для правильной работы.
- —apply-log-only Готовится к созданию инкрементных резервных копий, игнорируя все этапы, кроме этапа повтора.
- —copy-back Восстанавливает резервную копию. Эта опция предназначена для использования в сочетании с другими опциями
--databases=x
|--tables=x
«x» указывает базу данных или таблицу внутри базы данных, для резервного копирования. Эти параметры аналогичны параметрам или для резервного копирования баз данных или таблиц из файла.--databases-file--tables-file
- —defaults-file Заставляет XtraBackup читать только параметры, указанные в файле после этого параметра (скорее всего, это будет файл my.cnf.)
Пример выполнения.
Бэкап
xtrabackup --backup --user=root --password='111111' --databases=bd --target-dir=./bd xtrabackup --prepare --target-dir=./bd
Восстановление
systemctl stop mysqld && rm -rf /var/lib/mysql/* xtrabackup --copy-back --target-dir=./bd chown -R mysql:mysql /var/lib/mysql systemctl start mysqld