Open een mysql
opdrachtvenster en geef deze opdracht:
mysql> FLUSH TABLES WITH READ LOCK;
Dit vergrendelt alle tabellen in alle databases op deze MySQL-instantie totdat u UNLOCK TABLES
issue uitgeeft (of beëindig de clientverbinding die deze leesvergrendelingen bevat).
Om dit te bevestigen, kunt u een ander opdrachtvenster openen en proberen een ALTER
. uit te voeren , DROP
, RENAME
of TRUNCATE
. Deze commando's blijven hangen, wachtend tot de leesvergrendeling wordt opgeheven. Druk op Ctrl-C om het wachten te beëindigen.
Maar hoewel de tabellen een leesvergrendeling hebben, kunt u nog steeds een mysqldump
. uitvoeren back-up.
De FLUSH TABLES WITH READ LOCK
commando mag hetzelfde zijn als het gebruik van de --lock-all-tables
optie van mysqldump
. Het is niet helemaal duidelijk, maar dit document
lijkt het te ondersteunen:
Beide FLUSH TABLES WITH READ LOCK
en --lock-all-tables
gebruik de uitdrukking "global read lock", dus ik denk dat het waarschijnlijk is dat deze hetzelfde doen. Daarom zou je die optie moeten kunnen gebruiken om mysqldump
en beschermen tegen gelijktijdige ALTER, DROP, RENAME en TRUNCATE.
Met betrekking tot. jouw commentaar:het volgende is van Guilhem Bichot in het MySQL-buglogboek waarnaar je hebt gelinkt:
Hieruit blijkt dat u tijdens een back-up geen gelijktijdige toegang kunt krijgen en tegelijkertijd ALTER, DROP, RENAME en TRUNCATE kunt blokkeren.