Резервное копирование · 4 min read · Dec 13, 2025
Выполнение горячих резервных копий баз данных MySQL с Percona XtraBackup на Ubuntu 16.04
Percona XtraBackup — это утилита резервного копирования с открытым исходным кодом для MySQL. Она поддерживает все версии MySQL, такие как Percona Server, MariaDB и (Oracle) MySQL. Percona Xtrabackup выполняет горячее резервное копирование для MySQL. Горячее резервное копирование означает создание резервной копии сервера MySQL во время его работы без простоя.
В этом руководстве я покажу вам, как создать горячую резервную копию базы данных MySQL с помощью инструмента с открытым исходным кодом Percona XtraBackup на Ubuntu 16.04 (Xenial Xerus). Я буду использовать MariaDB в качестве сервера базы данных для выполнения резервного копирования, но та же настройка будет работать и для серверов MySQL.
Предварительные требования
- Сервер Ubuntu 16.04 - (Xenial Xerus)
- Сервер MySQL или MariaDB
- Привилегии root
Шаг 1 - Установка Percona XtraBackup
Первый шаг — установить последнюю версию программного обеспечения Percona XtraBackup на наш сервер Ubuntu. Войдите на свой сервер по SSH (или на консоли):
ssh [email protected]
ВВЕДИТЕ ВАШ ПАРОЛЬPercona XtraBackup доступен в репозитории Ubuntu, но мы хотим использовать последнюю версию из репозитория Percona.
Добавьте репозиторий Percona, загрузив deb-пакет с веб-сайта, и установите его с помощью команды dpkg:
wget https://repo.percona.com/apt/percona-release_0.1-3.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_0.1-3.$(lsb_release -sc)_all.debЗатем обновите репозиторий и установите Percona XtraBackup 2.4 (последнюю версию на данный момент):
sudo apt-get update
sudo apt-get install percona-xtrabackup-24Percona XtraBackup установлен.
Шаг 2 - Настройка пользователя и каталога резервного копирования
Чтобы выполнить горячее резервное копирование, нам нужно создать нового пользователя mysql с особыми привилегиями и разрешениями. В этом руководстве я буду использовать MariaDB 10.0 в качестве сервера базы данных. Если вы еще не установили совместимую с MySQL базу данных, вы можете установить ее с помощью команды ниже:
sudo apt-get install mariadb-server mariadb-clientУстановите надежный пароль для пользователя root с помощью этой команды:
mysql_secure_installationЕсли MariaDB установлена, получите доступ к оболочке MariaDB/MySQL как пользователь root с помощью команды mysql клиента:
mysql -u root -p
ВВЕДИТЕ ПАРОЛЬ MySQLСоздайте нового пользователя с именем ‘ bekupuser ‘ с паролем ‘ mypassword ‘ (выберите надежный пароль для вашего сервера!):
CREATE USER 'bekupuser'@'localhost' IDENTIFIED BY 'mypassword';Предоставьте пользователю следующие привилегии: ‘RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT’.
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bekupuser'@'localhost';
FLUSH PRIVILEGES;
exitЗатем создайте новый каталог для хранения файлов резервных копий MySQL:
mkdir -p /data/backups/mysql/Новый пользователь резервного копирования и каталог резервного копирования были созданы.
Шаг 3 - Выполнение резервного копирования с Innobackupex
Innobackupex — это оболочка на Perl для программы xtrabackup. Это исправленная версия скрипта innobackup, предоставленного Oracle, распространяемого с инструментом InnoDB Backup. Innobackupex предоставляет резервное копирование для целой инстанции базы данных MySQL, используя xtrabackup в сочетании с xbstream и xbcrypt.
На этом этапе мы создадим и подготовим полное резервное копирование для инстанции MySQL.
A. Создание резервной копии с Innobackupex
На шаге 2 мы создали новый каталог для резервного копирования и добавили нового пользователя резервного копирования mysql. Мы будем использовать их сейчас для создания резервной копии с помощью команды innobackupex.
Создайте резервную копию MySQL с помощью innobackupex в новый каталог ‘/data/backups/my_backup’:
innobackupex --user=bekupuser --password=mypassword --no-timestamp /data/backups/my_backupПримечание:
–user = пользователь с необходимыми привилегиями резервного копирования (шаг 2).
–password = пароль пользователя резервного копирования.
–no-timestamp = отключить создание новой временной подпапки в корневом каталоге резервного копирования.
/data/backups/my_backup = каталог для резервного копирования, он будет создан автоматически в процессе резервного копирования. Если каталог существует, вы получите сообщение об ошибке.

Другой вариант:
mkdir -p /data/backups/my_backup2
innobackupex --user=bekupuser --password=mypassword /data/backups/my_backup2
or
innobackupex --user=bekupuser --password=mypassword /data/backups/Примечание:
Если каталога ‘ my_backup2 ‘ нет, вы получите свой каталог на основе формата ‘ timestamp ‘.
Результаты:
B. Подготовка полной резервной копии с Innobackupex
После создания новой резервной копии данные не готовы к восстановлению. Есть еще один шаг, чтобы данные были готовы к восстановлению. Нам нужен ‘этап подготовки’, чтобы данные могли быть восстановлены.
Подготовьте резервную копию с помощью innobackupex с опцией –apply-log к каталогу резервного копирования ‘/data/backups/my_backup ‘:
innobackupex --apply-log /data/backups/my_backupУбедитесь, что процесс завершен без ошибок, прежде чем продолжить.

Если у вас достаточно памяти и большая база данных, вы можете использовать опцию –use-memory=memorynumber, чтобы указать innobackupex, сколько памяти он может использовать:
innobackupex --apply-log --use-memory=4G /data/backups/my_backupДанные теперь готовы к восстановлению. Мы можем восстановить их на том же сервере или на другом сервере, на котором работает MariaDB.
Шаг 4 - Восстановление полной резервной копии с Innobackupex
На этом этапе мы восстановим инстанцию MySQL с помощью innobackupex.
Перед восстановлением инстанции MySQL нам нужно остановить процесс MySQL с помощью команды systemctl (процесс MariaDB называется mysql):
systemctl stop mysqlСоздайте резервную копию старого каталога данных MySQL:
mkdir ~/mysql_old/
mv /var/lib/mysql/* ~/mysql_old/Затем восстановите инстанцию mysql из полной резервной копии с помощью innobackupex:
innobackupex --copy-back /data/backups/my_backupКогда вы увидите результат ‘ innobackupex: completed OK ‘, значит, вы успешно восстановили свою инстанцию MySQL.
Теперь измените владельца каталога данных MySQL на пользователя mysql и снова запустите службу:
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql
Инстанция MySQL успешно восстановлена с помощью percona-xtrabackup.
Ссылки
Get new posts in your inbox
No spam. Unsubscribe anytime.