Перевод плагинов с локального хранения (SQLite/Flatfile) на MySQL/MariaDB

Техническое руководство по миграции плагинов сервера Minecraft из медленных локальных конфигураций и SQLite баз данных на многопоточные решения MySQL/MariaDB.

20.05.2026 Русский

Перевод плагинов с локального хранения (SQLite/Flatfile) на MySQL/MariaDB

Когда вы только запускаете сервер Minecraft, стандартные настройки большинства плагинов кажутся идеальными. Они работают «из коробки», сохраняя данные в локальные файлы конфигурации (.yml, .json) или локальные базы данных (.db через движок SQLite). Однако по мере роста проекта — когда онлайн перешагивает отметку в 20–30 игроков — сервер начинает страдать от периодических микрофризов (тиков, длящихся слишком долго), а в консоли хостинга появляются предупреждения о задержках чтения файлов.

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

Почему Flatfile (.yml) и SQLite (.db) лагают при росте онлайна?

Проблема кроется в архитектуре того, как операционная система и сервер Minecraft взаимодействуют с диском хостинга:

  • Проблема Flatfile (.yml / .json): Каждый раз, когда игроку нужно выдать привилегию, сохранить его баланс или изменить баланс кошелька, плагин вынужден перезаписывать текстовый файл целиком. Если 20 игроков одновременно совершают транзакции, сервер начинает раз за разом перечитывать и перезаписывать тяжелые файлы конфигурации. Так как это часто происходит синхронно с основным потоком игры (Main Thread), сервер буквально замирает, ожидая окончания операции ввода-вывода (I/O).
  • Проблема SQLite (.db): SQLite — это отличная база данных, но она представляет собой единый файл на диске. Главный минус SQLite — блокировка на уровне всего файла (File Locking) при записи. Если плагин CoreProtect пытается записать в базу лог взрыва крипера, никакой другой плагин (или этот же плагин в другом потоке) не сможет ничего записать в этот файл, пока первая операция не завершится. Возникает очередь из запросов, которая выливается в ощутимые лаги (микрофризы) для игроков.

Решение — MySQL / MariaDB: Это полноценные сетевые системы управления базами данных (СУБД). Они работают в многопоточном режиме, поддерживают блокировку на уровне отдельных строк (а не всего файла), умеют эффективно кэшировать запросы в оперативной памяти и обрабатывают данные асинхронно, полностью разгружая основной процессор игрового сервера.

Шаг 1: Создание базы данных в панели хостинга

Перед настройкой плагинов необходимо получить реквизиты доступа к MySQL. На современном игровом хостинге это делается в пару кликов:

  1. Перейдите в панель управления сервером и откройте раздел «Базы данных» (Databases).
  2. Нажмите кнопку «Создать базу данных» (Create Database).
  3. После создания панель отобразит реквизиты. Нам понадобятся пять параметров:
    • Host (IP-адрес или домен подключения, например: 127.0.0.1 или sql.mygamehost.net)
    • Port (По умолчанию для MySQL это 3306)
    • Database Name (Имя базы данных)
    • User (Имя пользователя)
    • Password (Пароль)

Шаг 2: Перевод плагинов на MySQL

Рассмотрим перевод трех главных плагинов, которые создают максимальную нагрузку на дисковую подсистему.

1. LuckPerms (Права и привилегии)

LuckPerms идеально оптимизирован под работу с сетью. Перевод на MySQL не только уберет лаги, но и позволит вам связать несколько серверов (например, Сурвивал и Хаб) в единую сеть прав.

  1. Откройте файл plugins/LuckPerms/config.yml.
  2. Найдите строку storage-method: измените значение с h2 или sqlite на mysql.
  3. Прокрутите конфиг ниже до блока data: и впишите полученные от хостинга данные:
storage-method: mysql

data:
  address: localhost:3306 # Укажите ваш Host и Port через двоеточие
  database: lperms_db
  username: admin_user
  password: 'super_secure_password'
  table-prefix: 'lp_'
  1. Сохраните файл и введите в консоли команду /lp sync. Плагин автоматически создаст нужные таблицы в вашей СУБД.

2. EssentialsX (Экономика, дома, варпы, данные игроков)

По умолчанию EssentialsX создает под каждого нового игрока отдельный файл .yml в папке userdata. Когда на сервере регистрируются тысячи игроков, папка превращается в кошмар для файловой системы Linux.

  1. Для работы EssentialsX с базой данных вам потребуется дополнительный аддон — EssentialsXStorage (скачайте его с официального сайта разработчиков и положите в папку plugins/).
  2. Откройте основной plugins/Essentials/config.yml и найдите секцию хранения (обычно в самом низу файла).
  3. Переключите тип хранилища на MySQL и заполните параметры подключения:
essentials:
  storage:
    type: mysql
    mysql:
      host: localhost
      port: 3306
      database: essentials_db
      username: admin_user
      password: 'super_secure_password'

3. CoreProtect (Логирование блоков)

CoreProtect — самый «тяжелый» плагин на сервере, так как он записывает миллионы действий. Перевод его на MySQL критически важен для стабильного TPS.

  1. Откройте файл plugins/CoreProtect/config.yml.
  2. Найдите параметр use-mysql: false и измените его на use-mysql: true.
  3. Заполните строки подключения чуть ниже:
use-mysql: true
mysql-host: localhost
mysql-port: 3306
mysql-database: coreprotect_db
mysql-username: admin_user
mysql-password: "super_secure_password"
table-prefix: "co_"
  1. Перезапустите сервер. При первом запуске CoreProtect начнет индексацию структуры базы данных, что может занять 1–2 минуты.

Решение возможных проблем (Troubleshooting)

Проблема 1: Сервер выдает ошибку «Communications link failure» при запуске плагина

Причина: Игровой сервер не может достучаться до сервера базы данных. Либо вы ошиблись в заполнении хоста/пароля, либо база данных на хостинге еще не запустилась.

Решение: Внимательно проверьте, нет ли лишних пробелов или кавычек в полях host и password. Если база находится на внешнем сервере, убедитесь, что хостинг разрешает удаленные подключения (Remote Connections) к этой базе данных.

Проблема 2: Пропали все донаты, варпы и регионы после включения MySQL

Причина: Это логично — плагины подключились к новой, абсолютно чистой базе данных, а все ваши старые данные остались лежать в локальных файлах .db и .yml.

Решение для LuckPerms: Плагин имеет встроенную систему миграции. Перед тем как переключать конфиг на MySQL, введите команду: /lp export local_data. Затем переключите плагин на работу с MySQL, запустите сервер и введите: /lp import local_data. Данные автоматически перенесутся из файла в СУБД.

Решение для других плагинов:

Перенос данных из SQLite (файлов .db) в MySQL требует использования сторонних скриптов или конвертеров. Если на сервере уже играет много людей, рекомендуется производить переключение на MySQL в момент проведения планового вайпа (сброса мира), чтобы начать ведение чистой и быстрой истории сервера.

Похожие статьи

Оптимизация тяжелых серверов с модами (Forge / NeoForge / Fabric)

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

Читать далее

Предгенерация карты с помощью Chunky: как навсегда избавиться от лагов при полетах

Техническое руководство по предгенерации миров Minecraft с помощью плагина Chunky. Узнайте, как предотвратить падения TPS из-за быстрых полетов игроков на элитрах.

Читать далее

Современные ядра Minecraft: Руководство по переходу, оптимизации и защите

Техническое руководство по миграции серверов Minecraft на производительные ядра (Paper, Purpur, Folia), тонкой настройке конфигураций для устранения лагов и созданию эшелонированной защиты.

Читать далее