[04年11月版] RDS(AWS)を借りたら真っ先に時刻設定をしよう

スクリーンショット 2014-10-23 16.19.39

RDS、普通にmysqlサーバとして使っても便利ですし、バックアップ用サーバとしても便利です。データベースサーバとして最適化されてるのでスペック以上のパフォーマンスも発揮しますし、sshでいろいろいじり倒さなくてもいい。しかも、スペックを変更したい時も、ボタン1つ。
 
しかしながら、一点だけ。システム時間がUTC(世界標準)で、日本と9時間違うのです。(ちなみに、各所情報をみてると、文字コードを変えないと日本語が使えない、と書かれてたりしますが、2014年11月現在は普通に日本語を格納・取り出しすることができます)

システム時間が日本と違う弊害

CURRENT_TIMESTAMPは、当然9時間狂います。DATE(colum) > DATE(NOW())も当然9時間ちがうので、時刻同士の比較ができません。まぁ、それだけといえばそれだけなのですが、違和感ありますし、長期ランニングを考えると変えておいた方がいいかと思います。

パラメーターの用意|システム時間変更のやり方

1. Parameter Groupを開く

RDSのダッシュボード、レフトメニューからParameter Groupを選択して、テーブル上の「Create DB Parameter Group」をクリック。
スクリーンショット 2014-11-07 19.44.52

2. 各フォームに任意の値を入れる

「DB Parameter Group Family」はdefaultで入っている「mysql5.6」を選択いただければ大丈夫です。
「DB Parameter Group Name」「DB Parameter Group Description」はtimezoneとか、japanとか、適当に入力して下さい。
スクリーンショット 2014-11-07 19.48.19
 

3. 新しく作ったParameter Groupを選択して、Edit Parameterをクリック

スクリーンショット 2014-11-07 19.53.02

4. 1つだけパラメーターを追加する

パラメーター「init_connect」に、

SET SESSION time_zone = CASE WHEN POSITION('rds' IN CURRENT_USER()) = 1 THEN 'UTC' ELSE 'Asia/Tokyo' END;

をコピペして貼り付け。そして、右上にある「Save Change」をクリックして保存して下さい。
 
 

RDSへの適応|システム時間変更のやり方

1. 適応するインスタンスのModifyをクリック

インスタンス一覧に移動して、Instance ActionからModifyを選択して下さい。
スクリーンショット 2014-11-07 20.02.47

2. Parameter Groupを変更

Database OptionsにあるParameter Groupを、defaultから先ほど作成したグループに変更してください。
スクリーンショット 2014-11-07 20.07.33

3. インスタンスを再起動

そして、Parameter Groupの変更を反映するために、インスタンスを再起動して下さい。ちなみに再起動しないと適応されません。

まとめ

以上で、システムデフォルトのtimezoneが’UTC’から’Asia/Tokyo’に変更されました。
それでは、良いRDSライフを!

お問い合わせ