Åbn en mysql
kommandovindue og udsend denne kommando:
mysql> FLUSH TABLES WITH READ LOCK;
Dette låser alle tabeller i alle databaser på denne MySQL-instans, indtil du udsteder UNLOCK TABLES
(eller afbryd klientforbindelsen, der holder disse læselåse).
For at bekræfte dette kan du åbne et andet kommandovindue og prøve at lave en ALTER
, DROP
, RENAME
eller TRUNCATE
. Disse kommandoer hænger og venter på, at læselåsen udløses. Tryk på Ctrl-C for at afslutte ventetiden.
Men mens tabellerne har en læselås, kan du stadig udføre en mysqldump
backup.
FLUSH TABLES WITH READ LOCK
kommando kan være det samme som at bruge --lock-all-tables
mulighed for mysqldump
. Det er ikke helt klart, men dette dokument
synes at understøtte det:
Begge FLUSH TABLES WITH READ LOCK
og --lock-all-tables
bruge sætningen "global læselås", så jeg tror, det er sandsynligt, at disse gør det samme. Derfor bør du være i stand til at bruge denne mulighed til at mysqldump
og beskytte mod samtidige ALTER, DROP, RENAME og TRUNCATE.
Vedr. din kommentar:Følgende er fra Guilhem Bichot i MySQL-fejlloggen, som du linkede til:
Ud fra dette lyder det, som om du ikke kan få samtidig adgang under en sikkerhedskopiering og samtidig blokere ALTER, DROP, RENAME og TRUNCATE.