Miami RP Project СЕРВЕР MTA:SA ONLINE СЕРВЕР GTA 5 RAGE MP В РАЗРАБОТКЕ ЗАПУСК MTA RAGE MP: в разработке

Создание и настройка базы данных для GTA-сервера — MySQL и MariaDB

Сегодня Обновлено: Сегодня 0.0 (0)
Создание и настройка базы данных для GTA-сервера — MySQL и MariaDB
Категория Настройка базы данных для сервера GTA Опубликовано Сегодня Обновлено Сегодня Просмотров 3

База данных GTA-сервера хранит аккаунты игроков, персонажей, транспорт, имущество, бизнесы, организации, наказания и другие данные игрового проекта. Для большинства серверных сборок CRMP, SA-MP, open.mp и GTA 5 используется MySQL или совместимая с ней MariaDB.

В этой инструкции рассмотрена установка MySQL и MariaDB на Linux VPS и Windows, создание отдельной базы и пользователя, назначение прав, импорт SQL-таблиц, подключение игрового сервера, настройка удалённого доступа, резервное копирование и восстановление данных.

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

Подключение базы к классическому серверу:

Подключение MySQL к серверу CRMP

Установка серверных плагинов:

Установка и настройка плагинов сервера CRMP

Настройка сервера на Linux:

Настройка GTA-сервера на Linux VPS

Для чего GTA-серверу база данных

Игровой мод может сохранять часть информации в обычных файлах, однако для полноценного Role Play-проекта обычно используется реляционная база данных.

В базе могут храниться

  • учётные записи игроков;
  • пароли или их хеши;
  • персонажи и статистика;
  • деньги и банковские счета;
  • дома и квартиры;
  • личный и служебный транспорт;
  • бизнесы;
  • организации и фракции;
  • инвентарь;
  • задания и достижения;
  • административные наказания;
  • журналы действий;
  • настройки игрового мира.

База данных не заменяет игровой мод

SQL-таблицы только хранят информацию. Логика регистрации, авторизации, покупки имущества и сохранения персонажа находится в игровом моде или серверных ресурсах.

Для работы необходимы три компонента

  • запущенный сервер MySQL или MariaDB;
  • созданная структура таблиц;
  • совместимый драйвер или MySQL-плагин GTA-сервера.

Если одного компонента нет

Сервер может запускаться, но регистрация, авторизация, сохранение аккаунтов и другие функции игрового режима работать не будут.

MySQL или MariaDB для GTA-сервера

MySQL и MariaDB используют схожий SQL-синтаксис и стандартный сетевой порт 3306/TCP. Многие GTA-сборки могут работать с любой из этих систем, но совместимость необходимо проверять по серверному моду и плагину.

MySQL подходит, если

  • сборка разрабатывалась и проверялась именно с MySQL;
  • используются специфические возможности MySQL;
  • требуется точное соответствие рабочему серверу;
  • разработчик мода указал конкретную версию MySQL;
  • проект уже использует MySQL в рабочей среде.

MariaDB подходит, если

  • сборка использует стандартные SQL-запросы;
  • нужна совместимая серверная база на Linux;
  • MariaDB доступна в репозитории операционной системы;
  • плагины и схема были протестированы с MariaDB;
  • проект переносится с другого MariaDB-сервера.

Совместимость не всегда абсолютна

Различаться могут:

  • поддерживаемые кодировки и сопоставления;
  • режимы SQL;
  • системы аутентификации;
  • зарезервированные слова;
  • форматы дампов;
  • отдельные функции SQL;
  • поведение JSON-полей;
  • значения по умолчанию;
  • версии клиентских библиотек.

Где размещать базу данных GTA-сервера

На том же VPS

Для небольшого и среднего проекта база часто устанавливается на тот же сервер, где работает GTA-сервер.

GTA-сервер → 127.0.0.1:3306 → MySQL или MariaDB

Преимущества локальной базы

  • не требуется открывать порт 3306 наружу;
  • низкая задержка между сервером и базой;
  • простая настройка;
  • меньше сетевых точек отказа;
  • трафик базы не выходит в интернет.

Недостатки локальной базы

  • GTA-сервер и база используют общую оперативную память;
  • сбой одного VPS затрагивает весь проект;
  • необходимо хранить резервные копии вне VPS;
  • при высокой нагрузке ресурсы могут конкурировать.

На отдельном сервере

GTA VPS → защищённая сеть → Database VPS

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

Для удалённой базы желательно использовать

  • приватную сеть провайдера;
  • VPN между серверами;
  • ограничение firewall по IP;
  • TLS для соединения;
  • отдельного пользователя для каждого приложения;
  • постоянный адрес GTA-сервера.

Не размещайте рабочую базу на домашнем компьютере

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

Подготовка Linux VPS перед установкой базы

Обновите список пакетов

sudo apt update

Установите доступные обновления

sudo apt upgrade -y

Проверьте свободное место

df -h

Проверьте оперативную память

free -h

Проверьте имя и версию системы

cat /etc/os-release

Убедитесь, что время настроено правильно

timedatectl

Корректное время необходимо для журналов, дат регистрации, истории операций и резервных копий.

Перед установкой на рабочий VPS

  • создайте снимок VPS;
  • проверьте наличие свободного места;
  • сохраните конфигурацию игрового сервера;
  • убедитесь в наличии аварийной консоли;
  • не удаляйте существующую базу без дампа;
  • не устанавливайте MySQL и MariaDB одновременно без необходимости.

База данных GTA-сервера хранит аккаунты игроков, персонажей, транспорт, имущество, бизнесы, организации, наказания и другие данные игрового проекта. Для большинства серверных сборок CRMP, SA-MP, open.mp и GTA 5 используется MySQL или совместимая с ней MariaDB.

В этой инструкции рассмотрена установка MySQL и MariaDB на Linux VPS и Windows, создание отдельной базы и пользователя, назначение прав, импорт SQL-таблиц, подключение игрового сервера, настройка удалённого доступа, резервное копирование и восстановление данных.

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

Подключение базы к классическому серверу:

Подключение MySQL к серверу CRMP

Установка серверных плагинов:

Установка и настройка плагинов сервера CRMP

Настройка сервера на Linux:

Настройка GTA-сервера на Linux VPS

Для чего GTA-серверу база данных

Игровой мод может сохранять часть информации в обычных файлах, однако для полноценного Role Play-проекта обычно используется реляционная база данных.

В базе могут храниться

  • учётные записи игроков;
  • пароли или их хеши;
  • персонажи и статистика;
  • деньги и банковские счета;
  • дома и квартиры;
  • личный и служебный транспорт;
  • бизнесы;
  • организации и фракции;
  • инвентарь;
  • задания и достижения;
  • административные наказания;
  • журналы действий;
  • настройки игрового мира.

База данных не заменяет игровой мод

SQL-таблицы только хранят информацию. Логика регистрации, авторизации, покупки имущества и сохранения персонажа находится в игровом моде или серверных ресурсах.

Для работы необходимы три компонента

  • запущенный сервер MySQL или MariaDB;
  • созданная структура таблиц;
  • совместимый драйвер или MySQL-плагин GTA-сервера.

Если одного компонента нет

Сервер может запускаться, но регистрация, авторизация, сохранение аккаунтов и другие функции игрового режима работать не будут.

MySQL или MariaDB для GTA-сервера

MySQL и MariaDB используют схожий SQL-синтаксис и стандартный сетевой порт 3306/TCP. Многие GTA-сборки могут работать с любой из этих систем, но совместимость необходимо проверять по серверному моду и плагину.

MySQL подходит, если

  • сборка разрабатывалась и проверялась именно с MySQL;
  • используются специфические возможности MySQL;
  • требуется точное соответствие рабочему серверу;
  • разработчик мода указал конкретную версию MySQL;
  • проект уже использует MySQL в рабочей среде.

MariaDB подходит, если

  • сборка использует стандартные SQL-запросы;
  • нужна совместимая серверная база на Linux;
  • MariaDB доступна в репозитории операционной системы;
  • плагины и схема были протестированы с MariaDB;
  • проект переносится с другого MariaDB-сервера.

Совместимость не всегда абсолютна

Различаться могут:

  • поддерживаемые кодировки и сопоставления;
  • режимы SQL;
  • системы аутентификации;
  • зарезервированные слова;
  • форматы дампов;
  • отдельные функции SQL;
  • поведение JSON-полей;
  • значения по умолчанию;
  • версии клиентских библиотек.

Где размещать базу данных GTA-сервера

На том же VPS

Для небольшого и среднего проекта база часто устанавливается на тот же сервер, где работает GTA-сервер.

GTA-сервер → 127.0.0.1:3306 → MySQL или MariaDB

Преимущества локальной базы

  • не требуется открывать порт 3306 наружу;
  • низкая задержка между сервером и базой;
  • простая настройка;
  • меньше сетевых точек отказа;
  • трафик базы не выходит в интернет.

Недостатки локальной базы

  • GTA-сервер и база используют общую оперативную память;
  • сбой одного VPS затрагивает весь проект;
  • необходимо хранить резервные копии вне VPS;
  • при высокой нагрузке ресурсы могут конкурировать.

На отдельном сервере

GTA VPS → защищённая сеть → Database VPS

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

Для удалённой базы желательно использовать

  • приватную сеть провайдера;
  • VPN между серверами;
  • ограничение firewall по IP;
  • TLS для соединения;
  • отдельного пользователя для каждого приложения;
  • постоянный адрес GTA-сервера.

Не размещайте рабочую базу на домашнем компьютере

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

Подготовка Linux VPS перед установкой базы

Обновите список пакетов

sudo apt update

Установите доступные обновления

sudo apt upgrade -y

Проверьте свободное место

df -h

Проверьте оперативную память

free -h

Проверьте имя и версию системы

cat /etc/os-release

Убедитесь, что время настроено правильно

timedatectl

Корректное время необходимо для журналов, дат регистрации, истории операций и резервных копий.

Перед установкой на рабочий VPS

  • создайте снимок VPS;
  • проверьте наличие свободного места;
  • сохраните конфигурацию игрового сервера;
  • убедитесь в наличии аварийной консоли;
  • не удаляйте существующую базу без дампа;
  • не устанавливайте MySQL и MariaDB одновременно без необходимости.

Создание пользователя базы для GTA-сервера

Если GTA-сервер и база работают на одной машине, создайте пользователя только для локального подключения.

Создание пользователя

CREATE USER 'gta_app'@'localhost'
IDENTIFIED BY 'ЗАМЕНИТЕ_НА_СЛОЖНЫЙ_ПАРОЛЬ';

Пользователь localhost

Учётная запись:

'gta_app'@'localhost'

предназначена для подключения с того же сервера. Она не разрешает вход с произвольных внешних IP.

Требования к паролю

  • уникальный для этого проекта;
  • не совпадает с паролем root;
  • не используется в панели VPS;
  • достаточно длинный;
  • содержит разные типы символов;
  • не содержит название сервера;
  • хранится в закрытом конфигурационном файле.

Если пользователь уже существует

SELECT User, Host
FROM mysql.user
WHERE User = 'gta_app';

Изменение пароля

ALTER USER 'gta_app'@'localhost'
IDENTIFIED BY 'НОВЫЙ_СЛОЖНЫЙ_ПАРОЛЬ';

Удаление пользователя

DROP USER 'gta_app'@'localhost';

Назначение прав пользователю GTA-сервера

Полные права только на одну базу

GRANT ALL PRIVILEGES
ON gta_server.*
TO 'gta_app'@'localhost';

Такой пользователь получает права на базу gta_server, но не становится администратором всего MySQL-сервера.

Более ограниченный набор прав

GRANT
SELECT,
INSERT,
UPDATE,
DELETE
ON gta_server.*
TO 'gta_app'@'localhost';

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

Если мод создаёт или обновляет структуру

Дополнительно могут потребоваться:

CREATE,
ALTER,
INDEX,
DROP

Пример расширенного набора

GRANT
SELECT,
INSERT,
UPDATE,
DELETE,
CREATE,
ALTER,
INDEX
ON gta_server.*
TO 'gta_app'@'localhost';

Не назначайте глобальные права

Не используйте для игрового приложения:

GRANT ALL PRIVILEGES
ON *.*
TO 'gta_app'@'localhost'
WITH GRANT OPTION;

Такое правило даёт слишком широкий доступ ко всем базам и позволяет передавать права другим пользователям.

FLUSH PRIVILEGES обычно не требуется

После стандартных команд CREATE USER, ALTER USER и GRANT изменения применяются через систему управления аккаунтами. Команда FLUSH PRIVILEGES нужна прежде всего после ручного изменения системных таблиц, чего делать не рекомендуется.

Создание пользователя для удалённой базы

Если GTA-сервер находится на другом VPS, разрешайте подключение только с его постоянного IP.

Пример адреса GTA-сервера

203.0.113.25

Создание пользователя

CREATE USER 'gta_app'@'203.0.113.25'
IDENTIFIED BY 'ЗАМЕНИТЕ_НА_СЛОЖНЫЙ_ПАРОЛЬ';

Назначение прав

GRANT
SELECT,
INSERT,
UPDATE,
DELETE
ON gta_server.*
TO 'gta_app'@'203.0.113.25';

Небезопасный универсальный вариант

'gta_app'@'%'

Символ % разрешает попытки входа с любых адресов. Такой вариант не следует использовать без необходимости и строгого firewall.

Для приватной сети

Если провайдер выдаёт внутренние адреса, используйте приватный IP GTA-сервера:

CREATE USER 'gta_app'@'10.20.0.15'
IDENTIFIED BY 'ЗАМЕНИТЕ_НА_СЛОЖНЫЙ_ПАРОЛЬ';

Преимущество приватной сети

  • порт базы не публикуется в обычном интернете;
  • меньше автоматических сканирований;
  • стабильная внутренняя маршрутизация;
  • можно ограничить доступ внутренним интерфейсом;
  • проще отделить игровой трафик от трафика базы.

Проверка пользователя и назначенных прав

Просмотр пользователей

SELECT User, Host
FROM mysql.user
ORDER BY User, Host;

Проверка прав локального пользователя

SHOW GRANTS
FOR 'gta_app'@'localhost';

Проверка удалённого пользователя

SHOW GRANTS
FOR 'gta_app'@'203.0.113.25';

Тестовый вход локально

mysql `
-u gta_app `
-p `
-h 127.0.0.1 `
-P 3306 `
gta_server

Для MariaDB:

mariadb `
-u gta_app `
-p `
-h 127.0.0.1 `
-P 3306 `
gta_server

После входа проверьте активную учётную запись

SELECT USER(), CURRENT_USER(), DATABASE();

Проверьте таблицы

SHOW TABLES;

Проверьте возможность записи

Не создавайте тестовые данные в рабочей таблице игроков. Используйте отдельную тестовую таблицу или тестовую базу.

Импорт SQL-файла на Linux VPS

Серверная сборка может содержать файл структуры базы:

database.sql
schema.sql
mysql.sql
install.sql
gta_server.sql

Перейдите в каталог с файлом

cd /opt/gta-server/database

Проверьте наличие файла

ls -lh

Импорт в MySQL

mysql `
-u root `
-p `
gta_server < database.sql

Импорт через пользователя приложения

mysql `
-u gta_app `
-p `
gta_server < database.sql

Такой импорт сработает только при наличии прав на создание и изменение таблиц.

Импорт в MariaDB

mariadb `
-u root `
-p `
gta_server < database.sql

Импорт из открытой консоли

USE gta_server;
SOURCE /opt/gta-server/database/database.sql;

Проверьте файл перед импортом

head -n 40 database.sql

Особенно внимательно ищите

  • DROP DATABASE;
  • DROP TABLE;
  • CREATE DATABASE;
  • USE другая_база;
  • жёстко заданные пути;
  • неподдерживаемые сопоставления;
  • создание неизвестных пользователей;
  • выдачу глобальных прав;
  • триггеры и процедуры из непроверенного источника.

Импорт SQL-файла на Windows

Откройте командную строку

Win + R
cmd

Перейдите в папку клиента MySQL

cd /d "C:\Program Files\MySQL\MySQL Server 8.4\bin"

Фактический путь зависит от установленной версии и выбранного каталога.

Импорт файла

mysql.exe -u root -p gta_server < "C:\GTA-Server\database.sql"

Для MariaDB

mariadb.exe -u root -p gta_server < "C:\GTA-Server\database.sql"

Если команда доступна через PATH

mysql -u root -p gta_server < "C:\GTA-Server\database.sql"

Импорт из клиента

mysql -u root -p

Затем:

USE gta_server;
SOURCE C:/GTA-Server/database.sql;

В SOURCE используйте прямые слеши

C:/GTA-Server/database.sql

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

Импорт базы через phpMyAdmin

phpMyAdmin предоставляет веб-интерфейс для управления MySQL и MariaDB, но не является обязательным компонентом GTA-сервера.

Порядок импорта

  1. Войдите в phpMyAdmin.
  2. Выберите базу gta_server.
  3. Откройте вкладку «Импорт».
  4. Выберите SQL-файл.
  5. Проверьте кодировку.
  6. Запустите импорт.
  7. Дождитесь сообщения о завершении.
  8. Проверьте список таблиц.

Недостатки веб-импорта

  • ограничение размера загружаемого файла;
  • ограничение времени выполнения PHP;
  • обрыв соединения браузера;
  • потребление памяти веб-сервером;
  • частично выполненный импорт;
  • сложнее увидеть точное место ошибки.

Для большого файла используйте консоль

Командный импорт обычно надёжнее и не зависит от ограничений загрузки PHP.

Импорт большой базы данных

Проверьте размер файла

ls -lh database.sql

Импорт с отображением прогресса

sudo apt install pv -y

Для MySQL:

pv database.sql |
mysql -u root -p gta_server

Для MariaDB:

pv database.sql |
mariadb -u root -p gta_server

Импорт сжатого файла

gunzip -c database.sql.gz |
mysql -u root -p gta_server

Для MariaDB:

gunzip -c database.sql.gz |
mariadb -u root -p gta_server

Если импорт завершается ошибкой размера пакета

Проверьте текущее значение:

SHOW VARIABLES LIKE 'max_allowed_packet';

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

Если соединение обрывается

  • проверьте свободное место;
  • проверьте память;
  • проверьте журнал MySQL или MariaDB;
  • проверьте целостность SQL-файла;
  • проверьте кодировку;
  • проверьте версию исходной базы;
  • проверьте ограничения пакета;
  • не выполняйте импорт через нестабильное SSH-соединение без терминального менеджера.

Запуск через tmux

sudo apt install tmux -y
tmux new -s db-import

После запуска импорта можно отсоединиться:

Ctrl + B
D

Вернуться в сессию:

tmux attach -t db-import

Проверка импортированных таблиц

Выберите базу

USE gta_server;

Покажите таблицы

SHOW TABLES;

Количество таблиц

SELECT COUNT(*) AS table_count
FROM information_schema.tables
WHERE table_schema = 'gta_server';

Проверка структуры таблицы

DESCRIBE accounts;

Замените accounts на фактическое имя таблицы игроков.

Просмотр команды создания

SHOW CREATE TABLE accounts;

Проверка первых строк

SELECT *
FROM accounts
LIMIT 10;

Проверка движков таблиц

SELECT
 TABLE_NAME,
 ENGINE
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'gta_server'
ORDER BY TABLE_NAME;

Проверка кодировок таблиц

SELECT
 TABLE_NAME,
 TABLE_COLLATION
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'gta_server'
ORDER BY TABLE_NAME;

Не изменяйте структуру до первого запуска

Сначала сохраните исходный SQL-файл и проверьте сборку в неизменном виде. Иначе будет сложно определить, вызвана ошибка исходной схемой или вашими изменениями.

Подключение GTA-сервера к MySQL или MariaDB

Параметры подключения могут находиться в:

  • server.cfg;
  • config.ini;
  • database.ini;
  • mysql.ini;
  • config.json;
  • переменных окружения;
  • исходном коде игрового мода;
  • конфигурации серверного ресурса.

Типовой набор параметров

host = 127.0.0.1
port = 3306
database = gta_server
user = gta_app
password = ЗАМЕНИТЕ_НА_ПАРОЛЬ

Для базы на том же сервере

host = 127.0.0.1

Для отдельного Database VPS

host = 10.20.0.10

Предпочтительно использовать приватный адрес, если серверы находятся в одной внутренней сети.

Не используйте localhost автоматически

Некоторые библиотеки обрабатывают localhost как socket-подключение, а 127.0.0.1 как TCP. Используйте значение, которое поддерживает конкретный плагин и рабочая конфигурация.

Проверьте MySQL-плагин

  • файл плагина находится в нужной папке;
  • плагин указан в конфигурации сервера;
  • архитектура плагина совпадает с серверным процессом;
  • установлены системные зависимости;
  • версия include соответствует плагину;
  • игровой мод скомпилирован с нужными функциями;
  • в журнале нет сообщения Plugin Failed.

Не копируйте функцию подключения из другой версии плагина

Порядок аргументов и доступные параметры могут отличаться. Используйте код, соответствующий установленной версии MySQL-плагина.

Проверка подключения GTA-сервера к базе

Сначала проверьте вход вручную

mysql `
-u gta_app `
-p `
-h 127.0.0.1 `
-P 3306 `
gta_server

Если ручной вход работает

Проверьте:

  • правильность данных в конфигурации GTA-сервера;
  • отсутствие пробелов вокруг пароля;
  • правильность имени базы;
  • наличие MySQL-плагина;
  • порядок аргументов функции подключения;
  • журнал запуска игрового режима;
  • кодировку конфигурационного файла.

Проверьте порт без входа

nc -vz 127.0.0.1 3306

Для удалённой базы

nc -vz 10.20.0.10 3306

Проверка DNS-имени

getent hosts db.example.internal

Проверьте журнал GTA-сервера

Ищите сообщения:

  • Access denied;
  • Unknown database;
  • Can't connect;
  • Connection timed out;
  • Lost connection;
  • Server has gone away;
  • Authentication plugin;
  • Table doesn't exist;
  • Unknown column;
  • Plugin Failed.

Настройка удалённого доступа к MySQL или MariaDB

Этот раздел нужен только тогда, когда GTA-сервер и база находятся на разных машинах.

Конфигурация MySQL на Ubuntu

Откройте файл:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Найдите параметр

bind-address = 127.0.0.1

Для приватного интерфейса

bind-address = 10.20.0.10

Конфигурация MariaDB

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Укажите приватный адрес базы

bind-address = 10.20.0.10

Примените изменения

MySQL:

sudo systemctl restart mysql

MariaDB:

sudo systemctl restart mariadb

Проверьте прослушивание

sudo ss -lntp |
grep ':3306'

Не используйте 0.0.0.0 без необходимости

bind-address = 0.0.0.0

Такой адрес заставляет базу слушать все IPv4-интерфейсы. Без строгого firewall порт может оказаться доступен всему интернету.

Для локальной базы оставьте localhost

bind-address = 127.0.0.1

Настройка firewall для удалённой базы

Разрешите только IP GTA-сервера

sudo ufw allow `
from 203.0.113.25 `
to any port 3306 `
proto tcp

Для приватной сети

sudo ufw allow `
from 10.20.0.15 `
to any port 3306 `
proto tcp

Проверьте правила

sudo ufw status numbered

Не открывайте порт всем

sudo ufw allow 3306/tcp

Такое правило разрешает попытки подключения с любых адресов.

Firewall панели VPS

Direction: Inbound
Protocol: TCP
Source: IP GTA-сервера
Destination port: 3306
Action: Allow

Проверьте оба уровня

  • firewall операционной системы;
  • сетевой экран VPS-провайдера.

После настройки проверьте с GTA-сервера

nc -vz IP_БАЗЫ 3306

Создание резервной копии базы GTA-сервера

Резервная копия должна создаваться регулярно и храниться отдельно от рабочего VPS. Копия на том же диске не спасёт при удалении сервера, повреждении файловой системы или блокировке аккаунта провайдера.

Создание дампа MySQL

mysqldump `
-u root `
-p `
--single-transaction `
--routines `
--triggers `
--events `
--default-character-set=utf8mb4 `
gta_server > gta_server_backup.sql

Создание дампа MariaDB

mariadb-dump `
-u root `
-p `
--single-transaction `
--routines `
--triggers `
--events `
--default-character-set=utf8mb4 `
gta_server > gta_server_backup.sql

Сжатая резервная копия MySQL

mysqldump `
-u root `
-p `
--single-transaction `
--routines `
--triggers `
--events `
gta_server |
gzip > gta_server_backup.sql.gz

Сжатая резервная копия MariaDB

mariadb-dump `
-u root `
-p `
--single-transaction `
--routines `
--triggers `
--events `
gta_server |
gzip > gta_server_backup.sql.gz

Параметр single-transaction

Подходит прежде всего для согласованного логического дампа таблиц InnoDB без длительной блокировки записи. Для таблиц других движков необходимо отдельно оценить согласованность резервной копии.

Проверьте созданный файл

ls -lh gta_server_backup.sql*

Проверьте начало дампа

head -n 30 gta_server_backup.sql

Проверка сжатого файла

gzip -t gta_server_backup.sql.gz

Не считайте успешным пустой файл

du -h gta_server_backup.sql*

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

Автоматическое резервное копирование базы

Создайте каталог

sudo mkdir -p /var/backups/gta-database
sudo chmod 700 /var/backups/gta-database

Не записывайте пароль прямо в cron

Создайте защищённый клиентский файл:

sudo nano /root/.gta-db.cnf

Содержимое

[client]
user=gta_backup
password=ЗАМЕНИТЕ_НА_СЛОЖНЫЙ_ПАРОЛЬ
host=127.0.0.1
port=3306

Ограничьте доступ

sudo chmod 600 /root/.gta-db.cnf

Создайте скрипт MySQL

sudo nano /usr/local/sbin/backup-gta-database.sh

Содержимое скрипта

#!/bin/bash

set -euo pipefail

BACKUP_DIR="/var/backups/gta-database"
DATE="$(date +%Y-%m-%d_%H-%M-%S)"
FILE="$BACKUP_DIR/gta_server_$DATE.sql.gz"

mysqldump \
--defaults-extra-file=/root/.gta-db.cnf \
--single-transaction \
--routines \
--triggers \
--events \
gta_server |
gzip > "$FILE"

gzip -t "$FILE"

find "$BACKUP_DIR" \
-type f \
-name "gta_server_*.sql.gz" \
-mtime +14 \
-delete

Для MariaDB замените команду

mariadb-dump

Разрешите запуск

sudo chmod 700 /usr/local/sbin/backup-gta-database.sh

Проверьте вручную

sudo /usr/local/sbin/backup-gta-database.sh

Добавьте в cron

sudo crontab -e

Ежедневный запуск в 04:30

30 4 * * * /usr/local/sbin/backup-gta-database.sh >> /var/log/gta-db-backup.log 2>&1

Храните внешнюю копию

  • на другом VPS;
  • в объектном хранилище;
  • на компьютере владельца;
  • в защищённом облаке;
  • на отдельном накопителе;
  • в хранилище с версионированием.

Рекомендуется хранить несколько периодов

  • ежедневные копии;
  • еженедельные копии;
  • ежемесячные копии;
  • отдельный архив перед обновлением;
  • отдельный архив перед миграцией.

Восстановление базы GTA-сервера из резервной копии

Остановите GTA-сервер

sudo systemctl stop gta-server

Имя службы замените на фактическое.

Создайте аварийный дамп текущей базы

mysqldump `
-u root `
-p `
--single-transaction `
gta_server > before_restore.sql

Восстановление обычного SQL-файла

mysql `
-u root `
-p `
gta_server < gta_server_backup.sql

Для MariaDB

mariadb `
-u root `
-p `
gta_server < gta_server_backup.sql

Восстановление сжатого дампа

gunzip -c gta_server_backup.sql.gz |
mysql -u root -p gta_server

Для MariaDB

gunzip -c gta_server_backup.sql.gz |
mariadb -u root -p gta_server

Восстановление в новую тестовую базу

CREATE DATABASE gta_restore_test
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

Затем:

mysql `
-u root `
-p `
gta_restore_test < gta_server_backup.sql

Проверьте восстановление

  • таблицы созданы;
  • количество записей выглядит корректно;
  • таблица аккаунтов доступна;
  • нет критических ошибок импорта;
  • кодировка текста не повреждена;
  • тестовая сборка подключается;
  • регистрация и сохранение работают.

Только после проверки запускайте сервер

sudo systemctl start gta-server

Перенос базы GTA-сервера на другой VPS

На старом сервере

  1. Предупредите игроков.
  2. Остановите GTA-сервер.
  3. Убедитесь, что последние данные сохранены.
  4. Создайте полный дамп.
  5. Проверьте файл.
  6. Передайте его на новый сервер по защищённому соединению.

Создание дампа

mysqldump `
-u root `
-p `
--single-transaction `
--routines `
--triggers `
--events `
gta_server |
gzip > gta_server_migration.sql.gz

Передача через SCP

scp gta_server_migration.sql.gz \
administrator@NEW_SERVER_IP:/tmp/

На новом сервере

  1. Установите совместимую базу данных.
  2. Создайте базу.
  3. Создайте пользователя.
  4. Импортируйте дамп.
  5. Назначьте права.
  6. Проверьте таблицы.
  7. Измените конфигурацию GTA-сервера.
  8. Проведите закрытый тест.

Не удаляйте старый VPS сразу

Сохраните его выключенным или закройте вход игроков, пока не убедитесь, что:

  • все таблицы перенесены;
  • аккаунты загружаются;
  • данные сохраняются;
  • автоматические задания работают;
  • резервные копии создаются;
  • новая база выдерживает нагрузку;
  • старый сервер больше не принимает записи.

Оптимизация базы данных GTA-сервера

Не изменяйте параметры MySQL или MariaDB по универсальному шаблону. Оптимизация зависит от объёма базы, оперативной памяти, числа игроков и характера SQL-запросов.

Сначала найдите реальную проблему

  • медленные запросы;
  • отсутствующие индексы;
  • слишком частые сохранения;
  • запросы внутри больших циклов;
  • выборка всех столбцов без необходимости;
  • отсутствие ограничения количества строк;
  • неочищаемые таблицы журналов;
  • слишком большое число подключений;
  • блокировки таблиц;
  • медленный диск VPS.

Проверьте размер таблиц

SELECT
 TABLE_NAME,
 ENGINE,
 TABLE_ROWS,
 ROUND(
 (DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024,
 2
 ) AS size_mb
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'gta_server'
ORDER BY size_mb DESC;

Проверьте индексы таблицы

SHOW INDEX
FROM accounts;

Часто индексируются

  • уникальный ID игрока;
  • имя аккаунта;
  • идентификатор владельца имущества;
  • идентификатор транспорта;
  • внешние ключи;
  • поля, используемые в WHERE и JOIN;
  • время в крупных таблицах журналов.

Не добавляйте индексы на все столбцы

Индексы ускоряют часть операций чтения, но занимают место и увеличивают стоимость вставки и обновления данных.

Проверьте план запроса

EXPLAIN
SELECT *
FROM accounts
WHERE username = 'TestPlayer';

Проверьте количество подключений

SHOW STATUS LIKE 'Threads_connected';
SHOW VARIABLES LIKE 'max_connections';

Не увеличивайте max_connections без анализа

Каждое соединение использует ресурсы. Сначала проверьте, закрывает ли плагин старые соединения и использует ли пул подключений.

Очищайте журналы по правилам хранения

Не удаляйте данные без резервной копии. Для крупных логов задайте срок хранения и перенос старых записей в архив.

Безопасность базы GTA-сервера

Используйте отдельные аккаунты

  • администратор базы;
  • игровой сервер;
  • система резервного копирования;
  • веб-сайт проекта;
  • тестовый сервер;
  • разработчик с временным доступом.

Не используйте одну учётную запись для всех систем

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

Ограничьте доступ к конфигурации

sudo chown gta:gta /opt/gta-server/config/database.ini
sudo chmod 600 /opt/gta-server/config/database.ini

Имена пользователя и группы замените на фактические.

Не храните секреты в публичном репозитории

Перед публикацией исходного кода проверьте:

  • конфигурационные файлы;
  • переменные окружения;
  • историю Git;
  • резервные копии;
  • журналы;
  • скриншоты;
  • архивы сборки;
  • файлы примеров.

После утечки пароля

  1. Измените пароль пользователя базы.
  2. Перезапустите приложение с новой конфигурацией.
  3. Проверьте журналы входов.
  4. Проверьте пользователей и права.
  5. Проверьте целостность таблиц.
  6. Проверьте неизвестные процессы и файлы.
  7. Удалите секрет из истории репозитория.

Регулярно устанавливайте обновления

  • операционной системы;
  • MySQL или MariaDB;
  • MySQL-плагина;
  • серверного ядра;
  • веб-панели;
  • phpMyAdmin, если используется;
  • библиотек приложения.

Проверяйте восстановление резервных копий

Наличие SQL-файла не гарантирует возможность восстановления. Периодически импортируйте копию в отдельную тестовую базу.

Распространённые ошибки MySQL и MariaDB

Access denied for user

  • неверный пароль;
  • неверное имя пользователя;
  • пользователь создан для другого Host;
  • у пользователя нет прав на базу;
  • сервер подключается не с ожидаемого IP;
  • используется несовместимая аутентификация.

Проверьте аккаунт

SELECT User, Host
FROM mysql.user
WHERE User = 'gta_app';

Проверьте права

SHOW GRANTS
FOR 'gta_app'@'localhost';

Unknown database

База с указанным именем не существует или в конфигурации допущена ошибка.

SHOW DATABASES;

Can't connect to MySQL server

  • служба остановлена;
  • неверный адрес;
  • неверный порт;
  • firewall блокирует соединение;
  • MySQL слушает только localhost;
  • нет маршрута до удалённого сервера;
  • порт базы закрыт в панели VPS.

Проверьте службу

sudo systemctl status mysql

или:

sudo systemctl status mariadb

Table doesn't exist

  • SQL-файл не импортирован;
  • импорт завершился частично;
  • выбрана другая база;
  • имя таблицы отличается;
  • регистр букв не совпадает;
  • мод ожидает другую версию структуры.

Unknown column

Игровой мод и структура базы относятся к разным версиям. Не добавляйте столбец наугад — найдите миграцию или SQL-схему для установленной версии.

Server has gone away

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

Too many connections

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

Проверьте процессы

SHOW FULL PROCESSLIST;

Ошибка сопоставления или кодировки

SQL-дамп может использовать collation, которой нет в установленной версии базы. Не заменяйте значения массово без тестирования — сначала определите исходную версию и подходящее совместимое сопоставление.

Русский текст отображается неправильно

  • не совпадает кодировка базы;
  • таблица имеет другую кодировку;
  • соединение не использует нужный charset;
  • SQL-файл сохранён в другой кодировке;
  • игровой клиент использует ограниченную кодовую страницу;
  • данные уже были импортированы с повреждением.

Duplicate entry

Записываемое значение нарушает уникальный индекс. Проверьте логику генерации ID, повторный импорт и существующие записи.

Контрольный список настройки базы GTA-сервера

Установка

  • выбрана MySQL или MariaDB;
  • установлена совместимая версия;
  • служба запущена;
  • включена автозагрузка;
  • порт прослушивается;
  • системный журнал не содержит критических ошибок.

База и пользователь

  • создана отдельная база;
  • выбрана подходящая кодировка;
  • создан отдельный пользователь;
  • не используется root;
  • пользователь ограничен нужным Host;
  • назначены права только на базу проекта;
  • проверена команда SHOW GRANTS.

Импорт

  • SQL-файл получен из доверенного источника;
  • сохранена исходная копия;
  • файл проверен на опасные команды;
  • импорт завершился без критических ошибок;
  • таблицы появились;
  • структура соответствует версии мода;
  • проверена кодировка данных.

Подключение GTA-сервера

  • указан правильный host;
  • указан порт 3306 или фактический порт;
  • указано правильное имя базы;
  • указан отдельный пользователь;
  • пароль сохранён без лишних пробелов;
  • MySQL-плагин загружен;
  • ручной вход работает;
  • журнал подтверждает соединение.

Удалённая база

  • используется приватная сеть или VPN;
  • bind-address настроен правильно;
  • firewall разрешает только IP GTA-сервера;
  • создан пользователь для конкретного Host;
  • порт не открыт всему интернету;
  • проверено соединение с GTA VPS.

Резервное копирование

  • создаётся регулярный SQL-дамп;
  • копия проверяется после создания;
  • копии хранятся вне рабочего VPS;
  • хранятся несколько версий;
  • пароль не записан открыто в cron;
  • старые копии удаляются по правилам хранения;
  • выполнено тестовое восстановление.

Частые вопросы о базе данных GTA-сервера

Что выбрать для GTA-сервера: MySQL или MariaDB?

Используйте систему, с которой проверены игровой мод и MySQL-плагин. Для новой установки сначала протестируйте сборку на отдельной базе.

Можно ли установить базу на тот же VPS?

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

Нужно ли открывать порт 3306?

Нет, если GTA-сервер и база находятся на одной машине. Для отдельного Database VPS разрешайте порт только с IP игрового сервера.

Можно ли подключить сервер к базе под root?

Технически возможно, но небезопасно. Создайте отдельного пользователя с правами только на базу игрового проекта.

Какая кодировка нужна?

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

Почему после импорта нет таблиц?

Проверьте выбранную базу, сообщения об ошибках, команды CREATE DATABASE и USE внутри SQL-файла, а также права пользователя.

Можно ли импортировать базу через phpMyAdmin?

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

Что делать с файлом database.sql?

Создайте пустую базу и импортируйте SQL-файл через команду mysql, mariadb или проверенный веб-интерфейс.

Нужно ли импортировать SQL при каждом запуске?

Нет. Структура импортируется один раз при установке или обновляется специальными миграциями. Повторный импорт может удалить или продублировать данные.

Почему сервер пишет Access denied?

Проверьте имя пользователя, пароль, значение Host и назначенные права. Учётные записи 'gta_app'@'localhost' и 'gta_app'@'%' считаются разными.

Почему ручное подключение работает, а GTA-сервер нет?

Проверьте конфигурационный файл, MySQL-плагин, порядок аргументов функции подключения, кодировку файла и журнал игрового сервера.

Почему база доступна локально, но не с другого VPS?

Возможные причины: bind-address установлен на localhost, firewall блокирует порт, пользователь создан для другого Host или отсутствует маршрут между серверами.

Можно ли разрешить пользователя с адреса %?

Это разрешает попытки подключения с любых адресов. Безопаснее создать пользователя для конкретного IP и дополнительно ограничить firewall.

Нужно ли выполнять FLUSH PRIVILEGES после GRANT?

При использовании штатных команд CREATE USER, ALTER USER и GRANT обычно не требуется.

Как сделать резервную копию MySQL?

Для небольшой и средней базы можно использовать mysqldump. Сохраняйте дамп вне рабочего VPS и регулярно проверяйте восстановление.

Как сделать резервную копию MariaDB?

Используйте mariadb-dump. Параметры выбираются с учётом таблиц, процедур, триггеров и используемых движков.

Можно ли копировать каталог /var/lib/mysql?

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

Как часто делать резервные копии?

Частота зависит от активности проекта. Для рабочего Role Play-сервера обычно требуется автоматическое ежедневное копирование, а перед обновлениями — отдельный внеплановый дамп.

Почему дамп имеет размер 0 байт?

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

Можно ли восстановить базу без остановки GTA-сервера?

Нежелательно. Пока сервер записывает новые данные, восстановление может создать несогласованное состояние. Остановите игровой процесс и создайте аварийный дамп.

Почему после восстановления пропали новые аккаунты?

Резервная копия содержит состояние базы на момент её создания. Все изменения, появившиеся после этого момента, не входят в дамп.

Как перенести базу на другой VPS?

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

Нужно ли устанавливать phpMyAdmin?

Нет. Все основные операции можно выполнять через консоль. phpMyAdmin устанавливается только при необходимости веб-управления и требует отдельной защиты.

Что делать при ошибке Unknown column?

Игровой мод ожидает другую структуру таблицы. Найдите SQL-миграцию для установленной версии, а не добавляйте случайный столбец вручную.

Что делать при ошибке Too many connections?

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

Где хранить пароль базы?

В закрытом конфигурационном файле или защищённой системе секретов. Ограничьте права чтения и не добавляйте файл в публичный репозиторий.

Достаточно ли хранить резервные копии на том же VPS?

Нет. При удалении или повреждении VPS будут потеряны и рабочая база, и локальные копии. Храните минимум одну копию на другой площадке.

Итог

Надёжная база GTA-сервера начинается с отдельной базы, отдельного пользователя и минимально необходимых прав. Если игровой сервер и MySQL или MariaDB находятся на одном VPS, подключайтесь через локальный адрес и не публикуйте порт 3306 в интернете.

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

Для удалённой базы используйте приватную сеть, VPN или TLS, ограничьте firewall адресом GTA-сервера и не создавайте общедоступного пользователя без необходимости.

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

RSS инструкций
0 комментариев 0.0 из 0 оценок
MIAMI RP COMMUNITY

Комментарии к инструкции

Обсудите решение, задайте вопрос или дополните инструкцию

Всего: 0
Страница: /
Показано: 0
Добавление комментариев сейчас недоступно для текущего пользователя.