mysqlパフォーマンス改善への道(その1、現状の確認)

パワー不足のmysqlをチューニングしてみます。

こんばんわ。プラットフォーム担当の宮下です。

今回は、バックアップ兼集計用に稼働しているmysqlのレプリケーションンサーバの
パフォーマンス改善していきたいと思います。
これまでにもいくつか対策はしてきましたが、まずは環境をおさらいします。

◇稼働してる環境は、AWSのEC2でlargeインスタンスを使用しています。
 サービスは、OpenPNEを使用したSNSのサービスとなります。対象のMysqlはバックアップとデータ集計が目的で稼働しています。
 (本番サービスでは使用していません)

◇mysqlのバージョンはちょっと古くて「5.0.77」になっています。multiで起動させていていて
 この他に開発環境用のmysqlも稼働していたりします。  ちなみに今の遅延秒数は、「1512561 秒」でまだ増加中です。

◇これまでに変更した点ですが、
 「innodb_buffer_pool_size」を512Mから2028Mまで増加、
 「innodb_flush_log_at_trx_commit」を2から0に変更、
 (リカバリの精度よりもスループットを優先)
 「key_buffer_size」を32Mから300Mに変更、
 「query_cache_size = 0」にして無効化しました。
 効果は、DISKのI/Oが半分くらい減りましたが、遅延解消とまではいってません。

◇最後にmuninで取得しているデータを確認します。

delay0527

遅延が日々増えています。たまに減る事もありますが要因は分かりません。

io0527

常にDISKのread I/Oが大量に発生しています。

原因ははっきりしていて、DBデータに画像や動画データが格納されている為となります。
 buffer pool sizeでは収まり切らないデータサイズなので常にDISKのread/writeが発生しています。
 またMyISAMとInnodbが混在していてリソースが効率的に利用出来ていない事や、
 OpenPNEが「delete aaa filename LIKE ‘%bbb%’」というクエリを大量に発行している事
 などが解決すべき課題がたくさんあります。

現状を整理した事で、次回からは一つずつ改善対策を実施していきたいと思います。