sql >> データベース >  >> RDS >> Mysql

DDLが同時に使用されている場合にmysqldumpとシングルトランザクションを使用して正しいダンプを取得するにはどうすればよいですか?

    mysqlを開きます コマンドウィンドウを開き、次のコマンドを発行します:

    mysql> FLUSH TABLES WITH READ LOCK;
    

    これにより、すべてがロックされます すべてのテーブル UNLOCK TABLESを発行するまで、このMySQLインスタンス上のデータベース (または、これらの読み取りロックを保持しているクライアント接続を終了します)。

    これを確認するには、別のコマンドウィンドウを開いて、ALTERを実行してみてください。 、DROPRENAME または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をブロックすることはできないようです。



    1. Doctrine 2を使用してテーブルを切り捨てる方法は?

    2. 変数がNULLかどうかを確認し、MySQLストアドプロシージャで設定するにはどうすればよいですか?

    3. すべてのPOSTデータを取得し、メールで送信します

    4. SQL Developer 4.1.2