2014年10月16日木曜日

MySQL 5.7では"[Note] mysqld: ready for connections"がどっかいった? (いってなかった

MySQLがちゃんと起動したかどうか(クラッシュリカバリーとか終わったかどうか)を見るのに、「"ready for connections"が出てれば接続はできるよ」とか昔から言ってたんですが、5.7.5で遊んでたらどうもこのログが出ない。

-- 5.6.21
2014-10-07 19:38:03 23139 [Note] /usr/mysql/5.6.21/bin/mysqld: ready for connections.
Version: '5.6.21-log'  socket: '/usr/mysql/5.6.21/data/mysql.sock'  port: 64056  Source distribution

-- 5.7.5
141016 19:17:37 mysqld_safe Starting mysqld daemon with databases from /usr/mysql/5.7.5/data
2014-10-16T10:17:38.421845Z 0 [Warning] The syntax '--log_warnings/-W' is deprecated and will be removed in a future release. Please use '--log_error_verbosity' instead.
2014-10-16T10:17:38.422101Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2014-10-16T10:17:38.869037Z 0 [Warning] Failed to setup SSL
2014-10-16T10:17:38.869069Z 0 [Warning] SSL error: SSL context is not usable without certificate and private key

…あれ、これだけ?; と思ったら俺の設定が悪いせいだった。


$ vim my.cnf
..
log-warnings= 1
..

よかれと思って(いや、少なくとも悪さはしないので)このパラメーター指定していたんですが、コイツ5.7で少し意味合いが変わってます。
↑のエラーログにも書いてありますが、log_error_verbosityを代わりに使え! ってことで、log_warnings + 1の値が勝手にlog_error_verbosityにセットされます
http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_log_warnings

log_error_verbosityは何者かというと、
Verbosity ValueMessage Types Logged
1Errors only
2Errors and warnings
3Errors, warnings, and notes

http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_log_error_verbosity

正に名前の通り、ログレベルによって出力をフィルターしてくれるやつです。ログを書き出す関数はちゃんとログレベルを評価するようになってます。暗黙のデフォルトは3。
log-warningsが、「ほとんどのログには影響なくて、1以上の場合にのみ出力されるログがある」(=その関数を通らずに出力されるログがいっぱいあるというかほとんど)という超投げ遣りな意味合いだったのに比べて大きな違いです。

というわけで暗黙のデフォルト3がlog-warnings=1 => log_error_verbosity=2に上書きされて、Noteの出力を抑制するモードに…。。


よかれと思って取り敢えずつけてる人(俺も前職のころのクセでそうだった)がハマりそうな感じでした。ちゃんちゃん。

0 件のコメント :

コメントを投稿