Резервное копирование · 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-24

Percona 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 = каталог для резервного копирования, он будет создан автоматически в процессе резервного копирования. Если каталог существует, вы получите сообщение об ошибке.

Создание резервной копии с Percona XtraBackup

Другой вариант:

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.

Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.