Abra um
mysql
janela de comando e emita este comando:mysql> FLUSH TABLES WITH READ LOCK;
Isso bloqueará todos tabelas em todos bancos de dados nesta instância MySQL até que você emita
UNLOCK TABLES
(ou encerrar a conexão do cliente que mantém esses bloqueios de leitura). Para confirmar isso, você pode abrir outra janela de comando e tentar fazer um
ALTER
, DROP
, RENAME
ou TRUNCATE
. Esses comandos travam, aguardando a liberação do bloqueio de leitura. Pressione Ctrl-C para encerrar a espera. Mas enquanto as tabelas têm um bloqueio de leitura, você ainda pode executar um
mysqldump
cópia de segurança. O
FLUSH TABLES WITH READ LOCK
comando pode ser o mesmo que usar o --lock-all-tables
opção de mysqldump
. Não está totalmente claro, mas este documento
parece apoiá-lo:Ambos
FLUSH TABLES WITH READ LOCK
e --lock-all-tables
use a frase "bloqueio de leitura global", então acho que é provável que eles façam a mesma coisa. Portanto, você deve poder usar essa opção para mysqldump
e proteger contra ALTER, DROP, RENAME e TRUNCATE simultâneos. Ré. seu comentário:O seguinte é de Guilhem Bichot no log de erros do MySQL que você vinculou:
A partir disso, parece que você não pode obter acesso simultâneo durante um backup e bloquear simultaneamente ALTER, DROP, RENAME e TRUNCATE.