Öppna en mysql
kommandofönstret och utfärda detta kommando:
mysql> FLUSH TABLES WITH READ LOCK;
Detta låser alla tabeller i alla databaser på den här MySQL-instansen tills du utfärdar UNLOCK TABLES
(eller avsluta klientanslutningen som har dessa läslås).
För att bekräfta detta kan du öppna ett annat kommandofönster och försöka göra en ALTER
, DROP
, RENAME
eller TRUNCATE
. Dessa kommandon hänger och väntar på att läslåset ska släppas. Tryck på Ctrl-C för att avsluta väntan.
Men även om tabellerna har ett läslås kan du fortfarande utföra en mysqldump
säkerhetskopiering.
FLUSH TABLES WITH READ LOCK
kommandot kan vara samma som att använda --lock-all-tables
alternativet mysqldump
. Det är inte helt klart, men det här dokumentet
verkar stödja det:
Båda FLUSH TABLES WITH READ LOCK
och --lock-all-tables
använd frasen "globalt läslås", så jag tror att det är troligt att dessa gör samma sak. Därför bör du kunna använda det alternativet för att mysqldump
och skydda mot samtidiga ALTER, DROP, RENAME och TRUNCATE.
Re. din kommentar:Följande är från Guilhem Bichot i MySQL buggloggen som du länkade till:
Av detta låter det som att du inte kan få åtkomst samtidigt under en säkerhetskopiering och samtidigt blockera ALTER, DROP, RENAME och TRUNCATE.