RE:NODE

Эксплуатация11 мин чтения

Проверка восстановления до того, как оно понадобится: 30 минут

Непроверенный бэкап - это гипотеза. Учения по восстановлению на полчаса, цифры, которые они дают, и шесть вещей, которые обычно ломаются.

Обновлено

0 прочтений

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

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

Что измеряют учения#

Из проверки восстановления выходят три числа, и только одно из них - то, которого ждут.

  • Время восстановления. Сколько проходит от «нам нужен бэкап» до «всё проверено и люди вернулись». Не индикатор прогресса на кнопке восстановления, а всё целиком, включая поиск нужного архива, вспоминание переменных запуска и проверку, что мир тот самый.
  • Точка восстановления. Сколько работы восстановление выбросило. Если бэкап сделан в 04:00, а инцидент случился в 21:00, это семнадцать часов, и именно на учениях вы узнаёте, что семнадцать часов вашего конкретного сервера - неудобство или конец сообщества.
  • Bus factor. Какая часть процедуры живёт только в голове одного человека. Именно ради этого числа затеваются учения. Восстановление, которое занимает двадцать минут, когда его делаете вы, и невозможно для остальных, - это не план восстановления.

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

Тридцатиминутные учения#

Выберите тихий час. Вы не трогаете рабочий сервер, так что риска нет, кроме стоимости пробного сервера, но вам нужно, чтобы вас не отвлекали.

  1. Выберите бэкап, которым вы реально воспользовались бы, а не самый свежий. Последний архив - тот, в котором вы увереннее всего, поэтому он и наименее полезен для проверки. Возьмите самый старый из тех, что ещё укладываются в срок хранения: он проверяет, работает ли хранение и совпадает ли архив трёхнедельной давности с текущей версией сервера.
  2. Не смотрите сначала на сервер. Начните со списка бэкапов и ни с чего больше. Если вы ловите себя на том, что вам нужно что-то проверить на рабочем сервере, чтобы двигаться дальше, запишите это: это зависимость вашего плана от машины, которой во время настоящего инцидента может и не быть.
  3. Восстанавливайте туда, что не является рабочим сервером. Второй сервер на самом дешёвом тарифе, тестовый сервер, который у вас уже есть, или ваша собственная машина. Восстановление поверх работающего сервера, чтобы посмотреть, получится ли, - не проверка, а авария с дополнительными шагами.
  4. Запустите секундомер и следуйте письменной процедуре. Если письменной процедуры нет, учения этого квартала - написать её по ходу дела, в том порядке, в каком вы действительно всё делали.
  5. Поднимите сервер. Примените переменные запуска, выделите порты, запустите и смотрите на консоль, а не на индикатор. Лог говорит то, чего не скажет цветная точка статуса.
  6. Проверьте как следует. См. следующий раздел. «Он запустился» - не проверка: сервер Minecraft без папки world/ прекрасно запускается и генерирует новую.
  7. Запишите четыре времени и остановитесь. Поиск, восстановление, запуск, проверка. Затем удалите пробный сервер или оставьте его, если предпочитаете иметь staging: см. staging и production на одном аккаунте.
ШагОбычноТревожный признак
Найти нужный бэкап1-3 минБольше пяти минут означает, что бэкапы не подписаны
Восстановить архив2-15 минЗависит от размера; измерьте свой, а не предполагайте
Применить настройки и запустить3-10 минДолго здесь означает, что настройки на стороне панели никогда не записывали
Проверить5-10 минБыстро здесь обычно значит, что вы не проверяли по-настоящему

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

Как убедиться, что восстановление настоящее#

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

НагрузкаПроверьте этоА не это
MinecraftСамую свежую постройку в мире, ops.json, группу прав, папку данных плагинаЧто сервер дошёл до «Done»
ValheimИмя мира в логе, последнюю построенную базу, список админовПоявление кода присоединения
FiveM или сервер с модамиИнвентарь или персонажа игрока, список ресурсов, строки базы данных за нимиЧто ресурсы загрузились
Веб-приложениеВойти под настоящим аккаунтом, открыть страницу с наибольшим числом связей, найти вчерашнюю записьЧто главная страница отрисовалась
База данныхЧисло строк и самую свежую метку времени в трёх важных таблицахЧто подключение удалось

Самый дешёвый способ сделать проверку однозначной - canary: оставьте датированную метку в данных до запуска бэкапа. Табличка в игре с датой, строка в таблице backup_marker, файл 2026-09-21.txt в корне сервера. После восстановления метка либо показывает ожидаемую дату, либо нет, и вы за пять секунд знаете, на какой архив смотрите. Это устраняет целый класс ошибок, когда кто-то восстанавливает правильный бэкап не с того сервера.

Шесть вещей, которые обычно ломаются#

Среди восстановлений, с которыми просят помощи, снова и снова встречаются одни и те же шесть причин.

  • Мир на месте, а конфигурации нет. В архиве есть world/, но нет server.properties, bukkit.yml и конфигураций плагинов, поэтому сервер стартует чужим: MOTD по умолчанию, не та сложность, белый список выключен, никто не оператор.
  • Данные плагина или мода лежат вне папки, которую кто-то считал всем. Права в одном месте, экономика в другом, база привилегий в третьем. Классический случай - LuckPerms в режиме базы данных: плагин восстанавливается, а его данные нет.
  • Базы данных в бэкапе не было вовсе, потому что это отдельный сервис со своим механизмом резервного копирования. Это самая частая причина в нагрузках вида приложение и сайт.
  • Версии не совпадают. Архив сделан под одной сборкой игры, набором модов или средой выполнения, а сервер, на который вы восстановили, работает на другой. Если в деле обновление мода, то как дополнение см. что делать, если обновление мода всё сломало.
  • Отсутствуют настройки, которые не являются файлами. Переменные запуска, выделенные порты, расписания и права субпользователей живут в панели, а не в архиве. У восстановленного сервера правильный мир и неправильная команда запуска, пока вы не вернёте их на место.
  • Доступ. У человека, делающего восстановление, нет права, учётных данных или аккаунта. Заранее выдайте второму человеку права на бэкапы и файлы: как сделать это, не передавая доступ к оплате, описано в статье субпользователи и минимальные привилегии.

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

Пишите runbook по ходу дела#

Результат учений - не приятное чувство, а файл. Храните его где-нибудь вне сервера - в заметке, закреплённом сообщении, текстовом файле в репозитории - и обновляйте каждый раз, когда ответ меняется.

restore-runbook.txt
SERVER: survival.example.net  (Paper 1.21.4, Java 21)BACKUPS: panel slots x2, nightly 04:15; weekly download to NAS /backups/mcDATABASE: Postgres on db plan, dump written to /home/container/dumps at 04:05RESTORE 1. Stop the server. Download the current world folder first (evidence). 2. Panel > Backups > pick archive > Restore. ~6 min for 3.2 GB. 3. Startup tab: SERVER_JARFILE=paper-1.21.4.jar, MEMORY=6G, port 25565 + 25575. 4. psql: createdb mc_restore; pg_restore --no-owner -d mc_restore dumps/latest.dump 5. Start. Watch console for "Done". Check /seed, ops.json, a LuckPerms group. 6. Canary: sign at spawn shows the backup date.MEASURED 2026-09-21: locate 2m, restore 6m, start 4m, verify 7m. Total 19m.WHO CAN DO THIS: me, and <name> (has Backups + Files on the subuser role).

Примерно такой длины и должен быть runbook для одного сервера. Номера версий, номера портов и измеренный итог - то, что делает его ценным; всё остальное вы бы и сами выяснили.

Как часто и что должно вызвать внеплановые учения#

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

Проведите дополнительные учения вне графика, когда изменился ответ на вопрос «что в бэкапе?»:

  • Вы добавили плагин, мод или функцию, которая хранит данные в новом месте, особенно если у неё своя база данных.
  • Вы изменили расписание бэкапов, срок хранения или то, какие папки он покрывает.
  • Вы обновили игру, среду выполнения или крупную зависимость.
  • Вы сменили хостера, тариф или машину. Как переехать, не потеряв игроков - по сути учения по восстановлению с публикой.
  • Бэкап не удался или дал архив заметно меньше предыдущего. Дрейф размера - самое раннее предупреждение, и оно помогает, только если кто-то на него смотрит; см. мониторинг, который что-то говорит.
  • В команде появился новый человек, которому придётся это делать. Пусть он проведёт учения: это улучшение bus factor в реальном времени.

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

Учения, когда второго сервера нет#

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

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

Восстановление в папку того же сервера под другим именем. Для данных на уровне файлов можно загрузить вторую копию мира рядом с рабочей и направить на неё тестовую конфигурацию. Годится для миров Valheim или Minecraft, бесполезно там, где данные - в базе, и конкурирует с рабочим сервером за процессор и диск.

Использование staging-сервера, который у вас в любом случае должен быть. Если у вас уже есть второй небольшой сервер для проверки обновлений плагинов, он же и цель для восстановления, и учения стоят только полчаса времени. К такой схеме и стоит стремиться.

Что не считается: восстановление поверх рабочего сервера и наблюдение, пожалуется ли кто-нибудь. Это учебная тревога с настоящим пожаром.

Непроверенный бэкап - это гипотеза. Проверенный - это план с числом.

FAQ#

Сколько должно занимать восстановление?

Столько, сколько измерили ваши последние учения. Для игрового сервера на 500 MB с панелью нормально от пяти до пятнадцати минут от начала до конца. Модифицированный сервер на 40 GB с базой данных - это целый вечер. Полезный ответ - ваш собственный измеренный итог, потому что именно это число вы можете пообещать людям, которые ждут.

Какой бэкап тестировать?

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

Нужно ли проверять каждый сервер?

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

Что, если восстановление не удалось?

Это учения работают. Устраните причину, прежде чем делать что-либо ещё, сделайте свежий бэкап и проведите учения заново на нём. Неудачные учения во вторник днём стоят полчаса; тот же сбой, обнаруженный во время инцидента, стоит сервера.

Может ли восстановление сделать кто-то другой из команды?

Только если вы выдали ему право и он делал это хотя бы раз. Создайте роль с правами на бэкапы и файлы, но без доступа к оплате, добавьте его и дайте ему провести следующие учения. Если сейчас ответ «нет», это самая ценная вещь в вашем списке.

Теряются ли при восстановлении изменения, сделанные после бэкапа?

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


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000