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をブロックすることはできないようです。