Otwórz mysql w oknie poleceń i wydaj następujące polecenie:
mysql> FLUSH TABLES WITH READ LOCK;
To zablokuje wszystkie tabele w wszystkich baz danych w tej instancji MySQL, dopóki nie wydasz polecenia UNLOCK TABLES (lub zakończ połączenie klienta, które utrzymuje te blokady odczytu).
Aby to potwierdzić, możesz otworzyć inne okno poleceń i spróbować wykonać ALTER , DROP , RENAME lub TRUNCATE . Te polecenia zawieszają się, czekając na zwolnienie blokady odczytu. Naciśnij Ctrl-C, aby zakończyć oczekiwanie.
Ale chociaż tabele mają blokadę odczytu, nadal możesz wykonać mysqldump kopia zapasowa.
FLUSH TABLES WITH READ LOCK polecenie może być taki sam jak przy użyciu --lock-all-tables opcja mysqldump . Nie jest to do końca jasne, ale ten dokument
wydaje się to wspierać:
Oba FLUSH TABLES WITH READ LOCK i --lock-all-tables użyj wyrażenia „globalna blokada odczytu”, więc myślę, że prawdopodobnie robią to samo. Dlatego powinieneś być w stanie użyć tej opcji do mysqldump i chroń przed równoczesnymi ZMIANAMI, UPUSZCZANIEM, ZMIANA NAZWY i OCIĘCIEM.
Odnośnie. Twój komentarz:Poniższe informacje pochodzą od Guilhema Bichota w dzienniku błędów MySQL, do którego się połączyłeś:
Wygląda na to, że nie możesz uzyskać równoczesnego dostępu podczas tworzenia kopii zapasowej i jednocześnie zablokować ALTER, DROP, RENAME i TRUNCATE.