Posted at

DBバックアップ(mysqldump)の速度改善のためにやっていること

More than 1 year has passed since last update.


DBバックアップがだんだん遅くなってきた!


  • 運用当初は40分で完了していた日時DBバックアップ(全テーブルのmysqldump)

  • 1年ほど運用を続けていくうちに遅くなっていき、最終的に80分かかるようになった


mysqldumpはテーブル全件のselect


  • selectが遅くなっている原因の一つが、テーブルのフラグメント化

  • 主に行の削除で歯抜けが発生し、検索効率が悪くなっている


速くするために「OPTIMIZE TABLE」を実施

OPTIMIZE TABLE テーブル名;


  • OPTIMIZE TABLEはinnoDBで実施すると、全件削除+投入になる

  • delete→insertを毎日繰り返しているようなテーブルに効果が高い


具体的には以下のようにしてます


  • ロックがかかるので、システム稼働中は流せない

  • 全テーブルを5回に分け、システム停止時間帯に実施

  • 01:16:28 ⇒ 00:51:28   25分速くなった!

  • ほっておくとまた遅くなるので、cronで月に一度実施するように設定

※MySQLのバージョンは5.5です