DBサーバー(MySQL)のチューニングしようとしたときのメモ
過去にDBサーバー(MySQL)のチューニングを検討したときのメモ MySQLのチューニング機会があれば参考にしたいと思う。詳細な作業手順は割愛してる。 追記:実対応は社内の事情もあり未実施
対応前
背景
- 関わっていたDBサーバーは構築当初のピュアな状態からチューニングされていなかった
- DBサーバはマスター/スレイブ構成だった
- Master:1台
- Slave:3台
問題
- 繁忙期にレスポンスが著しく遅くなっていた
- とある時間帯のバッチタイミングでレプリケーション遅延が定常的に発生していた
- SlaveDBのCPUのio wait も通常30%、高負荷時には70%であった
- MySQLの設定も推奨設定から乖離していた
仮説
- innodb_buffer_pool_size
- innodb_file_per_table
- 「共有領域」管理となっていたが推奨は「テーブル個別領域」管理
- 領域全体の更新より更新対象のテーブルの領域の更新のみのほうが早い
- query_cache_size
対応
やること
- innodb_buffer_pool_sizeは3GB(30%)→6GB(75%)に変更
やらないこと
- query_cache_sizeはこのまま
- innodb_file_per_tableをONにする
- my.cnf上は未指定だがデフォルト値がONのため設定済み
その他
- MySQLTunerで1度計測したほうが良さそう
- ログもしっかりとる設定にしたほうが良いか