blog.kotamiyake.me

為せば成る、為さねば成らぬ何事も

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行ずつダンプする

参考記事