Отворете mysql
команден прозорец и издайте тази команда:
mysql> FLUSH TABLES WITH READ LOCK;
Това ще заключи всички таблици във всички бази данни на този MySQL екземпляр, докато не издадете UNLOCK TABLES
(или прекратете клиентската връзка, която държи тези заключвания за четене).
За да потвърдите това, можете да отворите друг команден прозорец и да опитате да направите ALTER
, DROP
, RENAME
или TRUNCATE
. Тези команди увисват, изчаквайки освобождаването на заключването за четене. Натиснете Ctrl-C, за да прекратите чакането.
Но докато таблиците имат заключване за четене, все пак можете да извършите mysqldump
резервно копие.
FLUSH TABLES WITH READ LOCK
команда може да бъде същото като използването на --lock-all-tables
опция за mysqldump
. Не е напълно ясно, но този документ
изглежда го поддържа:
И двете FLUSH TABLES WITH READ LOCK
и --lock-all-tables
използвайте израза "глобално заключване на четене", така че мисля, че е вероятно тези да правят същото. Следователно трябва да можете да използвате тази опция за mysqldump
и защита срещу едновременни ALTER, DROP, RENAME и TRUNCATE.
Re. вашият коментар:Следното е от Guilhem Bichot в дневника за грешки на MySQL, към който сте се свързали:
От това изглежда, че не можете да получите едновременен достъп по време на архивиране и едновременно да блокирате ALTER, DROP, RENAME и TRUNCATE.