Из-за временных ограничений на территории РФ наблюдаются проблемы с оплатой. Если платёж не проходит, оставьте запрос в службу поддержки.Служба поддержки работает 24/7 — мы всегда на связи по вопросам хостинга и серверов.Открыт прием заявок на аренду выделенных серверов и размещение оборудования в дата-центре.Напоминаем: рекомендуем включить резервное копирование для дополнительной защиты данных.Доступна новая линейка VPS/VDS с NVMe-дисками и увеличенной производительностью.Технические работы на части серверов завершены. Все сервисы работают в штатном режиме.
Статья5 мин чтенияПросмотры1

Реплика базы повторила удаление: где искать состояние до ошибки

На примере MySQL разбираем границу между второй работающей базой и сохранённой историей, а также окно помощи задержанной реплики.

Комментарии 0

Два металлических диска с одинаковой выемкой и отдельный целый диск позади — образ реплик и сохранённой истории.
В этой статье

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

Разберём эту границу на обычной репликации MySQL 8.4. Это объяснение устройства защиты данных, а не инструкция по остановке реплики или восстановлению рабочей базы. Конкретные команды зависят от топологии и требуют отдельного проверенного плана. Документация сверена 27 сентября 2026 года; аварийный сценарий на стенде здесь не воспроизводился.

Два сервера могут хранить одну ошибку

Представим учебную последовательность. В 10:00 основная база содержит нужный каталог. В 10:03 приложение ошибочно удаляет часть товаров, и транзакция успешно фиксируется. В 10:04 реплика применяет это изменение. В 10:20 менеджер замечает пропажу.

На момент обнаружения оба узла могут быть технически исправны и согласованы между собой. Проверка «сервер доступен, репликация догнала источник» в таком случае не подтверждает правильность каталога. Она отвечает на другой вопрос: дошли ли изменения до второго узла. Ошибочное действие приложения тоже является изменением данных.

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

Что добавляет отдельная резервная копия

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

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

Администратору потребуется установить границу ошибочной операции, доступную историю изменений и возможность восстановить нужное состояние в изоляции. Для магазина отдельно сверяют внешние оплаты, обмен с 1С и действия, которые уже произошли за пределами базы. Восстановление строки заказа не отменяет реальный платёж и не должно запускать повторную обработку без проверки.

Задержанная реплика даёт ограниченное окно

MySQL 8.4 поддерживает намеренно задержанную репликацию: транзакция применяется не раньше заданного промежутка после её фиксации на непосредственном источнике. По умолчанию дополнительная задержка равна нулю. Документация прямо называет защиту от ошибок пользователя одним из применений задержки.

В учебном примере зададим окно 30 минут. Ошибочное изменение зафиксировано в 10:03, значит оно не должно примениться на такой реплике раньше 10:33. Если ошибку нашли в 10:20, до этой границы остаётся 13 минут. Но эти минуты включают проверку диагноза, решение ответственного и выполнение заранее подготовленной процедуры. По истечении задержки реплика продолжит применять транзакции. Чтобы остановить применение ошибочной транзакции, администратору нужна заранее подготовленная процедура.

Если ошибку заметили в 11:00, рассчитывать на сохранённое состояние уже нельзя: минимальная задержка прошла. Фактическое отставание может оказаться больше по другим причинам, но это не надёжный запас времени. Его проверяют по реальному состоянию реплики. Намеренная задержка также означает, что этот экземпляр специально показывает более старые данные; его нельзя безусловно считать лучшим кандидатом для срочного переключения магазина.

Что должно быть известно до инцидента

  • Какую задачу решает каждый экземпляр базы: чтение, переключение при отказе, создание резервных копий или задержанное применение изменений.

  • Где хранятся отдельные копии, какие прошлые точки доступны и когда проверяли восстановление из них.

  • За какое время команда обычно замечает ошибку в данных и кто принимает решение о восстановлении.

  • Как сверяются данные магазина с оплатами и интеграциями после возврата к прошлому состоянию.

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

Хороший ответ на вопрос «сможем ли вернуть удалённый каталог?» называет сохранённый момент, способ его проверки и судьбу более поздних правильных изменений. Ответ «у нас два сервера» описывает инфраструктуру, но этих трёх сведений не содержит.

Обсуждение 0

Делись опытом и задавай вопросы. Комментарии без ссылок появляются после проверки редактором.

Пока никто не написал. Начни обсуждение.