障害報告 2019-06-24

障害の内容

2019年6月24日 23:00頃より、以下の問題が発生しました。

  • 備考の選択肢を開くボタンが機能しない
  • 期間集計画面がエラーで開けない
  • 年間集計画面がエラーで開けない

復旧日時

2019年6月25日 13:30頃

原因と対策

データ・センターより回答があり、緊急メンテナンスのために 6月24日23:55 にデータベース・サーバーの再起動が行われ、サーバーに設定していた内部設定値が初期化されてしまったことにより各種の問題が発生していました。この問題に対する(次回再起動時に同じ問題を生じさせないような)対策をデータ・センターに依頼し、実施待ちです。管理人がこれら設定値を動的に変更し、現象を復旧させました。

技術的な背景(管理人の備忘録)

列をカテゴリー化する際の挙動を制御するためのデータベースの内部設定値(sql-mode)の値がデータベースの再起動にともない変更されてしまったのが原因である。

本来の設定値は、
STRICT_TRANS_TABLES,
NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION

再起動後の設定値は
ONLY_FULL_GROUP_BY ,
STRICT_TRANS_TABLES ,
NO_ZERO_IN_DATE ,
NO_ZERO_DATE ,
ERROR_FOR_DIVISION_BY_ZERO, 
NO_AUTO_CREATE_USER ,
NO_ENGINE_SUBSTITUTION,

上記の赤字の部分はmysql 5.7以降で追加された既定値で、データベースサーバーの再起動により勝手に初期設定されてしまう。これを防ぐためには、サーバーの初期設定ファイル(my.conf)で sql-modeを明示的に設定する必要がある。この作業はデータセンター側でのみ対応が可能な作業のため、同日これを依頼した。

今回の問題は「ONLY_FULL_GROUP_BY 」が追加されたことによる挙動の変化が不具合の根本原因であった。