LoginSignup
26
27

More than 5 years have passed since last update.

Amazon RDS for MySQLでタイムゾーンを設定するのはやめたほうがいいかもしれない

Last updated at Posted at 2014-02-06

情報が完全ではないのですが、事象例が少なかったので共有します。

現状、RDS for MySQLではtime_zoneはUTC固定となっていて編集することが出来ません。
そこでいくつかの代替案があるのですが…

  • init_connectパラメータでtime_zoneを変える
  • ストアドプロシージャを使う
  • RDS接続毎にSESSIONスコープのtime_zoneを変える

最初にストアドプロシージャを使う方法を試したのですが、rebootしたタイミングで原因不明のエラーが発生するなど非常に不安定だったためやめました。

そのため、以前は接続毎に以下のSQLを発行してタイムゾーンを変更していました。

SET SESSION time_zone = 'Asia/Tokyo';

これで順調に動いていたのですが、RDSがバックアップでフェイルオーバーしたタイミングで、突然すべての接続が切断されてしまうようになりました…

ERROR 1184 (08S01): Aborted connection .. (init_connect command failed

このエラーは、以下に変更すると直りました。

SET SESSION time_zone = '+9:00';

原因ははっきりしていませんが、突然こういうことが起きて対処も難しいので、基本的にRDSで運用する場合はtime_zoneを変更しないでも大丈夫な設計にすべきなのかもしれません。

  • 諦めてUTCで運用する
  • ADDDATEやADDTIME関数を使う
  • アプリ側でJSTの時刻を指定する

個人的にはアプリ側サーバーをNTPで時刻合わせして、date関数などを使って指定するのが一番なのかなぁと思います。

1月14日にOracleはタイムゾーンが変更できるようになったので、MySQLも早く対応して欲しいところです…

Amazon Web Services Blog: Amazon RDS for Oracle Database - New Database Version & Time Zone Option

26
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
27