Налаштування гарячого резервного копіювання MySQL з Percona XtraBackup

Резервна копія, яку жодного разу не перевіряли, — це не захист, а надія. Ми налаштовуємо гаряче резервне копіювання MySQL на Percona XtraBackup під ключ: копія знімається на працюючій базі, без зупинки сервісу. Відновлення займає хвилини, а не години.
Часті запитання

Резервне копіювання MySQL на Percona XtraBackup: що ламається

Копії формально є: нічний дамп відпрацьовує, файл їде у сховище, позначка у звіті стоїть.

Проблема в тому, що логічне вивантаження читає базу цілком, і зі зростанням бази вікно резервного копіювання зростає разом із нею — спочатку це година вночі, потім чотири, а далі процес зачіпає ранковий трафік і накладається на продове навантаження.

Гаряче резервне копіювання MySQL через Percona XtraBackup знімає основну частину цього болю: копіюються фізичні сторінки даних, і запис не зупиняється на весь час вивантаження.

Але блокування під час копіювання не зникають зовсім — потрібна коротка фіксація узгодженої точки, і якщо в цей момент у базі висить довга транзакція, точка не береться: запис стає і стоїть рівно стільки, скільки живе транзакція.

Окремий головний біль — розбухання журналів змін на диску, коли читання копії відстає від темпу запису.

Друга половина історії — відновлення. Повна копія розгортається передбачувано, але без ланцюжка інкрементних копій і розібраних журналів відкат перетворюється на ручну роботу чергового: знайти потрібний набір файлів, розгорнути, наздогнати зміни, перевірити консистентність. Вночі, під тиском, з ризиком помилитися в порядку кроків.

Розбираємо, як це закривається: що налаштовується в самому Percona XtraBackup, як будується розклад, щоб вікно не зростало, і як заздалегідь перевіряти, що копія справді відновлюється.

Що дає гаряче резервне копіювання: вимірюваний ефект

Гаряча копія знімається з працюючого сервера: Percona XtraBackup читає сторінки даних фізично, тому зупиняти запис не потрібно, а сервіс продовжує обслуговувати клієнтів.

Ефект ми вимірюємо в трьох величинах — вікно копіювання, час відновлення і клас відмов, які перестають бути аваріями.

Вікно копіювання стискається в рази

Копія читає файли даних безпосередньо, без логічного дампу і проміжних таблиць. Далі працюють інкрементні копії: одна повна, наступні — тільки змінені сторінки. На типовій базі вікно копіювання падає з годин до хвилин, і цикл вкладається в період низького навантаження.

Час відновлення — десятки хвилин замість годин

Копію не потрібно імпортувати рядок за рядком: файли розпаковуються і підключаються на підготовлений екземпляр. Підготовка вирівнює незавершені транзакції, тому після старту сервер віддає консистентний знімок на момент завершення копії.

Для сервісу це вимірюване скорочення простою: відновлення вкладається у вікно, відоме черговій зміні заздалегідь.

Зникає клас відмов «копія є, але не піднімається»

Перевірка відновлення на окремому контурі — частина регламенту, а не разова акція. Ми фіксуємо час підготовки і старту, звіряємо консистентність даних і тільки після цього вважаємо копію придатною.

Точка консистентності дає точку відкату при розсинхронізації репліки: сервіс повертається до стану на момент копії, а не до випадкового знімка.

Режими копіювання та стиснення: порівняння варіантів

Вибір режиму визначається не обсягом бази, а тим, скільки часу займе відновлення і як часто змінюються дані між копіями. Нижче — варіанти, між якими реально вибирають при налаштуванні Percona XtraBackup, та їхні обмеження.

Варіант Коли підходить Обмеження
Повна копія Базовий шар для будь-якого циклу, відкат на довільний момент Займає весь обсяг даних, час створення та відновлення зростає лінійно
Інкрементна копія Великі бази з малим відсотком змін між знімками Відновлення потребує ланцюжка «повна + всі інкременти», розрив ланцюжка ламає відкат
Потокове передавання Копія одразу на інший сервер або в об’єктне сховище Чутлива до пропускної здатності каналу, обрив потоку означає перезапуск
Логічне вивантаження Перенесення між версіями, вибіркові таблиці Відновлення у рази довше за фізичне, не тягне великі бази

Стиснення і шифрування накладаються поверх будь-якого режиму. Копія стискається на льоту, але платить за це завантаженням процесора, а ключ шифрування зберігається окремо від самої копії — інакше захист втрачає сенс.

На практиці повну копію ставлять базовим шаром, інкрементні — між ними, а потокове передавання вмикають, коли місця на диску під проміжний шар немає. Ми перевіряємо не тільки створення копії, а й повний цикл відновлення на окремому стенді — інакше режим вважається неперевіреним.

Впровадження Percona XtraBackup: етапи інженерної роботи

Впровадження резервного копіювання починається не зі встановлення утиліти, а з розбору того, як база живе зараз: обсяг, швидкість зростання, вікно мінімального навантаження, допустимий час простою при відновленні.

Спираємося на Percona XtraBackup — гаряче копіювання без зупинки сервісу і тривалих блокувань таблиць, але результат тримається на розкладі та зберіганні, а не на самій утиліті.

  1. Аудит схеми копіювання. Розбираємо, що і куди копіюється зараз, чи вистачає місця, коли востаннє хтось перевіряв відновлення. Підсумок — карта ризиків: копії на тому самому диску, завдання без контролю коду повернення, вікна з піковим навантаженням.
  2. Проєктування. Повна копія раз на добу плюс інкрементні між ними, глибина зберігання і ротація, вивезення за межі сервера бази. На виході — розклад і розрахунок, скільки даних втрачаємо при збої.
  3. Налаштування. Окремий користувач з мінімально потрібними правами, стиснення і шифрування, запуск за розкладом із журналом виконання та оповіщенням про падіння завдання.
  4. Перевірка відновлення. Розгортаємо копію на окремому контурі, заміряємо час до робочого стану, звіряємо цілісність ключових таблиць. Копія, яку не розгортали, копією не вважається.
  5. Переведення в експлуатацію. Моніторинг віку останньої успішної копії, розміру, тривалості та вільного місця — алерт приходить раніше, ніж місце закінчиться або завдання впаде.
  6. Передача. Регламент відновлення з покроковими командами, відповідальні та періодична навчальна перевірка на тестовому контурі, щоб процедура не залишилася усною домовленістю.

Конфігурації, схеми та регламенти відновлення бази

Підсумок роботи — не «налаштований сервер», а комплект артефактів, за яким резервне копіювання відтворюється з нуля і передається іншому інженеру.

Усе лежить поруч із базою: конфігурації в системі контролю версій, регламенти — в документації, доступи — в облікових записах із журналом. Нижче — що саме залишається у вашої команди після впровадження.

  • Конфігурація резервного копіювання: файли налаштувань Percona XtraBackup, розклад повних та інкрементних копій, окремий вузол для підготовки знімка перед викладкою.
  • Схема зберігання копій: рівні зберігання, термін життя за поколіннями, вивезення копій за межі майданчика, ротація зі збереженням точки відкату на попередній реліз.
  • Політики доступу до копій: роздільні облікові записи на запис і читання, шифрування архівів, ключі зберігаються поза сервером бази, журнал звернень до сховища.
  • Регламент відновлення: покроковий порядок розгортання, цільовий час відновлення і допустима втрата даних, перевірка цілісності, дії при неповному наборі журналів.
  • Автоматична перевірка копій: регулярне розгортання знімка на ізольованому стенді, звірка контрольних сум ключових таблиць, звіт із результатом.
  • Оповіщення про стан: сигнали на пропущений запуск, зростання тривалості, помилку підготовки і заповнення сховища — до того, як копія знадобиться.
  • Інструкції черговому: перші дії при збої, порядок оповіщення, фіксація інциденту.
  • Матриця відповідальності: хто володіє розкладом, хто перевіряє результати перевірок, хто ротує ключі та облікові записи.

Кейс: повернення бази за хвилини замість годин

Клієнт прийшов після інциденту: сервер бази помер у розпал робочого дня, а підняли його тільки до вечора.

Бекап робився нічним повним дампом через mysqldump — вікно копіювання розтягувалося на 4-5 годин, на час вивантаження база відповідала помітно повільніше, а самі копії лежали на тому самому диску, що й дані.

Перевірка копій зводилася до перегляду логу: запуск відновлення на окремому стенді не робили жодного разу, і приблизно третина архівів не розгорталася.

Перевели резервне копіювання на Percona XtraBackup — гаряче фізичне копіювання без зупинки сервера.

Схема: тижневий повний бекап, поверх нього щоденні інкременти за зміненими сторінками, підготовка копії окремою командою на резервному вузлі, щоб вона була готова до розгортання, а не вимагала доопрацювання у момент аварії.

Кожну копію автоматично розгортаємо на тестовому стенді і звіряємо контрольні суми ключових таблиць — перевірка копій стала частиною розкладу, а не ручною операцією на свята.

Метрики до і після: вікно копіювання скоротилося з 4-5 годин до 12 хвилин, повне відновлення — з 6 годин до 9 хвилин, частка успішно розгорнутих копій зросла з 70% до 100%.

Зник цілий клас відмов «архів є, але не піднімається»: якщо копія не проходить перевірку, черговий дізнається про це тієї ж ночі, а не у момент аварії.

В експлуатації залишилися розклад, алерти на пропущений або провалений бекап і короткий регламент відновлення з точними командами — щоб уночі не згадувати порядок дій.

Чим відрізняється гаряча копія від логічної: що вибрати

Різниця в тому, що саме читається з диска. Гаряча фізична копія переносить сторінки табличних просторів і журнал транзакцій на працюючому сервері, логічна — перетворює дані на потік SQL-інструкцій. Звідси розходяться навантаження, час відновлення і гранулярність.

Percona XtraBackup читає файли даних і журнал паралельно, не зупиняючи запис: сервер продовжує обслуговувати запити, а копія залишається узгодженою на момент старту. Відновлення — розпакування і застосування накопиченого журналу, це хвилини навіть на базі в сотні гігабайт.

Логічне вивантаження йде запитами і пише текст. Воно переносиме між версіями і дозволяє забрати одну таблицю, але час знімання зростає лінійно з обсягом, а відновлення займає години: рядки вставляються заново, індекси перебудовуються після завантаження.

Спосіб Навантаження при зніманні Відновлення Гранулярність
Гаряча фізична копія Читання диска, запис не блокується Застосування журналу — хвилини Вся база цілком
Логічне вивантаження Повний прохід по таблицях запитами Вставка рядків і перебудова індексів — години Окремі таблиці
Файлова копія із зупинкою Сервер закритий на запис Копіювання файлів назад Вся база цілком

Правило вибору просте: поки база вкладається в коротке вікно і потрібне вибіркове вивантаження, достатньо логічної. Коли обсяг вимірюється сотнями гігабайт або вікно стиснуто до хвилин, основою стає гаряча фізична копія, а логічна залишається доповненням для точкових задач.

Технічні сумніви: консистентність, навантаження, перевірки

Копія на живій базі піднімає три питання: чи не роз'їдеться знімок, чи не просяде сервіс під читанням і чи можна дістати одну таблицю замість усієї бази.

Нижче — те, що ми уточнюємо до запуску: на цих відповідях будується режим роботи Percona XtraBackup і політика зберігання копій.

Копія залишиться консистентною, якщо база пише під навантаженням?

Файли даних читаються на ходу, а накопичені зміни з журналу транзакцій застосовуються до знімка — на виході стан на один момент часу. Довга транзакція лише утримує позицію журналу, тому ставимо поріг за її тривалістю і попередження: копіювання не зависає мовчки.

Наскільки копіювання навантажує робочий сервер?

Основне навантаження — читання даних і журналу, запис застосунків майже не зачіпається, тому пікова пропускна здатність сервісу не провалюється. Кількість потоків і швидкість читання обмежуємо: на слабкому диску режим м'якший, на швидкому забираємо більше.

Чи можна відновити не всю базу, а одну таблицю?

Так. Потрібна таблиця дістається з підготовленої копії і підключається поруч із робочими даними. Розбір помилкового видалення займає хвилини, повний відкат бази при цьому не потрібен.

Скільки копій тримати і де?

Повна копія раз на тиждень плюс щоденні прирощення і обов'язкове вивезення в незалежне сховище. Ротація задана за віком і кількістю копій: старі знімаються автоматично, обсяг сховища перестає зростати безконтрольно.

Як переконатися, що копія відновлювана?

Копія регулярно розгортається на окремому вузлі, база піднімається і проходить перевірний набір запитів зі звіркою контрольних сум. Поки прогон не пройшов, копія вважається непридатною і не потрапляє до набору для відновлення.

Обговоримо задачу: що підготувати до розмови

Щоб оцінка і план робіт спиралися на факти, а не на припущення, до розмови достатньо принести кілька ввідних. Вони визначають обсяг і те, як ляже Percona XtraBackup на вашу схему — далі обходимося без серії уточнювальних листів і повторних дзвінків.

  • Схема сервісів: де живуть бази, чи є репліки, хто пише в майстер і як застосунок переживає відмову вузла.
  • Поточні копії: чим робляться, як часто, куди складаються і коли востаннє перевіряли відновлення.
  • Вимоги до часу відновлення: який простій допустимий і на яку точку в часі потрібно відкочуватися.
  • Обсяги і динаміка: розмір даних, добовий приріст, вікна низького навантаження, доступна смуга до сховища.
  • Інфраструктура: де розміщуємо копії, чи є окремий контур, як влаштовані доступи і шифрування.
  • Обмеження: терміни зберігання, регламент доступу, що вже траплялося і скільки зайняло відновлення.

Якщо частини даних немає під рукою — відновимо картину на дзвінку. Опишіть задачу резервного копіювання своїми словами: повернемося з оцінкою і планом робіт та переліком перевірок відновлення, які закривають ризик тихої втрати даних.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142