Настройка PostgreSQL бэкапирования через WAL-G

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

Резервное копирование WAL-G PostgreSQL: что ломается

Ночной полный дамп завершается с кодом 0, отчёты зелёные, а после повреждения данных кластер поднимается из копии суточной давности. Операции за прошедшие сутки — заказы, платежи, правки справочников — приходится собирать вручную из внешних систем. Ошибка в дампе вскрывается только в момент аварии, когда времени на разбор уже нет.

Корень — в разрыве между копиями. Логический дамп фиксирует состояние на момент снятия, и всё, что произошло после, в него не попало. Восстановление базы данных возможно только на момент последнего снимка: выбрать точку между дампами нечем, а сам дамп на крупном кластере снимается часами.

<cite>WAL-G</cite> закрывает этот разрыв: базовая копия снимается редко, а архив журнала транзакций пополняется непрерывно. Точка восстановления смещается с суток на конкретную секунду — можно откатиться к состоянию перед ошибочным обновлением. Настройка WAL-G при этом включает политику хранения, шифрование и выгрузку в объектное хранилище.

Отдельная часть работы — регулярная проверка: архив разворачивается на отдельном стенде, сверяется целостность, замеряется время восстановления. Без этого архив есть, а поднять из него кластер не получается.

Ниже разбираем, где такая схема ломается чаще всего и как выглядит резервное копирование PostgreSQL, которое переживает аварию.

Что даёт непрерывный архив журнала транзакций

Ежедневный полный дамп отвечает на вопрос «как восстановиться к утру», но не закрывает последние часы работы. Сбой или неудачная миграция в середине дня откатывают базу к ночной копии, и всё, что было после неё, приходится собирать вручную по логам приложений. Непрерывное резервное копирование на WAL-G убирает эту дыру: сегменты журнала транзакций уезжают в объектное хранилище по мере заполнения, а не по расписанию.

Точка восстановления сокращается с суток до минут — фактически до интервала выгрузки сегмента. Восстановление идёт в два шага: разворачивается ближайшая базовая копия, поверх неё воспроизводится журнал до нужной метки. Это позволяет остановиться за секунду до неудачной миграции или ошибочного удаления, а не «на последней ночи».

Вариант Когда подходит Ограничения
Полный дамп по расписанию небольшие базы, восстановление к началу суток приемлемо теряются часы работы, выгрузка занимает окно и нагружает сервер
Базовые копии в фоне крупные объёмы с редкими изменениями между копиями нужен архив журнала, иначе разрыв не закрыть
Непрерывный архив журнала сервисы с постоянной записью и жёсткими требованиями к защите данных нужно объектное хранилище и регулярная проверка целостности архива

Время восстановления базы становится предсказуемым: базовые копии снимаются реже и в фоне, без ночного окна, когда сервер занят выгрузкой. Защита данных перестаёт зависеть от одного расписания — архив проверяется пробной развёрткой на отдельном стенде, поэтому битый сегмент находится до аварии, а не во время неё. В итоге уходит целый класс отказов «потеря последних часов работы», а возврат к контрольной точке превращается в штатную операцию.

Режимы архивации WAL-G PostgreSQL: сравнение подходов

WAL-G выполняет два независимых действия: непрерывно выгружает сегменты журнала предзаписи в объектное хранилище и периодически снимает полный снимок базы. Восстановление всегда опирается на снимок, а журнал лишь доигрывает изменения до нужной точки — поэтому выбор режима архивации это в первую очередь вопрос допустимого окна потери данных и предсказуемости времени возврата в строй.

На практике сравнивают четыре схемы. Разница проявляется не в момент настройки, а в момент аварии, когда нужно поднять базу за отведённое окно.

Вариант Когда подходит Ограничения
Непрерывный архив журнала Критичные системы, нужна точка восстановления внутри часа Без базового снимка восстанавливать нечего; хранилище растёт, нужен срок хранения и ротация
Периодический полный снимок базы Небольшие базы, потеря данных за интервал между снимками допустима Нельзя вернуться на произвольную точку; время восстановления растёт вместе с объёмом
Гибридная схема: снимок плюс непрерывный журнал Основной вариант для боевых баз с требованием к точке восстановления Требует контроля срока хранения и регулярных проверок восстановления
Реплика для чтения как дополнение Разгрузка основной базы и быстрый возврат к работе при отказе узла Не заменяет резервную копию: ошибочная операция тиражируется на неё

Гибридная схема резервного копирования закрывает большинство задач: снимок по расписанию даёт надёжную основу, непрерывный архив — точку внутри интервала, а реплика для чтения снимает часть нагрузки и сокращает простой при отказе.

Отдельно подчеркнём: реплика не является бэкапом. Ошибочное удаление или порча данных мгновенно повторяются на ней, поэтому независимая копия в хранилище с версионированием и отдельными правами остаётся обязательной. Какой режим архивации нужен вам — зависит от требуемой точки восстановления; разберём это при обсуждении задачи.

Внедрение: от аудита кластера до передачи регламентов

Порядок работ выстроен так, чтобы к моменту включения архивации на боевом контуре команда уже знала, что восстановление работает. Начинаем с аудита: объём кластера, интенсивность записи, реплики, текущий режим журналирования. Схему хранения проектируем до правок в конфигурации продакшна — иначе первый же прогон упирается в переполненное хранилище или в удалённые журналы.

  1. Аудит кластера. Версия, топология реплик, темп генерации журналов, существующие скрипты и их расписание. На выходе — перечень разрывов, из-за которых непрерывной архивации сейчас нет.

  2. Схема хранения. Объектное хранилище, раскладка базовых копий и журналов, удержание и правила удаления — реестр не растёт бесконтрольно, а откат на нужную точку остаётся возможным.

  3. Настройка архивации. Параметры журналирования, доступы, шифрование, ротация. Доставку журналов и базовых копий в хранилище закрывает WAL-G, он же проверяет целостность архивов.

  4. Проверка на отдельном стенде. Разворачиваем копию из архива, замеряем время полного отката и отката на точку во времени, сверяем контрольные суммы.

  5. Автоматизация контроля. Ежедневное тестовое восстановление, оповещения о разрыве цепочки журналов и устаревшей копии, отчёт о свежести архива.

  6. Обучение дежурной смены. Отрабатываем сценарии: полный откат, восстановление на точку, возврат отдельной таблицы, поведение при недоступном хранилище.

  7. Передача регламентов. Схема, конфигурации, пошаговые инструкции, чек-листы, матрица ответственных — дежурный восстанавливает кластер без звонка разработчику.

Комплект конфигураций, схем и регламентов на выходе

После внедрения у заказчика остаётся не набор разрозненных команд, а воспроизводимый комплект: по нему бэкапы можно поднять заново на новом узле, проверить силами дежурной смены и передать другой команде без разбора переписки. Ниже — состав, который мы фиксируем письменно.

  • Файлы настроек архивации журналов и базовых копий — с комментариями к каждому параметру: глубина хранения, расписание, ротация, обработка сбоев записи в репозиторий.
  • Схема инфраструктуры: где стоят базы, куда пишутся копии, какие узлы и зоны отказа задействованы, где проходит шифрование и как хранятся ключи.
  • Политики доступа: роли на чтение и запись репозитория, кто вправе запускать восстановление, разделение обязанностей и порядок выдачи и отзыва прав.
  • Регламент резервного копирования: типы копий, периодичность, срок хранения, точки восстановления на заданный момент времени и действия при нехватке места.
  • Журнал проверок восстановления: дата, объём, время до работоспособности базы, результат сверки контрольных сумм и список найденных расхождений.
  • Порядок действий при аварии: пошаговый сценарий с точками принятия решения, критериями переключения на копию и планом отката.
  • Инструкция для дежурной смены и оповещения: какие метрики архивации отслеживаются, при каких порогах срабатывает сигнал и кому он адресован.

Комплект обновляется при каждом изменении конфигурации — иначе документация по резервному копированию расходится с реальностью за пару месяцев. Опишите текущее окружение, и мы вернёмся с оценкой и планом работ.

Кейс: восстановление после повреждения дискового массива

Ночью вышел из строя контроллер дискового массива, и база перешла в режим только для чтения. Последний логический дамп был снят почти за сутки до аварии, поэтому оценочно потерялось около 20 часов операций: заказы, статусы оплат, правки каталога. Сервис стоял девять часов, пока копия поднималась из дампа, а расхождения с внешними системами разбирали вручную ещё несколько дней.

Перешли на непрерывную выгрузку журналов предзаписи в объектное хранилище: суточный базовый снимок, поверх него — сегменты журнала каждые несколько минут, отдельные политики хранения и контроль целостности по контрольным суммам. WAL-G шифрует архив на стороне базы, продолжает цепочку после обрыва канала и позволяет восстановить состояние на произвольный момент времени, а не на момент снимка. Старые копии не копятся: правило жизненного цикла оставляет нужное число поколений и чистит остальное, поэтому архив не растёт бесконтрольно.

Точка восстановления сократилась с суток до минут, а подъём базы — с девяти часов до 25 минут на отдельном контуре. Раз в квартал проводим учения: поднимаем копию из архива, сверяем число записей и ключевые агрегаты, замеряем время до готовности сервиса. Битые сегменты и расхождения ловим на учениях, а не в момент аварии — целостность данных подтверждается проверками, а не предположениями.

Чем отличается архив журнала от логической репликации?

Реплику часто путают с резервной копией, хотя горизонт у них разный. Реплика постоянно применяет изменения с основного узла и держит состояние на текущий момент: через несколько секунд после ошибочного изменения без условия на ней будет тот же испорченный набор данных. Истории она не хранит — откатить её назад нельзя, потому что прошлого в ней просто нет.

Архив журнала устроен наоборот: это непрерывная цепочка изменений, накопленная во времени. Восстановление на точку во времени разворачивает базовую копию и проигрывает изменения до нужной метки — состояние за минуту до сбоя, до неудачной правки схемы или до порчи данных выгрузкой. Глубину отката задаёт срок хранения архива, а не момент последней синхронизации, поэтому доступны любые точки прошлого внутри этого окна.

Логическая репликация решает третью задачу — передаёт изменения разобранными операциями и позволяет держать реплику для чтения. Отчёты и тяжёлые выборки уходят с основного узла, не мешая записи, а переключение при отказе занимает секунды. Но покрывает такая реплика только текущее состояние и логическую ошибку разносит по всем узлам с той же скоростью.

Поэтому механизмы не заменяют, а дополняют друг друга: реплика закрывает доступность и нагрузку на чтение, архив — сохранность и откат на любую точку прошлого. Сбор журнала строят поверх объектного хранилища, а WAL-G добавляет к нему инкрементальные копии и проверку целостности перед разворотом — восстановление перестаёт зависеть от того, уцелел ли узел.

Технические сомнения: целостность, совместимость, проверка

Перед переключением на непрерывное архивирование инженеры задают один и тот же набор вопросов: что с совместимостью, как проверить копию, кто видит архив и как долго он живёт. Ниже — прямые ответы: они же становятся пунктами приёмки.

Это совместимо с нашей веткой PostgreSQL?

WAL-G опирается на штатный механизм журналов предзаписи и работает с актуальными поддерживаемыми ветками PostgreSQL, поэтому обновление минорной версии не разрывает копирование. До переключения прогоняем полный сценарий на стенде с вашей конфигурацией.

Как убедиться, что копия действительно восстановится?

Непроверенная копия — надежда, а не гарантия. Разворачиваем архив на отдельном стенде по расписанию, сверяем целостность данных и восстанавливаем состояние на произвольную точку во времени. Итог последней сверки фиксируем в журнале — видно, когда копия реально поднималась.

Архив шифруется и кто имеет к нему доступ?

Шифрование включается до отправки в хранилище, ключ живёт вне облачного бакета: без него содержимое архива не читается даже при доступе к объектам. Ключи ротируем и храним отдельно от самих копий.

Сколько копии живут и что при обрыве связи с хранилищем?

Срок задаётся политикой хранения: свежие копии держим плотно, старые прореживаем, дальше объекты удаляются автоматически. При обрыве канала архив не теряется — журналы накапливаются локально и уходят в бакет при восстановлении связи, растёт только отставание.

Обсудим задачу резервного копирования и вернёмся с планом

Первый шаг — понять, что уже есть. Пришлите версию сервера, примерный объём базы, текущий регламент копирования и требования к окну потери данных: этого достаточно, чтобы оценить трудозатраты и предложить рабочую схему. Если копии не снимаются вовсе или делаются вручную — это тоже нормальная точка старта.

Оценка не требует доступа к боевому контуру: сначала разбор по описанию и логам. Если понадобится посмотреть фактические конфигурации и историю копий, согласуем окно и минимальные права, чтобы ничего не трогать на живой системе.

Что входит в работу:

  • аудит резервного копирования: проверяем, что копии реально снимаются, читаются и разворачиваются, а не просто занимают место;
  • настроить резервное копирование на WAL-G: непрерывная запись журналов плюс базовые копии в объектное хранилище;
  • план восстановления: пошаговый сценарий на произвольную точку во времени с проверкой на копии боевой базы;
  • политика хранения и расписание: сколько держим полных копий и журналов, когда и что удаляем;
  • мониторинг с оповещениями о сбоях, отставании журналов и расхождении контрольных сумм;
  • документация и передача дежурной смене: команды восстановления, точки контроля, порядок эскалации;
  • сопровождение баз данных: регулярные проверки по расписанию, тестовое восстановление раз в квартал, реакция на инциденты.

Опишите задачу и текущее состояние — вернёмся с оценкой, схемой и планом работ по этапам.

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

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139