Выполнение горячего резервного копирования баз данных MySQL с помощью Percona XtraBackup в Ubuntu 16.04
На этой странице
- Шаг 1. Установите Percona XtraBackup
- Шаг 2. Настройка пользователя и резервного каталога
- Шаг 3. Выполнение резервного копирования с помощью Innobackupex
- Шаг 4. Восстановление полной резервной копии с помощью Innobackupex
- Справочник
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