Otevřete mysql
příkazovém okně a zadejte tento příkaz:
mysql> FLUSH TABLES WITH READ LOCK;
Tímto uzamknete vše tabulky ve všech databáze v této instanci MySQL, dokud nevydáte příkaz UNLOCK TABLES
(nebo ukončit klientské připojení, které má tyto zámky čtení).
Chcete-li to potvrdit, můžete otevřít další příkazové okno a pokusit se provést ALTER
, DROP
, RENAME
nebo TRUNCATE
. Tyto příkazy se zablokují a čekají na uvolnění zámku čtení. Čekání ukončíte stisknutím Ctrl-C.
Ale zatímco tabulky mají zámek čtení, stále můžete provést mysqldump
zálohování.
FLUSH TABLES WITH READ LOCK
příkaz může být stejný jako při použití --lock-all-tables
možnost mysqldump
. Není to úplně jasné, ale tento dokument
Zdá se, že to podporuje:
Oba FLUSH TABLES WITH READ LOCK
a --lock-all-tables
použijte frázi "globální zámek čtení", takže si myslím, že je pravděpodobné, že tyto dělají totéž. Proto byste měli být schopni použít tuto možnost k mysqldump
a chránit proti souběžným ALTER, DROP, RENAME a TRUNCATE.
Re. váš komentář:Následující je od Guilhema Bichota v protokolu chyb MySQL, na který jste odkazovali:
Z toho vyplývá, že nemůžete získat souběžný přístup během zálohování a současně blokovat ALTER, DROP, RENAME a TRUNCATE.