Ein Dump ist eine Textdatei mit SQL-Anweisungen. Ob er sich zurückspielen lässt, hängt davon ab, wie er geschrieben wurde — und die Standardwerte sind für eine Live-Seite die falschen. Die meisten Import-Fehlschläge entscheiden sich Wochen vorher, beim Erstellen des Dumps.

Der Befehl

mysqldump \
  --single-transaction \
  --quick \
  --routines --triggers --events \
  --default-character-set=utf8mb4 \
  --set-gtid-purged=OFF \
  dbname | gzip > db-$(date +\%F).sql.gz

Was jeder einzelne verhindert

  • --single-transaction — ein konsistenter Snapshot ohne Tabellensperren. Ohne ihn steht eine gut besuchte Seite für die Dauer des Dumps still.
  • --quick — streamt Zeile für Zeile, statt eine große Tabelle in den Speicher zu puffern.
  • --routines --triggers --events — standardmäßig nicht enthalten. Eine Wiederherstellung ohne sie sieht vollständig aus und verliert stillschweigend jede Stored Procedure und jedes geplante Ereignis.
  • --default-character-set=utf8mb4 — Arabisch und Emoji überleben den Hin- und Rückweg.
--single-transaction ist nur für InnoDB konsistent. Eine MyISAM-Tabelle in derselben Datenbank wird ohne diese Garantie gesichert — also konvertieren Sie sie oder nehmen Sie für diese Tabellen eine inkonsistente Kopie hin.

Prüfen Sie die Datei, nicht den Exit-Code

gzip -t db-2026-09-05.sql.gz               # the archive is intact
zcat db-2026-09-05.sql.gz | tail -5       # ends with "Dump completed"
zcat db-2026-09-05.sql.gz | grep -c "CREATE TABLE"

Ein Dump, den eine volllaufende Platte abgeschnitten hat, ist über weite Strecken noch ein gültiges gzip. Die Abschlusszeile am Ende ist der Beweis, dass mysqldump bis zum Schluss kam — und die Prüfung kostet einen Befehl.

Spielen Sie ihn woanders zurück, nach Plan

mysql -e "CREATE DATABASE restore_test CHARACTER SET utf8mb4"
zcat db-2026-09-05.sql.gz | mysql restore_test
mysql restore_test -e "SELECT COUNT(*) FROM orders"
Vergleichen Sie diese Zeilenzahl mit der Produktion. Ein Dump, der fehlerfrei importiert und mit der Hälfte der Zeilen ankommt, ist der Fehlschlag, den niemand bemerkt — weil der Import überhaupt nichts gesagt hat.