mysqldumpの実行がサーバーのリソースを圧迫する問題があって、それを解消するための対応が行われた際に調べたことをまとめておく。
結論
--single-transaction
オプションと--quick
オプションを使う
--single-transaction
オプションとは?
- トランザクション分離モードをREPEATABLE READにする
- データをダンプする前にSTART TRANSACTION SQLステートメントを発行する
- InnoDBテーブルのみが一貫した状態でダンプされる
- MyISAMまたはMEMORYテーブルは状態を変更する可能性がある
- 有効なダンプファイルを取得するために以下のステートメントを発行してはいけない
- ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE
- 上記のステートメントを使用すると、mysqldump によって実行され、テーブルの内容を取得するSELECTが、正しくない内容を取得したり失敗したりすることがある
--quick
オプションとは?
- テーブルの全レコードをメモリにバッファするのではなく1行ずつダンプする