Öffnen Sie ein mysql
Befehlsfenster und geben Sie diesen Befehl ein:
mysql> FLUSH TABLES WITH READ LOCK;
Dadurch werden alle gesperrt Tabellen in alle Datenbanken auf dieser MySQL-Instanz, bis Sie UNLOCK TABLES
ausgeben (oder beenden Sie die Client-Verbindung, die diese Lesesperren hält).
Um dies zu bestätigen, können Sie ein weiteres Befehlsfenster öffnen und versuchen, ein ALTER
auszuführen , DROP
, RENAME
oder TRUNCATE
. Diese Befehle hängen und warten darauf, dass die Lesesperre aufgehoben wird. Drücken Sie Strg-C, um das Warten zu beenden.
Aber während die Tabellen eine Lesesperre haben, können Sie immer noch einen mysqldump
durchführen Sicherung.
Die FLUSH TABLES WITH READ LOCK
Befehl darf dasselbe sein wie die Verwendung von --lock-all-tables
Option von mysqldump
. Es ist nicht ganz klar, aber dieses Dokument
scheint es zu unterstützen:
Beide FLUSH TABLES WITH READ LOCK
und --lock-all-tables
Verwenden Sie den Ausdruck "globale Lesesperre", daher denke ich, dass diese wahrscheinlich dasselbe tun. Daher sollten Sie diese Option für mysqldump
verwenden können und Schutz vor gleichzeitigem ALTER, DROP, RENAME und TRUNCATE.
Betreff. Ihr Kommentar:Das Folgende stammt von Guilhem Bichot aus dem MySQL-Fehlerprotokoll, auf das Sie verlinkt haben:
Daraus ergibt sich, dass Sie während eines Backups keinen gleichzeitigen Zugriff erhalten und gleichzeitig ALTER, DROP, RENAME und TRUNCATE blockieren können.