Поиск по сайту:

Выполнение горячего резервного копирования баз данных MySQL с помощью Percona XtraBackup в Ubuntu 16.04


На этой странице

  1. Шаг 1. Установите Percona XtraBackup
  2. Шаг 2. Настройка пользователя и резервного каталога
  3. Шаг 3. Выполнение резервного копирования с помощью Innobackupex
  4. Шаг 4. Восстановление полной резервной копии с помощью Innobackupex
  5. Справочник

Percona XtraBackup — это утилита резервного копирования с открытым исходным кодом для MySQL. Он поддерживает все разновидности MySQL, такие как Percona Server, MariaDB и (Oracle) MySQL. Percona Xtrabackup выполняет горячее резервное копирование для MySQL. Горячее резервное копирование означает создание резервной копии сервера MySQL во время его работы без простоев.

В этом руководстве я покажу вам, как создать горячую резервную копию базы данных MySQL с помощью инструмента OpenSource 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 
TYPE YOUR PASSWORD

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

Далее обновите репозиторий и установите Ppercona 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
TYPE MySQL PASSWORD

Создайте нового пользователя с именем 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, предоставленная оракулом, распространяемая с инструментом резервного копирования InnoDB. Innobackupex обеспечивает резервное копирование всего экземпляра базы данных MySQL, используя xtrabackup в сочетании с xbstream и xbcrypt.

На этом шаге мы создадим и подготовим полную резервную копию для экземпляра MySQL.

А. Создайте резервную копию с помощью 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=memorynnumber , чтобы сообщить 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: complete OK, вы успешно восстановили свой экземпляр MySQL.

Теперь измените владельца каталога данных MySQL на пользователя mysql и снова запустите службу:

chown -R mysql:mysql /var/lib/mysql
systemctl start mysql

Экземпляр MySQL успешно восстановлен с помощью percona-xtrabackup.

Ссылка

  • https://www.percona.com/doc/percona-xtrabackup/2.3/index.html