[MySQL, DevOps] Создание резервной копии MySQL при помощи утилиты XtraBackup
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Percona XtraBackup — это утилита для горячего резервного копирования баз данных MySQL.Во время создания резервной копии данных не происходит блокирования таблиц, ваша система продолжает работать без каких бы то ни было ограничений.XtraBackup 2.4 может создавать резервные копии таблиц InnoDB, XtraDB и MyISAM на серверах MySQL 5.11, 5.5, 5.6 и 5.7, а также на сервере Percona для MySQL с XtraDB.Для работы с MySQL 8.x следует использовать версию XtraBackup 8.x. В данной статье речь пойдёт о только о XtraBackup 2.4.Главное преимущество XtraBackup заключается в том, что эта утилита подходит как для создания резервных копий высоко нагруженных серверов, так и для систем с низким количеством транзакций.Если общий размер ваших баз данных MySQL значительный (десятки гигабайт), то стандартная утилита mysqldump не позволит быстро выполнить создание резервной копии, а восстановление дампа потребует много времени.УстановкаУстановка XtraBackup из репозитория apt Percona.Выполните последовательно следующие команды:
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
sudo apt-get update
sudo apt-get install percona-xtrabackup-24
2. После установки выполните команду xtrabackup -v. Так как, важно убедиться, что утилита корректно работает на сервере. В результате на экране отобразится что-то подобное:xtrabackup: recognized server arguments: — datadir=/var/lib/mysql — tmpdir=/tmp — server-id=1 — logbin=/var/log/mysql/mysql-bin.log — innodbbufferpoolsize=16384M — innodbfilepertable=1 — innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup version 2.4.20 based on MySQL server 5.7.26 Linux (x8664) (revision id: c8b4056)
Права доступа, разрешения и привилегии XtraBackup должна иметь возможность:
- Подключиться к вашему серверу MySQL.
- Обладать правами доступа к каталогу datadir.
- Во время создания резервной копии иметь права на запись в указанный через параметр target-dir каталог.
Что такое datadir?datadir — это каталог, в котором сервер баз данных MySQL хранит данные. Все базы данных, все таблицы находятся там. В большинстве дистрибутивов Linux по умолчанию таким каталогом является /var/lib/mysql.Что такое target-dir каталог?target-dir — это каталог, в который будет сохранена резервная копия.Пользователю базы данных необходимы следующие права доступа к таблицам и базам данных, подлежащих резервному копированию:
- RELOAD и LOCK TABLES
- REPLICATION CLIENT
- CREATE TABLESPACE
- PROCESS
- SUPER
- CREATE
- INSERT
- SELECT
Конфигурация Конфигурация XtraBackup выполняется с помощью опций, которые ведут себя так же, как и стандартные параметры MySQL.Что это значит?Конфигурационные параметры могут быть указаны либо в командной строке, либо в файле конфигурации СУБД, например в /etc/my.cnf.Утилита XtraBackup после запуска считывает разделы [mysqld] и [xtrabackup] из конфигурационных файлов MySQL. Это делается для того, чтобы утилита могла использовать настройки вашей СУБД без необходимости указания параметров руками при каждом резервном копировании.Например, значение datadir и некоторые параметры InnoDB XtraBackup получаем из конфигурации вашей СУБД.Если для работы XtraBackup вы хотите переопределить параметры, которые находятся в секции [mysqld], то просто укажите их в конфигурационном файле в секции [xtrabackup]. Поскольку они будут прочитаны позже, их приоритет будут выше.Вам можете не добавлять никаких параметров в my.cnf. Все требуемые параметры допустимо указывать в командной строке. Обычно единственное, что может быть удобно разместить в разделе [xtrabackup] вашего my.cnf — это параметр target_dir, который по умолчанию определяет каталог, в который будут помещены резервные копии. Но это не обязательно.Пример указания пути к каталогу с резервной копией в my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/
Сценарий создания резервной копииДля создания резервной копии можно использовать следующий сценарий:
#!/bin/bash
# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup
# Cоздаём бекап
xtrabackup --user=xtrabackup \
--password=xxxx_SECRET_xxxx \
--backup \
--target-dir=/mysql/backup
# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup
# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup
Что происходит во время выполнения сценария?Первый делом мы очищаем (удаляем) каталог, в который будем сохранять резервную копию:rm -rf /mysql/backup.Затем, при помощи утилиты XtraBackup создаём резервную копию и сохраняем её в /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup
Предварительно в MySQL мы создали пользователя xtrabackup с требуемыми привилегиями. При помощи параметра target-dir мы указываем каталог, в который следует сохранить резервную копию.Важный момент!Обратите внимание строку сценария:xtrabackup --prepare --target-dir=/mysql/backupДанные в каталоге /mysql/backup не консистентны до тех пор, пока они не будут подготовлены. Дело в том, что во время копирования файлов могли произойти изменения. Операция xtrabackup --prepare --target-dir=/mysql/backup делает данные резервной копии идеально согласованными во времени.Выполнить операцию подготовки данных можно на любой машине. Нет необходимости это делать на сервере, где находится исходная СУБД. Вы можете скопировать резервную копию на целевой сервер и подготовить ее там.Последнее, что мы делаем — создаём архив, в который помещаем нашу резервную копию:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup
Восстановление резервной копии Прежде чем приступить к восстановлению резервной копии на целевом сервере данные должны пройти этап подготовки. Как это сделать смотрите выше.Процесс восстановления данных очень простой. Вам нужно извлечь резервную копию из архива и заменить данные в datadir.Как заменить данные в datadir?Рассмотрим два варианта.Вариант 1Воспользоваться утилитой XtraBackup. Нужно указать опцию --copy-baсk. Команда ниже перенесёт резервную копию в datadir целевого сервера:
xtrabackup --copy-back --target-dir=/mysql/backup
Вариант 2Можно поступить иначе, обойтись без утилиты XtraBackup.Всё, что вам нужно — это скопировать резервную копию в datadir. Вы можете сделать это при помощи cp или rsync.Важно понимать, что процедура восстановления резервной копии сводится всего лишь к замене содержимого каталога datadir.Перед тем, как начать восстановление резервной копии на целевом сервере необходимо:
- Остановить MySQL сервер.
- Очистить папку datadir или перенести её содержимое в другое место. Каталог datadir обязательно должен быть пустым.
После завершения переноса данных в datadir сервер MySQL можно запустить.Используемые материалыОфициальная документация Percona XtraBackup.
===========
Источник:
habr.com
===========
Похожие новости:
- [Системное администрирование, IT-инфраструктура, Разработка для интернета вещей, DevOps] Вернуть пропавший скутер, или история одного IoT мониторинга
- [Виртуализация, DevOps, Облачные сервисы, Kubernetes] Пять промахов при развертывании первого приложения на Kubernetes (перевод)
- [DevOps, Серверное администрирование, Системное администрирование, Хранение данных] Наиболее интересные факты о Ceph по результатам опроса пользователей в 2019 году
- [DevOps, IT-инфраструктура, IT-компании] Внедрение CI/CD и DevOps в Enterprise (в нашем случае — Ростелеком)
- [Системное администрирование, Серверное администрирование, Хранилища данных, DevOps] Пять вопросов о Ceph с пояснениями (перевод)
- [DevOps, Kubernetes, Серверное администрирование, Системное администрирование] АйТиБалаган! #3: Зачем DevOps-инженеру программирование и что такое виртуализация
- [MySQL, Django] Настройка docker для django на mysql
- [DevOps, Kubernetes, Серверное администрирование, Системное администрирование] «Обзор возможностей Kubespray»: Отличие оригинальной версии и нашего форка
- [Разработка игр, DevOps, Игры и игровые приставки] Индюшатина, как ее готовят
- [DevOps, Системное администрирование] Двадцать интервью за две недели. Краткие выводы длинным текстом
Теги для поиска: #_mysql, #_devops, #_mysql, #_backup, #_xtrabackup, #_mysql, #_devops
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 18:57
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Percona XtraBackup — это утилита для горячего резервного копирования баз данных MySQL.Во время создания резервной копии данных не происходит блокирования таблиц, ваша система продолжает работать без каких бы то ни было ограничений.XtraBackup 2.4 может создавать резервные копии таблиц InnoDB, XtraDB и MyISAM на серверах MySQL 5.11, 5.5, 5.6 и 5.7, а также на сервере Percona для MySQL с XtraDB.Для работы с MySQL 8.x следует использовать версию XtraBackup 8.x. В данной статье речь пойдёт о только о XtraBackup 2.4.Главное преимущество XtraBackup заключается в том, что эта утилита подходит как для создания резервных копий высоко нагруженных серверов, так и для систем с низким количеством транзакций.Если общий размер ваших баз данных MySQL значительный (десятки гигабайт), то стандартная утилита mysqldump не позволит быстро выполнить создание резервной копии, а восстановление дампа потребует много времени.УстановкаУстановка XtraBackup из репозитория apt Percona.Выполните последовательно следующие команды: wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb sudo apt-get update sudo apt-get install percona-xtrabackup-24 Права доступа, разрешения и привилегии XtraBackup должна иметь возможность:
[xtrabackup]
target_dir = /data/backups/mysql/ #!/bin/bash
# Удаляем данные в каталоге бекапа rm -rf /mysql/backup # Cоздаём бекап xtrabackup --user=xtrabackup \ --password=xxxx_SECRET_xxxx \ --backup \ --target-dir=/mysql/backup # Выполняем подготовку бекапа для развёртывания xtrabackup --prepare --target-dir=/mysql/backup # Создаём архив tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup
xtrabackup --copy-back --target-dir=/mysql/backup
=========== Источник: habr.com =========== Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 18:57
Часовой пояс: UTC + 5