Mariabackup - родной инструмент MariaDB для создания горячих физических резервных копий без прерывания операций базы данных. В отличие от логических резервных копий с mysqldump, Mariabackup копирует фактические файлы данных, в то время как ваша база данных продолжает обслуживать запросы. Это делает его предпочтительным методом резервного копирования для производства баз данных MariaDB, где простое время не является вариантом.
В этой статье я покажу вам от основного использования до передовых дополнительных стратегий резервного копирования для операций резервного копирования MariaDB.
Оригинальное название: Mariabackup
Mariabackup - это вилка Percona XtraBackup, специально оптимизированная для MariaDB. Он создает последовательные физические резервные копии, копируя файлы данных InnoDB и захватывая журналы транзакций во время процесса резервного копирования. Затем инструмент использует эти журналы на этапе подготовки, чтобы обеспечить последовательность резервного копирования.
Как работает Mariabackup
Процесс резервного копирования происходит в три отдельных этапа. Во-первых, Mariabackup копирует настольные файлы InnoDB, в то время как база данных работает нормально. На этом этапе копирования он также захватывает все изменения, происходящие в журнале redo. После того, как копия файла завершится, Mariabackup ненадолго приобретает глобальный замок для захвата таблиц, не входящих в InnoDB, и позиции бинарного журнала. Наконец, на этапе подготовки, Mariabackup использует захваченные записи из журнала redo, чтобы сделать резервное копирование последовательным.
Mariabackup против mysqldump
Оба инструмента создают действительные резервные копии, но они обслуживают разные случаи использования.
| Особенность | Mariabackup | mysqldump |
|---|---|---|
| Тип резервного копирования | Физическая (файловая копия) | Логические (SQL заявления) |
| Горячая резервная копия | Да | Частичный |
| Скорость резервного копирования | Быстро | Медленно для больших баз данных |
| Скорость восстановления | Быстро | Медленный |
| Дополнительные резервные копии | Да | Нет |
| Точка восстановления времени | Да | Да |
| Кросс-версия восстановления | Только одна основная версия | Любая совместимая версия |
| Размер хранилища | Большие | Меньше |
Для баз данных под 10 ГБ mysqldump работает отлично и предлагает лучшую портативность. Для больших баз данных или систем, требующих минимального времени простоя, Mariabackup является лучшим выбором. Многие производственные среды используют оба: Mariabackup для быстрого ежедневного резервного копирования и mysqldump для портативных еженедельных архивов.
Установка Mariabackup
Mariabackup поставляется в комплекте с MariaDB. Если у вас установлен MariaDB, у вас, вероятно, уже есть Mariabackup.
Установка на Debian/Ubuntu
Установить пакет поддержки mariadb:
| |
Проверка установки:
| |
Установка на AlmaLinux/RHEL
Используйте yum или dnf для установки:
| |
Или на новых системах:
| |
Совместимость
Версия Mariabackup должна соответствовать MariaDB-серверная версия. Mariabackup от MariaDB 10.6 не может резервировать сервер MariaDB 10.11. Всегда используйте Mariabackup, который поставляется с вашей установкой MariaDB.
Проверь. MariaDB версия:
| |
Проверь. Mariabackup версия:
| |
Создание первой резервной копии
Основная команда Mariabackup требует целевого каталога, имени пользователя и пароля. Процесс резервного копирования создает полную копию файлов вашей базы данных.
Базовая резервная команда
Создайте полную резервную копию:
| |
--target-dir должен быть пустым каталогом или несуществующим (Mariabackup создает его). Никогда не используйте адресный каталог из предыдущей резервной копии.
Закрытие разрешений пользователя
Создайте выделенного резервного пользователя с минимальными необходимыми привилегиями:
| |
Структура каталога резервного копирования
После успешного резервного копирования ваш целевой каталог содержит:
| |
Файл xtrabackup_checkpoints содержит резервные метаданные, включая диапазон LSN (Log Sequence Number). Эта информация необходима для дополнительных резервных копий.
Подготовка резервных копий для восстановления
Вывод Mariabackup не является напрямую ресторируемым. На этапе подготовки для обеспечения соответствия файлов данных используются записи из redo журнала. Этот шаг является обязательным до восстановления.
Подготовка полной резервной копии
Запустите команду подготовки в папке резервного копирования:
| |
Во время подготовки, Mariabackup:
- Прочтите захваченные записи журнала redo
- Применяет совершенные транзакции к файлам данных
- Отзывы к незарегистрированным сделкам
- Создает чистые, последовательные файлы данных
Фаза подготовки модифицирует резервный каталог на месте. После подготовки резервная копия готова для восстановления, но больше не может использоваться в качестве базы для дополнительных резервных копий.
Подготовка материалов
Успешная подготовка показывает:
| |
Если вы видите ошибки во время подготовки, резервная копия может быть повреждена. Никогда не восстанавливайте из резервной копии, которая терпит неудачу в подготовке.
Восстановление из резервного копирования
Восстановление требует остановки MariaDB, замены каталога данных и фиксации разрешений. Всегда тестируйте процедуры восстановления, прежде чем они вам понадобятся в чрезвычайной ситуации.
Полная процедура восстановления
Остановите сервис MariaDB:
| |
Удалите или переместите существующий каталог данных:
| |
Скопируйте резервные файлы в каталог данных:
| |
Владение:
| |
Запустите MariaDB:
| |
Альтернативный вариант возврата
Если вам не нужно сохранять резервную копию, используйте --move-back вместо --copy-back:
| |
Это перемещает файлы вместо копирования, который быстрее и использует меньше дискового пространства. Однако, ваш каталог резервного копирования становится пустым после этой операции.
Проверка восстановления
Подключение к MariaDB и проверьте ваши данные:
| |
Проверьте журнал ошибок для любых проблем:
| |
Дополнительные резервные копии
Дополнительные резервные копии захватывают только изменения с момента последнего резервного копирования, уменьшая время резервного копирования и потребности в хранении. Они работают, записывая LSN в каждой резервной копии и только копируя страницы, измененные после этого LSN.
Создание дополнительной резервной копии
Во-первых, создайте полную резервную копию в качестве базы:
| |
Создание первой дополнительной резервной копии:
| |
Создание последующих дополнительных резервных копий на основе предыдущего:
| |
Подготовка дополнительных резервных копий
Дополнительные резервные копии требуют многоступенчатого процесса подготовки. Во-первых, подготовьте базовое резервное копирование с возможностью --apply-log-only:
| |
Флаг --apply-log-only предотвращает фазу отката, что сделает резервное копирование непригодным для применения дополнительных изменений.
Применить первую постепенную резервную копию:
| |
Применить второе дополнительное резервное копирование:
| |
Для окончательного инкрементного резервного копирования, запустите без --apply-log-only:
| |
Эта заключительная подготовка завершает фазу опрокидывания и делает резервное копирование ресторируемым.
Инкрементальная стратегия резервного копирования
Общая производственная стратегия сочетает еженедельные полные резервные копии с ежедневными дополнительными резервными копиями:
- Воскресенье: Полная резервная копия
- Понедельник-Суббота: Дополнительные резервные копии на основе предыдущего дня
Этот подход обеспечивает ежедневные точки восстановления при минимизации времени хранения и резервного копирования. Восстановление требует применения всех дополнительных резервных копий в последовательности, поэтому держите цепочку достаточно коротко, чтобы ограничить сложность восстановления.
Поток резервного копирования
Mariabackup поддерживает потоковую резервную копию вывода непосредственно на другой сервер или инструмент сжатия. Это устраняет необходимость временного местного хранения.
Поток в файл
Создайте сжатый архив резервного копирования:
| |
Поток на удаленный сервер
Отправка резервных копий непосредственно на удаленный сервер через SSH:
| |
Извлечение потоковых резервных копий
Вычтите архив xbstream перед подготовкой:
| |
Тогда готовьтесь и восстанавливайте, как обычно.
Частичные резервные копии
Mariabackup может резервировать определенные базы данных или таблицы, полезные, когда вам только нужно защитить определенные данные или иметь ограниченное хранение.
Поддержка конкретных баз данных
Используйте параметр --database для резервного копирования выбранных баз данных:
| |
Закрытие конкретных таблиц
Резервное копирование отдельных таблиц с параметром --tables:
| |
Частичные ограничения резервного копирования
Частичные резервные копии имеют ограничения:
- Невозможно восстановить сервер (требует полной замены каталога данных)
- Таблица пространства системы InnoDB (ibdata1) всегда включается
- Внешние ключевые отношения могут вызвать проблемы, если исключить соответствующие таблицы
В большинстве случаев полные резервные копии с выборочной реставрацией обеспечивают большую гибкость, чем частичные резервные копии.
Зашифрованные резервные копии
Mariabackup поддерживает шифрование AES для защиты резервных файлов в состоянии покоя. Шифрование происходит во время процесса резервного копирования, поэтому незашифрованные данные никогда не касаются диска.
Создание зашифрованных резервных копий
Создание ключа шифрования:
| |
Создание зашифрованного резервного копирования:
| |
Расшифровка резервных копий
Расшифровка перед подготовкой:
| |
Затем подготовьтесь и восстанавливайте нормально.
Ключевое управление
Храните ключи шифрования отдельно от резервных файлов. Если злоумышленник получает доступ к вашим резервным копиям, но не к ключам, ваши данные остаются защищенными. Рассмотрите возможность использования ключевых служб управления, таких как OpenBao - форк Vault с открытой лицензией.
Скрипты автоматизации резервного копирования
Для среды, где вы предпочитаете автоматизацию на основе скриптов, вот готовый к производству сценарий резервного копирования.
Полный сценарий резервного копирования
Создайте /usr/local/bin/mariadb-backup.sh:
| |
Сделайте его исполняемым и расписанием с cron:
| |
Добавить в crontab для ежедневных резервных копий 3 утра:
| |
Инкрементальный сценарий резервного копирования
Создайте /usr/local/bin/mariadb-incremental.sh:
| |
Контроль и проверка
Резервные копии бесполезны, если они не восстанавливаются. Регулярная проверка улавливает проблемы до того, как они станут чрезвычайными ситуациями.
Сценарий проверки
Создайте сценарий, который проверяет восстановление на временный экземпляр /usr/local/bin/verify-incremental.sh:
| |
Мониторинг резервного здравоохранения
Отслеживать эти метрики для обеспечения надежности резервного копирования:
- Продолжительность резервного копирования: Замедленное повышение показателей
- Размер резервного копирования: Неожиданные изменения могут сигнализировать о проблемах данных
- Последняя успешная резервная копия: Если старше, чем ожидалось
- Успех подготовки: Неудачная подготовка означает непригодную резервную копию
Настройте оповещения для резервных сбоев. Пропущенное резервное копирование лучше обнаружить сразу, чем во время кризиса.
Передовая практика
В соответствии с этими практиками обеспечивается надежное, надежное резервное копирование операций.
Правило резервного копирования 3-2-1:
- 3 копии ваших данных: производственная база данных, локальное резервное копирование и удаленное резервное копирование
- 2 различных типа носителей: локальное дисковое и облачное хранилище
- 1 место за пределами участка: различное физическое местоположение от производства
Это защищает от аппаратных сбоев, стихийных бедствий на сайте и атак выкупа.
Регулярное восстановление
Расписание ежемесячных восстановительных испытаний:
- Выберите случайную резервную копию с предыдущей недели
- Восстановление в тестовой среде
- Проверка целостности и полноты данных
- Время восстановления документов
Защищайте свои резервные копии
Резервные копии содержат все ваши данные о производстве. Защитите их соответственно:
- Зашифровать резервные копии в покое
- Ограничение доступа к резервному хранению
- Записи доступа к архивам аудита
- Храните ключи шифрования отдельно от резервных копий
Завершение
Mariabackup предоставляет быстрые, надежные горячие резервные копии для баз данных MariaDB любого размера. Его способность резервного копирования без блокировки операций делает его необходимым для производственных систем, где время простоя стоит денег. Начните с простых полных резервных копий, добавьте дополнительные резервные копии по мере роста вашей базы данных и внедрить шифрование для чувствительных данных.
Помните, что создание резервных копий - это только половина работы. Регулярные восстановительные испытания, мониторинг и документация завершают надежную стратегию резервного копирования. Когда наступает катастрофа, ваша подготовка определяет, занимает ли восстановление минуты или становится кризисом.
Вы можете поделиться статьей со своими друзьями в социальных сетях, которым может быть интересна эта статья или просто оставить комментарий ниже. Спасибо.