Lag beim Backup vermeiden
Da ich es schon mitbekommen habe, dass der Server bei einem Backup einige Sekunden lang gar nicht ansprechbar war und Razen mir gesagt hat, das für das Backup ein Plugin genutzt wird mal ein technischer Vorschlag von mir, wie man das Backup "unbemerkt" vom Server erstellen kann.
Das ganze lässt sich sogar recht unkompliziert realisieren.
Einfach zum Server den Befehl schicken, dass AutoSave ausgeschaltet wird, danach wird die komplette Map gespeichert (das ist der einzige Punkt an dem man nicht vermeiden kann, dass es zu kleinen Lags kommen könnte), ein Archiv des Servers erstellt und AutoSave wieder einschaltet.
Ich gehe bei meinem Beispiel mal davon aus, dass der Server unter /home/minecraft/ liegt und Backups unter /backups gespeichert werden.
Beide Verzeichnisse können am Anfang festgelegt werden.
Der Server läuft unter einem Screen mit dem Namen "mc-server".
Edit: Das ganze Script dann natürlich per crontab in den gewünschten Abständen automatisch laufen lassen
Technischer Hintergrund:
Der Minecraft-Server berechnet abgesehen von Kleinigkeiten wie dem Chat und dem I/O alles in einem einzigen Thread. Somit bringen einem bei Leistungshungrigen Plugins mehrere CPU-Kerne auf einem root-Server nichts.
Wenn das Backup nun unabhängig vom Minecraft-Server erstellt wird, wird ein neuer Thread für das Backup geöffnet welcher sich einen wenig ausgelasteten Kern aussucht. Somit läuft der Minecraft-Server unbehelligt weiter während ein Backup erstellt wird.
Noch eine Frage:
Werden die Backups nachdem sie erstellt wurden auch automatisch auf ein zweites Serversystem übertragen?
Steakbroetchen out
Das ganze lässt sich sogar recht unkompliziert realisieren.
Einfach zum Server den Befehl schicken, dass AutoSave ausgeschaltet wird, danach wird die komplette Map gespeichert (das ist der einzige Punkt an dem man nicht vermeiden kann, dass es zu kleinen Lags kommen könnte), ein Archiv des Servers erstellt und AutoSave wieder einschaltet.
Ich gehe bei meinem Beispiel mal davon aus, dass der Server unter /home/minecraft/ liegt und Backups unter /backups gespeichert werden.
Beide Verzeichnisse können am Anfang festgelegt werden.
Der Server läuft unter einem Screen mit dem Namen "mc-server".
Code:
#!/bin/bash
# Zeit als Variable Speichern
TIME=$(date +"%Y-%m-%d.%H:%M")
# Zielverzeichnis und Serververzeichnis festlegen
DEST="/backup/backup-$TIME.tar.gz"
SRC="/home/minecraft"
# Autosave wird ausgeschaltet
screen -S mc-server -X stuff "save-off $(printf '\r')"
# Welt wird komplett gespeichert
screen -S mc-server -X stuff "save-all $(printf '\r')"
# Archiv erzeugen
tar czf $DEST $SRC
# Autosave wird wieder eingeschaltet
screen -S mc-server -X stuff "save-on $(printf '\r')"
Edit: Das ganze Script dann natürlich per crontab in den gewünschten Abständen automatisch laufen lassen
Technischer Hintergrund:
Der Minecraft-Server berechnet abgesehen von Kleinigkeiten wie dem Chat und dem I/O alles in einem einzigen Thread. Somit bringen einem bei Leistungshungrigen Plugins mehrere CPU-Kerne auf einem root-Server nichts.
Wenn das Backup nun unabhängig vom Minecraft-Server erstellt wird, wird ein neuer Thread für das Backup geöffnet welcher sich einen wenig ausgelasteten Kern aussucht. Somit läuft der Minecraft-Server unbehelligt weiter während ein Backup erstellt wird.
Noch eine Frage:
Werden die Backups nachdem sie erstellt wurden auch automatisch auf ein zweites Serversystem übertragen?
Steakbroetchen out