zabbix の mysql を 5.5 → 5.6 にした

手元で使っている zabbix の mysql を 5.5 から 5.6 にバージョンアップしてみた。

本当なら dump 取って、5.5 全部消して、5.6 入れてリストアして、というのがきれいに行く方法なんだろうけど面倒でいろいろ省略してしまった。

具体的にはそのまま rpm -Uvh で 5.6 の rpm パッケージを入れてみた。とりあえず入ったのでいいか。

my.cnf そのままでは起動しなかった。この時点での変更点は1か所。

table_cache というパラメータは無くなり代わりに table_open_cache となっているため書き換えた。これで起動した。

起動したので mysql_upgrade コマンド実行。

つぎに zabbix-server を起動ようとしたところ、DBに接続できないという。認証通らないぞと。

なので認証まわりのパラメータを追記した。 [mysqld] のセクションに skip_secure_auth と1行追記した。

しばらく動かしてみておかしいなと思ったのだけどディスク書き込みの負荷がものすごく大きい。

ディスク側から見ると、今までずっと 1MB/s くらいの書き込みが発生していたのだけど、バージョンアップ後 2.5MB/s くらいの書き込みが発生している。

Zabbix のみで使っているDBであり、特に設定も変えておらず Zabbix-agent 数が変わっていないので、DBに書き込まれるデータの数は変わらないはず。

なにを書き込んでいるのだ。

アプリケーション側のINSERTパターンが変わっていないのに、ディスクへの書き込みはものすごく増えていて、なんの設定がまずいのだろうと。

設定を見直してみると、バイナリログがオフになっていた。今までずっとバイナリログがオフのままだったらしい。バイナリログを設定することにより少し速くなった。

ログを書かないほうが遅くなるっていうのはどういう仕組みなのだろう。ディスクにとっては二重にデータが書かれているはずの余計なはずのログを出力したほうが速い。どういうことなの。

ついでに以下の設定を追記した。

expire_logs_days=1

max_binlog_size=25165824

binlog_order_commits=0

どうだろう、効果あるかな。