AuroraAWS

Amazon AuroraのタイムゾーンをUTCからJSTへ変更する

Amazon Aurora のタイムゾーンをUTCからJSTへ変更してみます。

default.aurora-mysql5.7やdefault.mariadb10.6などの、あらかじめAWSで用意されているデフォルトパラメータグループは各設定値の変更ができません。

そのため稼働中のAuroraにデフォルトのパラメータグループが適用されている場合(Aurora作成時に明示的に変更しないとデフォルトパラメータグループが適用されます)は、別のパラメータグループを作った上で、それをDBクラスタへ適用します。

なおタイムゾーンの変更に関してはDBの再起動は不要です。

スポンサーリンク

タイムゾーン変更手順

パラメータグループの新規作成

AWSマネジメントコンソールの画面上部検索窓 [ RDS ] で検索 → 当該サービスをクリック → RDS画面の左ペイン [ パラメータグループ ] → 画面右の [ パラメータグループの作成 ] をクリックし、次画面でパラメータグループを設定します。

パラメータグループの詳細画面の [ タイプ ] ではDB Cluster Parameter Groupを選択します。

そのほか、パラメータグループファミリーやグループ名を適切に設定したら [ 作成 ] をクリックします。

パラメータグループの適用

RDS画面の左ペイン [ データベース ] → 変更対象のDB識別子 にチェック → 画面上の [ 変更 ] をクリック → [ DB クラスターのパラメータグループ ] を作成したパラメータグループ へ変更 → [ 続行 ] をクリックします。

次画面で [ 変更を適用するタイミング ] の すぐに適用 にチェックを入れ → [ クラスターの変更 ] をクリックします。

パラメータグループのタイムゾーンを変更

作成したパラメータグループをクリックし次画面の検索ボックスで time_zone と入力 → 画面右上の[ パラメータの編集 ] をクリック → time_zoneのプルダウンから Asia/Tokyo を選択 → 画面右上の [ 変更の保存 ] をクリックします。

なおデフォルトのパラメータグループも、変更可能の列の値が true となっており一見変更できそうに見えますが、実際に [ 変更の保存 ] をクリックすると以下のようなエラーとなります。

保存中のエラー: Cannot modify a default parameter group. (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterValue; Request ID: 8a7xxx; Proxy: null)

JSTへ変更されたことの確認

変更後、Auroraへ接続すると以下のようにJSTとなっていることが確認できます。

-- 変更前は time_zone がSYSTEM(=UTC)となっていた
mysql> show global variables like '%time_zone%';
+------------------+------------+
| Variable_name    | Value      |
+------------------+------------+
| system_time_zone | UTC        |
| time_zone        | Asia/Tokyo |
+------------------+------------+
2 rows in set (0.02 sec)

-- UTCではなく日本時間が返ってくる
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2022-07-12 09:27:57 |
+---------------------+
1 row in set (0.02 sec)

mysql>

Tips

パラメータグループを適用した後にタイムゾーンを変更すると再起動が不要

こちらのAWS公式ブログでは、パラメータグループを作成して、タイムゾーンを変更した後にDBクラスタに適用して再起動しています。

が本記事のようにパラメータグループをDBクラスタへ適用した後に、タイムゾーンを変更すると再起動が不要になります(二度手間ですが、AWS公式ブログのやり方でも、DBクラスタへ適用した後に一旦タイムゾーン別なものに変更して、再度希望するタイムゾーンへ変更をすれば再起動なしで変更はできます。)

日本語訳のせいか少しわかりづらいですがこちらのドキュメント

新しい DB パラメータグループを DB インスタンスに関連付ける場合、変更された静的パラメータと動的パラメータは再起動後にのみ適用されます。ただし、新しく関連付けられた DB パラメータグループの動的パラメータを変更すると、これらの変更は再起動せずに直ちに適用されます。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html

の記述どおりの挙動となっています。再起動が許されない場面では本記事の流れでやってみてください。

今回は以上です〜ノシ

参考

(´・ω・`)ゞアリガトゴザイマス.。.・゚

Amazon Aurora DB クラスターのタイムゾーンを変更するにはどうすればよいですか?
Amazon RDS パラメータグループを使用する
Amazon Aurora の設定変更で注意が必要なものをまとめてみた
Auroraのパラメータグループの優先順位について実験してみた