RDSのtime_zoneをCLIで変更

記事タイトルとURLをコピーする

こんにちは、技術4課の多田です。

11/24に東京では初雪が観測されましたね。
たまたまその日に購入したCDに山下達郎さんの「クリスマス・イブ」のカバーが入っており、心身ともに冷えた1日を過ごしました。。
泣いてないです。


さて、今回は、技術3課の髙田が投稿したRDSのTips記事の関連エントリになります。
髙田が紹介した手法ではない方法でRDSのパラメーターグループで「init_connect」を無効化してみようと思います。

なお、今回確認したRDSの環境は以下の通りです。

  • DB エンジン:MySQL
  • バージョン:5.6.27

今回の対処について

髙田が紹介した手法では、以下のコマンドを実行し、init_connectのタイムゾーンをUTCからJSTに変更していました。

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

今回は、AWS CLIを使って以下の作業を行います。

  1. init_connectパラメーターを無効化
  2. time_zoneパラメーターをJSTに設定

1. init_connectパラメーターを無効化

パラメーターグループのinit_connectパラメーターの無効化を行います。
これは、init_connectで指定したタイムゾーンをUTCに戻すために行います。
コマンドは以下のとおりです。

aws rds reset-db-parameter-group --db-parameter-group-name <パラメーターグループ名> --no-reset-all-parameters --parameters ParameterName=init_connect,ApplyMethod=pending-reboot --region <リージョン名>

返り値は以下のように返ってきます。
パラメーターグループ変更後、変更を反映するためにはDBインスタンスの再起動が必要です。
再起動して反映します。

{
"DBParameterGroupName": "パラメーターグループ名"
}

MySQLのタイムゾーンを確認してみますと、UTCの時刻に戻っていることを確認できました。

mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2016-11-25 06:35:40 |
+---------------------+
1 row in set (0.00 sec)

 

2.time_zoneパタメーターをJSTに設定

タイムゾーンがUTCになっていますので、time_zoneパラメーターをJSTに設定します。
以下のようにコマンドを実行します。
尚、下記のコマンドは、デフォルトのパラメーターグループ(default.mysql5.6等)の設定値は変更できません。
利用者が独自に作成したパラメーターグループのみ実行できます。
デフォルトのパラメーターグループをDBインスタンスにアタッチしていた場合は、デフォルトのパラメーターグループからコピーして作成したパラメーターグループをDBインスタンスにアタッチして、これを変更してください。

aws rds modify-db-parameter-group --db-parameter-group-name <パラメーターグループ> --parameters ParameterName=time_zone,ParameterValue=Asia/Tokyo,ApplyMethod=pending-reboot --region <リージョン名>

返り値は上記同様にパラメーターグループの名前が返されます。
設定の変更を反映するために、DBインスタンスの再起動を実行します。
再度、タイムゾーンを確認してみますと、JSTに変更されました!

mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2016-11-25 16:18:24 |
+---------------------+
1 row in set (0.00 sec)

まとめ

time_zoneパラメーターでJST指定ができるようになったため、既にパラメーターグループの変更や、
RDSを新規作成時にJST指定していらっしゃる方もいるかと思います。
タイムゾーンをUTCで設定していてJSTに変更を検討される場合、DBインスタンスの再起動が発生するため、
変更のタイミングには注意が必要です。
本記事が少しでも役立てば幸いです。では!