1. ホーム
  2. mysql

[解決済み] Mysqldump -single-transactionオプション

2022-03-10 11:42:26

質問

どなたか、どのように mysqldump --single-transaction は、実際に InnoDB のようなトランザクションテーブルで動作するのですか?私は、公式の ドキュメント が、まだ糊付けしていない。のようにグローバルロックではなく、テーブル単位でロックするのでしょうか? --lock-tables を行うのでしょうか?また、mysqldumpは --opt をデフォルトのオプションとして設定し、その中に --lock-tables とは互いに排他的です。 --single-transaction というように、上記のドキュメントリンクに記載されています。私は --skip-opt を使用する場合 --single-transaction を単独で mysqldump コマンドを使用しますか?

私は700GbのサイズのInnoDBテーブルをダンプする必要があり、これを達成するための正しいコマンドを探しています。現在、私は以下のものを使用しています。

 mysqldump -B my_db --quick --single-transaction --max_allowed_packet=512M --compress --order-by-primary

よろしくお願いします。

どのように解決するのですか?

--single-transaction には、"ダンプ中に InnoDB テーブルに発生した変更は、ダンプに含まれません" と書かれています。 つまり、事実上、ダンプはダンプされた瞬間のデータベースのスナップショットです。 開始 ダンプにかかる時間は関係ありません。

ロックが相互に作用するため、テーブルの動作が遅くなり、書き込みが停止することさえあり得ます。 例えば ALTER TABLE または DROP TABLE を実行すると、同じテーブルに対する他のアクションと一緒にダンプされます。

--lock-tables は、MyISAM テーブルに有効である。

--opt が通常推奨されます。 上記のオプションとは独立したものだと思います。