Apri un mysql
finestra di comando ed emettere questo comando:
mysql> FLUSH TABLES WITH READ LOCK;
Questo bloccherà tutto tabelle in tutte database su questa istanza MySQL fino a quando non emetti UNLOCK TABLES
(o terminare la connessione client che contiene questi blocchi di lettura).
Per confermare ciò, puoi aprire un'altra finestra di comando e provare a eseguire un ALTER
, DROP
, RENAME
o TRUNCATE
. Questi comandi si bloccano, in attesa del rilascio del blocco di lettura. Premi Ctrl-C per terminare l'attesa.
Ma mentre le tabelle hanno un blocco di lettura, puoi comunque eseguire un mysqldump
backup.
I FLUSH TABLES WITH READ LOCK
comando può equivale a usare --lock-all-tables
opzione di mysqldump
. Non è del tutto chiaro, ma questo documento
sembra supportarlo:
Entrambi FLUSH TABLES WITH READ LOCK
e --lock-all-tables
usa la frase "blocco lettura globale", quindi penso che sia probabile che facciano la stessa cosa. Pertanto, dovresti essere in grado di utilizzare quell'opzione per mysqldump
e proteggerti da ALTER, DROP, RENAME e TRUNCATE simultanei.
Rif. il tuo commento:Quanto segue è di Guilhem Bichot nel log dei bug di MySQL a cui ti sei collegato:
Da questo, sembra che tu non possa ottenere l'accesso simultaneo durante un backup e bloccare contemporaneamente ALTER, DROP, RENAME e TRUNCATE.