Ein wiederherstellbares FiveM-Backup koppelt die Datenbank mit den passenden Ressourcen und der Konfiguration. Beweise dies, indem du dieses Paar auf einem isolierten Server wiederherstellst und den Spielerstatus nach einem Neustart überprüfst.
Einen Wiederherstellungspunkt definieren
Füge server-data, server.cfg, Berechtigungen, erforderliche txAdmin-Profile, benutzerdefinierte Ressourcen und Versionsaufzeichnungen hinzu. Notiere die Artefakt- und Framework-Versionen sowie externe Abhängigkeiten. Bewahre Geheimnisse in privaten Backups auf, niemals in öffentlichen Repositories.
Für ein konsistentes Paar plane Wartungsarbeiten und stoppe FXServer und andere Anwendungs-Writer vor dem endgültigen Datenbank-Dump und der Dateikopie. Führe während des Dumps keine Schemaänderungen durch. Die folgenden Beispiele verwenden MariaDB; MySQL-Installationen müssen ihre passenden Hersteller-Tools und Optionen verwenden.
Datenbank-Authentifizierung vorbereiten
Verwende ein dediziertes Backup-Konto mit den für deine Datenbankfunktionen erforderlichen Berechtigungen. Speichere dessen Verbindungsdetails in einer privaten MariaDB-Optionsdatei, die nur vom Backup-Konto gelesen werden kann. Bewahre sie außerhalb des Web-Roots und des Repositorys auf.
Die mariadb-dump-Dokumentation erläutert Authentifizierung und Grenzen konsistenter Snapshots. --single-transaction liefert einen konsistenten Snapshot für transaktionale Tabellen; nichttransaktionale Tabellen werden dadurch nicht konsistent.
Linux-Beispiel
Führe dies als autorisierter Backup-Benutzer nach der Koordination der Schreibvorgänge aus. Ersetze den Datenbanknamen und die Pfade durch deine tatsächliche Installation. Die private Optionsdatei muss bereits existieren:
#!/usr/bin/env bash
set -euo pipefail
umask 077
stamp=$(date -u +%Y%m%dT%H%M%SZ)
dest="/srv/backups/fivem/$stamp"
install -d -m 0700 "$dest"
mariadb-dump --defaults-extra-file=/etc/fivem/backup.cnf \
--single-transaction --routines --events --triggers \
--databases fivem --result-file="$dest/database.sql"
test -s "$dest/database.sql"
tar -C /srv/fivem -czf "$dest/server-data.tar.gz" server-data
tar -tzf "$dest/server-data.tar.gz" > /dev/null
sha256sum "$dest/database.sql" "$dest/server-data.tar.gz" > "$dest/SHA256SUMS"
Füge alle erforderlichen txAdmin/Konfigurationspfade außerhalb von server-data zu deinem Backup-Set hinzu. Teste den Befehl unter demselben Konto und in derselben Umgebung, die von Cron oder einem systemd-Timer verwendet werden. Alarmiere bei einem Exit-Status ungleich Null.
Windows PowerShell-Beispiel
Verwende den tatsächlichen Pfad zu mariadb-dump.exe und eine private Optionsdatei. --result-file verhindert, dass die Shell die Textkodierung des Dumps verändert:
$ErrorActionPreference = "Stop"
$Stamp = (Get-Date).ToUniversalTime().ToString("yyyyMMddTHHmmssZ")
$Destination = "D:\FiveM-Backups\$Stamp"
New-Item -ItemType Directory -Path $Destination | Out-Null
& "C:\MariaDB\bin\mariadb-dump.exe" `
"--defaults-extra-file=D:\FiveM-Private\backup.cnf" `
--single-transaction --routines --events --triggers `
--databases fivem "--result-file=$Destination\database.sql"
if ($LASTEXITCODE -ne 0) { throw "Database dump failed" }
if ((Get-Item "$Destination\database.sql").Length -eq 0) { throw "Empty dump" }
Copy-Item "D:\FXServer\server-data" "$Destination\server-data" -Recurse
Get-FileHash "$Destination\database.sql" | Format-List
Beschränke die Windows-Berechtigungen des Backup-Verzeichnisses auf die Backup- und Wiederherstellungsadministratoren. Verwende im Taskplaner explizite ausführbare Pfade und ein dediziertes Konto; überprüfe dessen Verlauf und Fehlerwarnungen.
Auf einem isolierten Server wiederherstellen
- Wähle eine vollständige Backup-Generation und überprüfe deren Prüfsummen oder Archivintegrität. Kombiniere niemals eine neuere Datenbank mit beliebigen älteren Ressourcen.
- Extrahiere die Dateien an einen separaten Testort. Bereite einen isolierten Datenbankdienst vor und stelle database.sql mit dem passenden MariaDB-Client wieder her. Der Dump enthält den Datenbanknamen, importiere ihn also nicht in den Live-Dienst.
- Lege nur Test-Anmeldeinformationen und Endpunkte fest und starte die aufgezeichnete Artefakt-/Framework-Kombination. Verhindere, dass Testressourcen echte Zahlungen, Webhooks oder Spielerbenachrichtigungen senden.
- Tritt mit einem Testspieler bei. Überprüfe Charakter, Inventar, Jobs, Wohnungen und Berechtigungen; verbinde dich erneut und starte neu, dann überprüfe erneut.
- Notiere die Wiederherstellungsdauer und fehlende Abhängigkeiten. Behalte mehrere aufbewahrte Generationen, eine verschlüsselte Offsite-Kopie und ein Backup-Konto, das nicht jede Remote-Generation löschen kann.
Setze normale Schreibvorgänge erst fort, nachdem das Backup-Set vollständig ist. Ein erfolgreicher geplanter Job ist ein nützlicher Beweis; eine erfolgreiche Wiederherstellung ist die Überprüfung, die das Backup vertrauenswürdig macht.