RE:NODE

Ночные backup серверов вне вашей квоты: что они покрывают

Автор Команда RE:NODE
14 мин чтения


Каждый сервер на RE:NODE копируется каждую ночь, на любом тарифе, и эти backup не занимают ни один из ваших слотов. Тарифы вообще без слотов backup их тоже получают. Базы данных, которые игровой сервер держит в панели, выгружаются отдельно каждую ночь, потому что архив сервера содержит только файлы. Эти ночные копии - системные backup: вы не видите их на вкладке Backups и не можете восстановить их сами - вы пишете в поддержку, и мы восстанавливаем из них. Это страховочная сетка под всем остальным, и недолговечная. Ваши собственные backup, сделанные в ваших слотах и по вашему расписанию, по-прежнему остаются тем, чем управляете вы, а копия, которая лежит полностью за пределами нашей платформы, по-прежнему переживёт то, от чего хостинг защитить не может. В этой статье все три уровня: что делает ночной запуск, как проходит каждый вид восстановления и как без лишних усилий держать внешнюю копию.

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

Что покрывает ночной backup#

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

Вид копииКто делаетЗанимает ваши слоты
Ночной системный backupМы, каждую ночьНет
Ночной дамп базы данныхМы, каждую ночьНет
Ваш собственный backupВы, вручную или по расписаниюДа

О системных backup стоит знать несколько вещей заранее, до того как они понадобятся:

  • Они скрыты. Их нет на вкладке Backups, и панель не позволит клиенту увидеть их в списке, скачать, удалить или восстановить. Так сделано намеренно: никто с доступом к вашему аккаунту, включая субпользователя, у которого не должно быть таких прав, не сможет убрать страховочную сетку.
  • В них файлы. Архив - это копия файловой системы сервера: миры, конфиги, плагины, загрузки, код. Баз данных, созданных на вкладке Databases в панели, в нём нет; они живут в отдельном сервисе баз данных и выгружаются сами по себе.
  • Они свежие, а не исторические. Мы храним короткое скользящее окно последних ночей, а не многонедельную историю. Если проблема началась две недели назад, а вы заметили её только сегодня, ночные backup не достанут так далеко. Старую рабочую точку вам обеспечат ваши собственные backup, защищённые от ротации.
  • Они приостанавливаются, а не забивают диск. Если на ноде заканчивается свободное место, ночной запуск ждёт и не начинает новые архивы, потому что переполненный диск утащил бы за собой все серверы на этой ноде. Когда место появляется, backup возобновляются.

«Вне квоты» - главное практическое отличие от большинства панелей. В обычной установке Pterodactyl backup есть backup: если хостинг делает его за вас, он лежит в том же списке и считается в том же лимите. У нас слоты принадлежат вам. Вы можете заполнить их своими копиями перед обновлением, заблокировать важные, а ночная страховка продолжит работать под ними и не будет бороться за место.

Дампы баз данных#

Игровой сервер, который использует базу данных - Minecraft с LuckPerms или плагином экономики на MySQL, сервер FiveM на oxmysql, сервер Garry's Mod DarkRP с данными игроков, - держит эту базу вне своей файловой системы. На RE:NODE игровые тарифы идут с одним слотом базы данных, который создаётся в панели с сгенерированными хостом, пользователем и паролем. Данных из неё в архиве сервера нет, поэтому восстановление одного файлового backup возвращает мир и конфиги в прежнем виде, а база остаётся такой, какая она сейчас.

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

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

То же рассуждение относится и к вашим собственным backup, в которых только файлы. Если вы делаете backup перед большим обновлением плагина, в тот же момент сделайте экспорт базы данных - экспорт из phpMyAdmin или mysqldump со своей машины - и храните их вместе. В руководстве по mysqldump есть нужные флаги.

bash
$ mysqldump --single-transaction --routines --triggers \    -h HOST -P PORT -u USER -p DATABASE | gzip > db-$(date +%F).sql.gz

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

Как уровни сочетаются#

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

каждую ночьпо запросу или по расписаниюскачивание или синхронизацияВаш серверфайлы и база данныхНочной backupнаш, скрытыйВаши backupваши слоты, блокировкаКопия вне платформываше хранилище
Три копии, три разных сбоя, которые они закрывают
СбойЧто вернёт данные
Неудачное обновление, сломанный конфигЛюбая из трёх копий
Грифинг, обнаруженный через неделюЗаблокированный backup или внешняя копия
Сервер удалёнТолько внешняя копия
Аккаунт потерян или закрытТолько внешняя копия

Последние две строки самые неприятные. Удаление сервера удаляет его backup, включая заблокированные. Если вы отменили сервер или потеряли доступ к аккаунту, всё, что хранится у нас, уходит вместе с ним. Копия, которая есть у вас самих, - нет.

Восстановление из ночного backup#

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

Чтобы восстановление прошло быстро и правильно, укажите:

  1. Какой сервер. Название сервера или, лучше, его идентификатор из адресной строки.
  2. Какая ночь. «Backup до обновления в четверг» полезнее, чем «последний», потому что последний уже может содержать проблему.
  3. Что восстановить. Сервер целиком или отдельные папки - только мир, только конфиги плагинов.
  4. Нужна ли база данных. Обычно да, на ту же ночь, по причинам выше.
  5. Сохранять ли текущее состояние. Если вам может понадобиться что-то из сломанной версии, сначала сделайте backup в своём слоте или скачайте нужные файлы. Полное восстановление заменяет то, что там сейчас.

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

Восстановление из своих backup#

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

Здесь важна разница между полным и частичным восстановлением, потому что большинству реальных проблем не нужен откат всего сервера.

  • Полное восстановление. Остановите сервер, восстановите из вкладки Backups, запустите. Подходит после неудачного обновления или мода, который испортил то, что вы не можете перечислить.
  • Один мир или одна папка. Скачайте backup, распакуйте на своей машине и загрузите только нужную папку через файловый менеджер или SFTP. Остальной сервер не меняется.
  • Один файл. То же самое для одного конфига. Это обычное решение для случая «кто-то поправил server.properties, и теперь ничего не работает».
bash
$ mkdir restore && tar -xzf backup.tar.gz -C restore$ ls restore

Затем загрузите нужную папку любым SFTP-клиентом, используя данные из SFTP-реквизитов сервера. В руководстве по SFTP и файловому менеджеру описаны клиенты и типичные ошибки прав доступа.

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

Расписание для своих backup#

Ночной системный backup работает, делаете вы что-нибудь или нет. Ваши собственные backup запускаются тогда, когда вы им скажете, а вкладка Schedules позволяет сделать это автоматически. Расписание принимает cron-выражение и упорядоченный список задач с паузами между ними: команды консоли, backup, действие с питанием.

Разумный порядок для игрового сервера: предупредить игроков, сохранить мир из консоли, сделать backup и только потом перезапускать, если вообще перезапускаете:

ШагЗадачаПауза
1Command: предупреждение игрокам0 s
2Command: сохранение мира60 s
3Backup30 s

Команда сохранения зависит от игры - save-all в Minecraft, save во многих других; смотрите справочник консоли вашей игры. Смысл сохранения в том, что backup архивирует то, что лежит на диске, а игра, которая держит мир в памяти между автосохранениями, иначе даст копию возрастом в несколько минут. Синтаксис времени разобран в статье cron-выражения простыми словами, а больше шаблонов в статье полезные запланированные задачи.

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

Зачем всё равно нужна внешняя копия#

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

  • Удаление сервера удаляет его backup. Наши и ваши, включая заблокированные. Ошибочное удаление с нашей стороны не отменить.
  • Отменённая услуга уходит тем же путём. Когда сервер удаляется по любой причине, его backup удаляются вместе с ним.
  • Ваш аккаунт - единая точка отказа. Если вы потеряли и устройство двухфакторной аутентификации, и коды восстановления, аккаунт восстановить нельзя, как и всё, что доступно только через него.
  • Любой хостинг - один поставщик. Это не особенность нашей компании. Копия, существующая только внутри систем одной компании, зависит от неё во всём, а правило 3-2-1 - три копии, два вида хранилища, одна в другом месте - появилось потому, что люди усвоили это на горьком опыте.
Backup, который существует только внутри сервиса, который он копирует, - это функция этого сервиса, а не backup.

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

Как сделать внешнюю копию#

Есть три практических способа, от самого простого до самого автоматизированного.

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

Второй - синхронизация с вашей машины по SFTP через rclone. Настройте SFTP-подключение с хостом, портом, именем пользователя и паролем из SFTP-реквизитов панели, затем скопируйте важные папки:

bash
$ rclone config create renode sftp host HOST port PORT user USER pass PASSWORD$ rclone copy renode:world ./server-backup/$(date +%F)/world --progress

Копируйте только нужное - мир, конфиги, данные плагинов, - а не игровые бинарные файлы, которые всё равно переустанавливаются. Дополните это дампом базы данных, снятым в тот же момент. Учтите, что rclone config create обфусцирует пароль перед сохранением, но файл конфигурации всё равно позволяет войти любому, кто его прочитает, поэтому храните его на машине, которой доверяете.

Третий - объектное хранилище: отправляйте копии в S3-совместимый bucket через rclone или restic. Restic добавляет дедупликацию, шифрование и собственные правила хранения, что подходит для копии, которая запускается по таймеру с вашей машины. Оба варианта подробно разобраны в статьях backup игровых серверов в S3 и backup restic в S3. RE:NODE тоже продаёт объектное хранилище S3, но поймите, что это такое: оно находится на той же платформе и в той же локации, что и ваш сервер. Это хороший второй вид хранилища и удобная цель для скриптов, но это не то самое «другое место» из правила 3-2-1. Для этого bucket или диск должны принадлежать кому-то, кроме вашего хостинга.

Что бы вы ни выбрали, восстановитесь из этой копии хотя бы раз. Распакуйте архив, загрузите дамп во временную базу данных, по возможности запустите копию сервера из неё. Чек-лист есть в статье проверка восстановления до того, как оно понадобится, а в статье backup, из которых действительно можно восстановиться объясняется, почему проверка и есть настоящая работа backup. Backup, из которого никто не восстанавливался, - это гипотеза.

Что ночные backup не заменяют#

Чтобы честно обозначить границы и никто не строил планы на том, чего нет:

  • Нет самостоятельного восстановления системных backup. Оно идёт через поддержку, то есть занимает столько же, сколько разговор с сотрудниками, а не один клик. Для всего, что может срочно понадобиться, ваш собственный backup быстрее.
  • Нет длинной истории. Окно короткое. Более старые точки восстановления вы храните сами: заблокированными в своих слотах или вне платформы.
  • Нет восстановления на момент времени. Ночной backup - это ночной backup. Всё, что произошло между прошлой ночью и сейчас, существует только на работающем сервере.
  • Нет защиты от удаления. Удалите сервер - и его backup уйдут вместе с ним.
  • Нет backup движка базы данных для тарифов хостинга баз данных, кроме файлового архива. Серверы баз данных получают ночной файловый архив, как и все остальные, но файловая копия работающего движка базы данных - не то же самое, что дамп, снятый самим движком. Для тарифов PostgreSQL, MongoDB, MySQL или SQL Server настройте собственные дампы - как это сделать, показывают статьи backup и восстановление баз данных и дампы баз данных в S3 по расписанию.

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

FAQ#

Занимают ли ночные backup слоты backup на моём тарифе?

Нет. Это системные backup, они делаются вне лимита backup вашего тарифа, поэтому все слоты на тарифе остаются свободными для ваших копий. Тарифы без слотов backup тоже получают ночной backup.

Могу ли я сам скачать или восстановить ночной backup?

Нет. Они скрыты на вкладке Backups, чтобы никто с доступом к панели не мог их удалить. Чтобы восстановить из такого backup, откройте тикет или напишите в чат сервера и укажите, какую ночь и какие части нужно вернуть.

Включены ли базы данных плагинов и модов?

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

Насколько далеко назад уходят ночные backup?

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

Если я удалю сервер, сможет ли поддержка его вернуть?

Нет. Удаление сервера удаляет его backup, включая заблокированные, и системные backup не исключение. Единственная копия, которая переживёт удаление, - та, которую вы сами скачали или синхронизировали куда-то ещё.

Нужны ли мне свои backup, если есть ночные?

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

Это было полезно?