О бэкапах на сервере GMGame
Думаю нет необходимости говорить о важности резервного копирования или о подходах к этому процессу, поэтому мы поделимся нашим опытом.
На нашем сервере используется резервное копирование с дедупликацией. Резервное копирование реализовано на borg backup
Плюсы такого подхода:
— быстрое создание резервной копии
— занимает меньший объем
— возможность чаще создавать копии
К минусом можно отнести:
— меньшую надежность (конфликты в хэш-таблицах, хранение только одной полной копии)
У нас резервное копирование выполняется, каждые 10 минут, а копии хранятся по следующим правилам:
— все копии за 48 часов
— по одной копии за каждый день последние 30 дней
— по одной копии за последние 3 месяца
— по одной копии за последние 3 года
Такой подход мы стали использовать c июля 2021 года и сейчас самый ранний бэкап, на который мы можем откатиться — 2021-06-30, если это потребуется.
Разумеется бэкапы за 3 года и даже за 3 месяца скорее для истории, чем для практического применения.
По цифрам сейчас у нас суммарный размер бэкапов 133.01 GB, если бы все эти бэкапы просто хранились целиком в сжатом виде, то они занимали бы 4.06 TB, а оригинальный размер, без сжатия, составил бы 5.67 TB
В бэкапах хранятся следующие данные:
— cами миры (основной, фермерский, креатив)
— конфиги серверов
— плагины и их настройки
— базы данных (зарегистрированных игроков, пермишены, баны, инвентари игроков)
Для повышения надежности мы используем несколько репозиториев борга для хранения бэкапов и делаем периодически отдельные копии данных.
save-off save-all save-on
К сожалению, нет достоверной информации и достаточных исследований о необходимости останавливать сохранения мира на время создания резервной копии.
Дело в том, что если попытаться создавать копию во время сохранения мира на диск, то в бэкап могут попасть частично сохраненные блоки. Но в то же время ручное прерывания сохранения вызывает всплеск задержки на сервере, что может негативно влиять на игровой процесс.
Но так как майнкрафт сохраняет на диск данные периодически, по умолчанию каждые 5 минут, то мы просто делаем резервную копию в промежутках между сохранениями, по сути читая статичные даные.
Мониторинг
Для мониторинга используем просто healthchecks.io