Бэкапы есть у всех. Восстановления - у куда меньшего числа людей. Разница видна только в тот день, когда это важно, то есть в худший момент, чтобы обнаружить, что в архиве не та папка, что базы данных там никогда не было или что единственный человек, знающий процедуру, спит. Лекарство - учения: возьмите бэкап, которого вы не касались, разверните его в безопасном месте и засеките, сколько на это уходит времени.
Полчаса раз в квартал. Вот и всё обязательство, и оно превращает папку с файлами в число, которое можно назвать вслух, и в процедуру, которой сможет следовать кто-то другой. Эта статья - сами учения: что восстанавливать, как проверить, что восстановление действительно удалось, что обычно ломается и как записать результат, чтобы следующее заняло пятнадцать минут вместо тридцати. Что вообще должно входить в бэкап, описано в статье бэкапы, которые действительно восстанавливаются, а команды для баз данных - в статье бэкапы и восстановление баз данных.
Что измеряют учения#
Из проверки восстановления выходят три числа, и только одно из них - то, которого ждут.
- Время восстановления. Сколько проходит от «нам нужен бэкап» до «всё проверено и люди вернулись». Не индикатор прогресса на кнопке восстановления, а всё целиком, включая поиск нужного архива, вспоминание переменных запуска и проверку, что мир тот самый.
- Точка восстановления. Сколько работы восстановление выбросило. Если бэкап сделан в 04:00, а инцидент случился в 21:00, это семнадцать часов, и именно на учениях вы узнаёте, что семнадцать часов вашего конкретного сервера - неудобство или конец сообщества.
- Bus factor. Какая часть процедуры живёт только в голове одного человека. Именно ради этого числа затеваются учения. Восстановление, которое занимает двадцать минут, когда его делаете вы, и невозможно для остальных, - это не план восстановления.
Оценки всех трёх систематически оптимистичны. На практике восстановление занимает вдвое-втрое больше, чем оценка, потому что оценка учитывает копирование, но не принятие решений.
Тридцатиминутные учения#
Выберите тихий час. Вы не трогаете рабочий сервер, так что риска нет, кроме стоимости пробного сервера, но вам нужно, чтобы вас не отвлекали.
- Выберите бэкап, которым вы реально воспользовались бы, а не самый свежий. Последний архив - тот, в котором вы увереннее всего, поэтому он и наименее полезен для проверки. Возьмите самый старый из тех, что ещё укладываются в срок хранения: он проверяет, работает ли хранение и совпадает ли архив трёхнедельной давности с текущей версией сервера.
- Не смотрите сначала на сервер. Начните со списка бэкапов и ни с чего больше. Если вы ловите себя на том, что вам нужно что-то проверить на рабочем сервере, чтобы двигаться дальше, запишите это: это зависимость вашего плана от машины, которой во время настоящего инцидента может и не быть.
- Восстанавливайте туда, что не является рабочим сервером. Второй сервер на самом дешёвом тарифе, тестовый сервер, который у вас уже есть, или ваша собственная машина. Восстановление поверх работающего сервера, чтобы посмотреть, получится ли, - не проверка, а авария с дополнительными шагами.
- Запустите секундомер и следуйте письменной процедуре. Если письменной процедуры нет, учения этого квартала - написать её по ходу дела, в том порядке, в каком вы действительно всё делали.
- Поднимите сервер. Примените переменные запуска, выделите порты, запустите и смотрите на консоль, а не на индикатор. Лог говорит то, чего не скажет цветная точка статуса.
- Проверьте как следует. См. следующий раздел. «Он запустился» - не проверка: сервер Minecraft без папки
world/прекрасно запускается и генерирует новую. - Запишите четыре времени и остановитесь. Поиск, восстановление, запуск, проверка. Затем удалите пробный сервер или оставьте его, если предпочитаете иметь 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 по ходу дела#
Результат учений - не приятное чувство, а файл. Храните его где-нибудь вне сервера - в заметке, закреплённом сообщении, текстовом файле в репозитории - и обновляйте каждый раз, когда ответ меняется.
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. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.