Как сделать резервную копию FiveM сервера: база данных, ресурсы и txData

Сделайте резервную копию вашего FiveM сервера: mysqldump или HeidiSQL для базы данных, ресурсы, server.cfg и txData, запланированные резервные копии, копии вне сервера и как восстановить.

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

Что резервное копирование

Что Почему Где
База данных Персонажи, деньги, транспортные средства, инвентари, всё, что принадлежит игрокам MariaDB или MySQL
server.cfg Ваши параметры сервера и порядок запуска папка данных сервера
папка resources Ваши скрипты и их файлы конфигурации папка данных сервера
txData Параметры txAdmin, учётные записи администратора, историю запретов и журнал действий папка txData

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

Внимание: server.cfg может содержать ваш ключ лицензии, пароль базы данных и токены Discord. Держите резервные копии приватными и никогда не размещайте их в общественном месте.

Резервная копия базы данных

С mysqldump

mysqldump поставляется с MariaDB и MySQL. Замените пользователя и имя базы данных на свои:

bash
mysqldump -u root -p --single-transaction --routines --databases es_extended > backup.sql
  • --single-transaction берёт последовательную копию таблиц InnoDB без блокировки сервера.
  • --routines включает хранимые процедуры.
  • --databases добавляет утверждение CREATE DATABASE, поэтому восстановление проще.

Поместите дату в имя файла, чтобы копии не перезаписывали друг друга:

bash
mysqldump -u root -p --single-transaction --routines --databases es_extended > "backup_$(date +%F).sql"

Чтобы запустить его без диалога пароля, сохраните учётные данные в защищённом файле опций (такой как ~/.my.cnf на Linux) вместо того чтобы вводить их в команду.

С HeidiSQL

Если вы предпочитаете графический инструмент:

  1. Подключитесь к серверу в HeidiSQL.
  2. Щёлкните правой кнопкой мыши по базе данных и выберите Export database as SQL.
  3. Выберите все таблицы, выберите Create для структуры и Insert для данных, и выберите целевой файл.
  4. Нажмите Export.

Сделайте это вручную перед рискованными изменениями. Для обычных резервных копий автоматизируйте это.

Резервная копия файлов

Сжимайте папки, которые вы хотите сохранить:

bash
tar -czf server_files_$(date +%F).tar.gz server.cfg resources txData

На Windows, PowerShell может сделать то же самое:

powershell
Compress-Archive -Path server.cfg, resources, txData -DestinationPath "server_files_$(Get-Date -Format yyyy-MM-dd).zip"

Запустите из папки, которая держит эти предметы, или используйте полные пути. Пропустите папки кэша, если ваши резервные копии становятся огромными; они перестраиваются при запуске сервера.

Распланируйте это

Linux: cron

Откройте crontab с crontab -e и добавьте строку. Это запускает дамп каждый день в 04:00:

cron
0 4 * * * mysqldump --single-transaction --routines --databases es_extended > /backups/db_$(date +\%F).sql

Внутри crontab, % должен быть escapied как \%. Пользователь, запускающий его, требует доступ к базе данных через файл опций, как описано выше.

Windows: Task Scheduler

Сохраните ваши команды резервного копирования в скрипт backup.ps1, затем создайте ежедневную задачу:

powershell
schtasks /Create /SC DAILY /ST 04:00 /TN "FiveM backup" /TR "powershell -ExecutionPolicy Bypass -File C:\fivem\backup.ps1"

Или используйте приложение Task Scheduler: создайте базовую задачу, установите ежедневный триггер, и выберите скрипт как действие.

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

Удалите старые резервные копии

Резервные копии накапливаются. Сохраняйте, например, последние 7 ежедневных копий и несколько еженедельных. Маленькая чистка в скрипте достаточно:

bash
find /backups -name "db_*.sql" -mtime +14 -delete

Держите резервные копии вне сервера

Правило простое: резервная копия, которая живёт на той же машине, — это не настоящая резервная копия. Скопируйте её куда-нибудь ещё после каждого запуска:

  • другой сервер или домашняя машина, с scp или rsync через SSH,
  • сервис облачного хранилища, с инструментом таким как rclone,
  • другой диск, который не является частью той же машины, как минимум.

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

Восстановите резервную копию

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

  1. Остановите FiveM сервер из txAdmin, чтобы ничего не писалось при восстановлении.
  2. Восстановите базу данных:
bash
mysql -u root -p < backup.sql

Потому что дамп использовал --databases, он воссоздаёт саму базу данных. Если вы экспортировали с HeidiSQL, выберите Run SQL file в инструменте и выберите файл.

  1. Положите обратно server.cfg и папку resources, и папку txData, если txAdmin был потерян.
  2. Запустите сервер и смотрите консоль на ошибки базы данных. См. ошибки соединения oxmysql, если соединение не удаётся.

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

Перед каждым изменением

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

Контрольный список

Проблема Решение
Нет резервной копии вообще Запустите mysqldump сегодня, затем распланируйте это
Дамп просит пароль в запланированной работе Используйте файл опций с учётными данными
Резервные копии только на сервере Скопируйте их на другую машину или хранилище
Диск заполняется Удалите резервные копии старше вашего периода хранения
Потеряны параметры txAdmin или администраторы Восстановите папку txData
Восстановление не удаётся на импорт Проверьте файл SQL полный и пользователь базы данных имеет права
Не уверены, что резервная копия работает Восстановите его на тестовую базу данных и проверьте таблицы

Короткие ответы

Что самое важное для резервной копии?

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

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

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

Достаточно ли резервной копии на той же машине?

Нет. Отказ диска, удалённый сервер или атака вредоносного ПО берёт резервную копию с собой. Скопируйте резервные копии на другую машину или сервис хранилища.

Скрипты без этой проблемы

Tebex TemplateПремиальная тема для вашего магазина Tebex без кода, полностью настраиваемая из панели Tebex.Смотреть скрипт →Item Creator V2Создавайте используемые предметы с анимациями, пропами, эффектами и не только — без кода.Смотреть скрипт →Shop CreatorМагазин меньше чем за минуту — владельцы, сотрудники, сейфы и ограбления в комплекте.Смотреть скрипт →

Читайте также