Buka mysql
jendela perintah dan jalankan perintah ini:
mysql> FLUSH TABLES WITH READ LOCK;
Ini akan mengunci semua tabel di semua database pada instance MySQL ini sampai Anda mengeluarkan UNLOCK TABLES
(atau putuskan koneksi klien yang menyimpan kunci baca ini).
Untuk mengonfirmasi ini, Anda dapat membuka jendela perintah lain dan mencoba melakukan ALTER
, DROP
, RENAME
atau TRUNCATE
. Perintah-perintah ini hang, menunggu kunci baca dilepaskan. Tekan Ctrl-C untuk menghentikan penantian.
Tetapi sementara tabel memiliki kunci baca, Anda masih dapat melakukan mysqldump
cadangan.
FLUSH TABLES WITH READ LOCK
perintah boleh sama dengan menggunakan --lock-all-tables
pilihan mysqldump
. Tidak sepenuhnya jelas, tetapi dokumen ini
sepertinya mendukungnya:
Keduanya FLUSH TABLES WITH READ LOCK
dan --lock-all-tables
gunakan frasa "kunci baca global", jadi saya pikir ini mungkin melakukan hal yang sama. Oleh karena itu, Anda harus dapat menggunakan opsi itu untuk mysqldump
dan lindungi dari ALTER, DROP, RENAME, dan TRUNCATE secara bersamaan.
Ulang. komentar Anda:Berikut ini dari Guilhem Bichot di log bug MySQL yang Anda tautkan ke:
Dari sini, sepertinya Anda tidak bisa mendapatkan akses bersamaan selama pencadangan, dan secara bersamaan memblokir ALTER, DROP, RENAME, dan TRUNCATE.