Базы данных

Многим плагинам и модам нужна база данных: LuckPerms, CoreProtect, Oxide-плагинам, статистике и банлистам. Клиент создаёт базу MySQL или PostgreSQL одной кнопкой на странице своего сервера и сразу получает адрес, имя, пользователя и пароль. Базы панель создаёт сама на серверах БД, которые вы подключили или подняли.

Чтобы клиенты могли создавать базы, нужны две вещи: хотя бы один хост (сервер БД) и хотя бы одно правило, которое говорит, на какой хост попадёт новая база. Всё это — в разделе Инфраструктура → Базы данных.

Хосты

Хост — сервер MySQL, MariaDB или PostgreSQL, на котором панель создаёт базы клиентов. Его можно поднять прямо из панели или подключить уже работающий.

Поднять сервер БД

Самый простой вариант: панель сама запустит сервер БД в контейнере на одной из ваших нод. Нажмите Поднять сервер БД:

  1. Что и где — Название, Нода, Движок и версия (MySQL 8.4 или 8.0, MariaDB 11.4 или 10.11, PostgreSQL 17 или 16), Память, МБ (по умолчанию 1024, не меньше 256) и CPU, ядер (пусто — без лимита).
  2. Сеть — Адрес ноды для порта: по нему к базе ходят игровые серверы ноды. По умолчанию выбран внутренний адрес. Если выбрать публичный адрес или все интерфейсы, порт базы будет виден из интернета — закройте его фаерволом, если клиентам не нужно подключаться к базе снаружи. Порт — пусто значит свободный из диапазона 33100–33999. Адрес для клиентов — что клиент увидит в строке подключения; пусто — адрес ноды.
  3. Правило — галочка Новые базы серверов ноды … создавать здесь сразу заводит правило «эта нода → этот сервер».

Панель сгенерирует пароль root и хранит его зашифрованным. Первый запуск со скачиванием образа может занять несколько минут. Статус хоста: Запускается, Работает, Остановлен или Ошибка с причиной. Если контейнер пропал или остановился сам, панель запустит его снова.

В меню хоста:

  • Остановить сервер / Запустить сервер. Пока сервер не работает или его нода не на связи, новые базы на нём не создаются.
  • Логи контейнера — последние строки вывода сервера БД.
  • Пересоздать контейнер… — пересоздать контейнер с тем же образом и лимитами, если он сломался. Данные сохраняются.
  • Изменить… — раздел Контейнер: Версия, память и CPU. При сохранении нода пересоздаёт контейнер на тех же данных, базы недоступны, пока он не поднимется. Версию можно только повысить в пределах того же сервера: MySQL 8.0 → 8.4, MariaDB 10.11 → 11.4. Вернуться на прежнюю версию нельзя, сменить MySQL на MariaDB тоже. У PostgreSQL мажорная версия не меняется — чтобы перейти с 16 на 17, поднимите новый сервер и перенесите базы через бэкапы серверов.

Порт управляемого сервера БД занят в общем пуле портов ноды, игровые серверы его не получат. Он виден на странице Порты.

Данные сервера БД лежат на одной ноде. Сам он целиком не бэкапится, но базы клиентов попадают в бэкапы их игровых серверов, см. ниже.

Подключить внешний

Если у вас уже есть сервер БД, нажмите Подключить внешний:

  • Название, Движок — MySQL/MariaDB или PostgreSQL 13+. Движок после создания не меняется.
  • Подключаться — напрямую с панели или через агента ноды. Второй вариант — для хоста во внутренней сети, который видит нода, но не видит панель: тогда SQL выполняет агент выбранной ноды, а адрес и порт указывайте такими, какими их видит нода.
  • Адрес, Порт — как до хоста достучится панель (или нода).
  • Пользователь, Пароль — админская учётка. Для MySQL ей нужны CREATE/DROP DATABASE, CREATE USER и GRANT OPTION; для PostgreSQL — суперпользователь или роль с CREATEDB и CREATEROLE. Пароль хранится зашифрованным и нигде не показывается; при изменении хоста пустое поле оставляет прежний.
  • Адрес для клиентов — что увидит клиент в строке подключения. Пусто — тот же адрес.
  • Максимум баз — заполненный хост пропускается. Пусто — без ограничения.

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

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

У PostgreSQL, откуда клиентам можно подключаться, решает pg_hba.conf на самом сервере, поэтому поле Откуда подключаться у баз PostgreSQL не показывается.

Изменить и удалить

  • Выключить (новые базы не создаются) — хост перестаёт получать новые базы, существующие работают как раньше.
  • Пока на хосте есть базы, его адрес и порт менять нельзя. Учётку и пароль — можно.
  • Удалить хост можно, только когда на нём нет баз и на него не ссылается ни одно правило. У внешнего хоста удаляется только подключение, сам сервер БД не трогается. У поднятого панелью удаляется контейнер вместе с данными, порт освобождается. Если нода не ответила, панель предложит забыть сервер — тогда контейнер и его том на ноде придётся удалить вручную.
  • Ноду с поднятым на ней сервером БД, или ноду, через которую идёт подключение к хосту, удалить нельзя.

Правила

Правило говорит, на какой хост попадёт новая база. Задайте условия — Локация, Нода, Тариф, Игра — и отметьте хосты в блоке Куда. Пустое условие означает «любое».

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

  • В поле Тариф можно выбрать не один тариф, а группу тарифов — все тарифы с одной меткой, например «все с меткой «premium»». Метка задаётся в форме тарифа, см. Тарифы.
  • Правила с одинаковыми условиями и приоритетом помечаются Конфликт — побеждает более новое.
  • Для начала хватит одного правила без условий. Если правила есть, а правила без условий нет, панель предупредит: серверы, которым не подошло ни одно правило, не смогут создать базу.

Пример: премиум-тарифы получают базы на отдельном сервере, остальные — на общем.

| Тариф | Куда | Приоритет | |---|---|---| | все с меткой «premium» | mysql-premium | 0 | | любой | mysql-shared-1, mysql-shared-2 | 0 |

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

Изменение правил не переносит существующие базы: каждая база остаётся на хосте, где её создали.

Базы сервера

Вкладка Базы данных на странице сервера. Её видят владелец и совладельцы с правом Базы данных (см. Пользователи и роли).

Создать базу:

  • Имя — строчные латинские буквы, цифры и _, до 53 символов. Панель добавляет к нему префикс сервера: из luckperms получится s1a2b3c4d_luckperms.
  • Движок — показывается, если подключены хосты и MySQL, и PostgreSQL.
  • Откуда подключаться (только MySQL) — IP или подсеть (CIDR), с которых разрешён вход. Пусто — откуда угодно.
  • Хост — видит только админ: создать базу на конкретном хосте в обход правил.

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

Удаление базы удаляет её и её пользователя на сервере БД вместе со всеми данными. Если хост не ответил, админ может забыть базу в панели — тогда её придётся удалить на хосте вручную.

Подставить в параметры

Чтобы не переписывать адрес и пароль в конфиги вручную, базу можно подставить в параметры сервера: панель запишет её адрес, порт, имя, пользователя и пароль в параметры db_host, db_port, db_name, db_user и db_password, а игра получит их как переменные окружения DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD.

Это работает, если в настройках игры объявлены такие параметры. Проще всего добавить их набором: в форме игры, в блоке параметров, выберите набор База данных: DBHOST, DBPORT, DBNAME, DBUSER, DB_PASSWORD. Параметр db_password в наборе — типа «секрет», клиент не увидит его в карточке сервера. Как параметры попадают в игру, см. Каталог игр.

  • Подставленной может быть одна база сервера. Новая база подставляется сама, если у сервера ещё нет подставленной; галочка Подставить в параметры сервера в форме создания позволяет отказаться или забрать подстановку у другой базы.
  • Подставить в параметры / Убрать из параметров — в меню базы. Запущенный сервер пересоздаётся с новыми переменными.
  • Смена пароля подставленной базы сразу обновляет db_password. Удаление или отвязка базы очищает все db_*.
  • Без подстановки панель параметры db_* не трогает: админ может прописать в них внешнюю базу руками.

Лимиты тарифа

В тарифе, раздел Базы данных: Запретить базы данных и Сколько на сервер (пусто — без ограничения). На вкладке видно, сколько баз уже создано из лимита. Лимиты действуют сразу на все серверы тарифа, уже созданные базы остаются. Админа лимиты не ограничивают.

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

Базы в бэкапах

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

Удаление сервера

При удалении сервера удаляются и его базы. Переустановка сервера базы не трогает.

Создание и удаление баз можно получать вебхуками database.created и database.deleted, см. HTTP API и вебхуки.