はじめに
RDSの設定変更で予期しないダウンタイムを防ぐためには、事前に再起動の有無を確認することが重要です。
CloudFormationでRDSを更新する際の再起動の有無については、以下の2つの観点で確認する必要があります:
- RDSインスタンスの設定変更で再起動が発生するか?
- パラメータグループの設定変更で再起動が発生するか?
本記事では、それぞれの確認方法について詳しく解説します。
RDSインスタンスの設定変更で再起動が発生するか?
CloudFormationで管理している場合、「AWS::RDS::DBInstance」ドキュメントの各プロパティに記載された「Update requires」の値で事前に判断できます。
確認方法
各プロパティのドキュメントに記載されている「Update requires」の値を確認します。
- No interruption: 中断なしでリソースを更新(再起動なし)
- Some interruption: 一部中断を伴う更新(場合により短時間の中断・再起動)
- Replacement: リソースの再作成(長時間のダウンタイム・データ損失リスク)
⚠️ 重要: Replacement
の場合、DBインスタンスが完全に再作成されるため、事前にスナップショットを取得しないとデータが失われます。
具体例
# AllocatedStorage プロパティの場合
# Update requires: No interruption → 再起動なし
AllocatedStorage: 100
# DBInstanceClass プロパティの場合
# Update requires: Some interruption → 短時間の中断・再起動あり
DBInstanceClass: db.t3.medium
# DBSubnetGroupName プロパティの場合
# Update requires: Replacement → リソース再作成
DBSubnetGroupName: my-new-subnet-group
パラメータグループの設定変更で再起動が発生するか?
パラメータグループの設定変更時に再起動が発生するかどうかは、対象パラメータが動的パラメータか静的パラメータかによって決まります。
パラメータの種類
- 動的パラメータ: 変更後に再起動不要で設定が反映される
- 静的パラメータ: 変更後にDBインスタンスの再起動が必要
確認方法
パラメータの種類は以下の方法で確認できます。
1. RDSコンソールでの確認
マネジメントコンソールの「パラメータグループ」画面で、各パラメータの「タイプの適用」列を確認します。
2. AWS CLIでの確認
aws rds describe-db-parameters --db-parameter-group-name <パラメータグループ名>
出力結果の ApplyType
フィールドで確認できます。
{
"ParameterName": "max_connections",
"ApplyType": "static", // 静的 = 再起動必要
...
}
3. 公式ドキュメントでの確認
各データベースエンジンのパラメータ一覧ドキュメント
CloudFormationでの注意点
CloudFormationでパラメータグループを更新する場合、「AWS::RDS::DBParameterGroup」の Parameters
プロパティ自体は Update requires: No interruption
となっています。
ただし、これはCloudFormation側の動作を示すもので、実際のRDSインスタンスの再起動有無とは異なります。 CloudFormationのドキュメントでは個別パラメータが動的か静的かは確認できないため、前述の確認方法(CLI、公式ドキュメント、コンソール)で事前に調べる必要があります。
例:
# パラメータグループの更新
Type: AWS::RDS::DBParameterGroup
Properties:
Parameters:
# このパラメータが動的か静的かは
# CloudFormationドキュメントでは判断できない
"log_min_duration_statement": "1000"
"shared_buffers": "256MB"
重要: CloudFormationを使用する場合でも、パラメータの動的/静的については別途確認が必要です。
まとめ
CloudFormationでRDSの設定変更を行う前は、必ず以下を確認しましょう:
- RDSインスタンス設定: 各プロパティの「Update requires」値で事前確認
- パラメータグループ変更: パラメータが動的(Dynamic)か静的(Static)かを事前確認
- 事前検証: 可能な限りテスト環境でスタック更新を試行し、影響を記録
これらを確認することで、事前に再起動やダウンタイムの発生を予測でき、本番環境での予期しない障害を防ぐことができます。