Abra un mysql
ventana de comandos y emita este comando:
mysql> FLUSH TABLES WITH READ LOCK;
Esto bloqueará todos tablas en todas bases de datos en esta instancia de MySQL hasta que emita UNLOCK TABLES
(o termine la conexión del cliente que contiene estos bloqueos de lectura).
Para confirmar esto, puede abrir otra ventana de comando e intentar hacer un ALTER
, DROP
, RENAME
o TRUNCATE
. Estos comandos cuelgan, esperando que se libere el bloqueo de lectura. Presiona Ctrl-C para terminar la espera.
Pero aunque las tablas tienen un bloqueo de lectura, aún puede realizar un mysqldump
copia de seguridad.
Las FLUSH TABLES WITH READ LOCK
comando puede ser lo mismo que usar --lock-all-tables
opción de mysqldump
. No está del todo claro, pero este documento
parece apoyarlo:
Ambos FLUSH TABLES WITH READ LOCK
y --lock-all-tables
use la frase "bloqueo de lectura global", por lo que creo que es probable que estos hagan lo mismo. Por lo tanto, debería poder usar esa opción para mysqldump
y proteger contra ALTER, DROP, RENAME y TRUNCATE simultáneos.
Re. su comentario:Lo siguiente es de Guilhem Bichot en el registro de errores de MySQL al que se vinculó:
A partir de esto, parece que no puede obtener acceso simultáneo durante una copia de seguridad y bloquear simultáneamente ALTER, DROP, RENAME y TRUNCATE.