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のパラメータグループの優先順位について実験してみた