Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara mendapatkan dump yang benar menggunakan mysqldump dan transaksi tunggal ketika DDL digunakan secara bersamaan?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memilih maksimum 3 item per pengguna di MySQL?

  2. MediumBlob dalam skema database Laravel

  3. Sekuel:Menggunakan Banyak Basis Data

  4. Beralih ke Pernyataan yang Disiapkan

  5. Hubungkan ke Sumber Data MySQL di PHPStorm