mysql
を開きます コマンドウィンドウを開き、次のコマンドを発行します:
mysql> FLUSH TABLES WITH READ LOCK;
これにより、すべてがロックされます すべてのテーブル UNLOCK TABLES
を発行するまで、このMySQLインスタンス上のデータベース (または、これらの読み取りロックを保持しているクライアント接続を終了します)。
これを確認するには、別のコマンドウィンドウを開いて、ALTER
を実行してみてください。 、DROP
、RENAME
またはTRUNCATE
。これらのコマンドはハングし、読み取りロックが解放されるのを待ちます。 Ctrl-Cを押して、待機を終了します。
ただし、テーブルには読み取りロックがありますが、mysqldump
を実行することはできます。 バックアップ。
FLUSH TABLES WITH READ LOCK
コマンドmay --lock-all-tables
を使用するのと同じである mysqldump
のオプション 。完全には明確ではありませんが、このドキュメント
それをサポートしているようです:
両方のFLUSH TABLES WITH READ LOCK
および--lock-all-tables
「グローバル読み取りロック」というフレーズを使用するので、これらは同じことをする可能性が高いと思います。したがって、そのオプションを使用してmysqldump
を実行できるはずです。 同時ALTER、DROP、RENAME、およびTRUNCATEから保護します。
再。あなたのコメント:以下はあなたがリンクしたMySQLバグログのGuilhemBichotからのものです:
このことから、バックアップ中に同時アクセスを取得すると同時に、ALTER、DROP、RENAME、およびTRUNCATEをブロックすることはできないようです。