Wer Webseiten oder Online-Shops mit größeren Datenbanken betreibt wird schon festgestellt haben, dass Exporte/Backups mit mysqldump (ohne weitere Parameter ausgeführt) den Shop für die Dauer des Dumps lahm legen können. Die Seite wird im Browser so lange mit dem Ladesymbol dargestellt, bis die Datenbank wieder verfügbar ist.
Abhilfe schaffen die Parameter –single-transaction und –quick beim mysqldump Befehl.
--single-transaction
Damit wird das Isolation Level auf REPEATABLE READ gesetzt und vor dem Dump eine Transaktion gestartet. Nützlich ist das für InnoDB-Tabellen (die Transaktionen untersützten). Damit wird ein konsistenter Zustand gedumped, ohne Anwendungen dabei zu blockieren.
--quick
Damit werden die Daten aus den Tabellen zeilenweise ausgelesen und nicht als Gesamtes. Man spart damit das Puffern und erneute Schreiben.
Hier mein Gist auf Github:
FYI, magerun db:dump also uses –single-transaction
Hi Willem,
Thanks for the note! Good to know!
We didn’t have n98-magerun installed on the db-server, that’s why mysqldump was used.
Best regards,
Anna