Skip to content

Aurora(PostgreSQL) 13→16 Blue/Green アップグレード

Aurora PostgreSQL を Blue/Green Deployment で 13系 → 16系 にメジャーアップグレードするための運用一式です。

このディレクトリの構成

db-upgrade/aurora-pg16/
├── README.md                      # 本書(索引・進捗)
├── procedure-clone-rehearsal.md   # 共通手順:staging を Clone で素振りするリハーサル版
├── procedure-staging-direct.md    # 共通手順:staging 実DB 直接適用(Clone なし・本番前ドレスリハ)
├── procedure-production.md        # 共通手順:本番実クラスタ向け本番実施版
├── procedure-clone-inplace-timing.md  # 非BG:本番clone で in-place upgrade 所要時間を無停止計測(#15755/#15837)
└── services/                      # サービス固有パラメータ&実施記録
    ├── _template.md               # 新規サービス追加用テンプレート(コピー元)
    ├── eligibility-verification.md
    └── online-karte-service.md    # 外部CDC(GCP Datastream)連携あり=§5 に固有対応

手順は 3 段階:① Clone 素振り(壊しても無影響)→ ② staging 実DB 直接(実アプリ込みドレスリハ)→ ③ 本番。② と ③ は DB レベルの手順が同一で、procedure-staging-direct.md は ③ を参照し staging 固有差分のみを記載する(drift 防止)。

設計方針:共通手順とサービス固有情報を分離する

  • 手順(how)は procedure-*.md に1本だけ置く。全サービスで共通のため、改善・注意点の追記はここに集約する(コピーを増やさない=drift させない)。
  • サービス固有の値(クラスタ名・インスタンス構成・使用拡張・target version・確認テーブル名・メンテ枠日時・実施結果)は services/<service>.md に置く。手順本体は procedure へリンク参照する。
  • procedure-*.md 中のコマンドは eligibility-verificationワークド例として記載している。別サービスで実施する場合は該当する services/<service>.md の値に読み替える。

手順書(共通)

手順書用途
Cloneリハーサル版本番実施前に、破棄可能な Clone で DB 側手順(CPG 付け替え・logical replication・Blue/Green 作成・Switchover・拡張更新)を素振りする
staging 実DB 直接適用版staging の実クラスタ本体を Clone せず直接アップグレード。本番と同一手順を「実DB・実アプリ接続」で通すドレスリハーサル(瞬断・Switchover・アプリ再接続を実機体験)。DB 手順は本番版を参照し staging 固有差分のみ記載
本番実施版実トラフィックのある本番クラスタを対象に、メンテ枠・周知・監視・アプリ再接続・Terraform 整合まで含めて通しで実施する
in-place 所要時間 計測版(非BG)⚠️BG ではない。論理レプリケーションを避ける代替方式(案C:fast clone + in-place upgrade)の採否判断のため、本番 clone で pg_upgrade 所要時間(≒書き込み停止時間)を無停止で計測する。手法選定 mental-online-karte #15755 / 実施 #15837

サービス別の進捗

サービスパラメータ表リハーサル本番手順書本番実施
eligibility-verificationeligibility-verification.md✅ 実施済(staging / 2026-06)✅ 作成済⏳ 未実施
online-karte-service ⚠️CDConline-karte-service.md✅ Clone 実施(2026-06 / #13732)⏳ 作成中⏳ 未実施

上記以外の対象サービス(Aurora PostgreSQL 13系で稼働中のサービス)も同じ共通手順で実施できる。追加する場合は services/_template.md をコピーして services/<service>.md を作成し、本表に行を追加すること。対象 DB の棚卸し・方針は mental-online-karte #13044 を参照。

進め方(標準フロー)

  1. 対象サービスの services/<service>.md を作成(_template.md から)し、パラメータ(プロファイル・クラスタ名・インスタンス構成・拡張・target version 等)を埋める。
  2. プレフライト確認を対象サービスで実施する。
  3. staging で Cloneリハーサル版 を実施し、services/<service>.md に結果・所要時間・気付きを記録。
  4. (任意・推奨)staging で staging 実DB 直接適用版 を実施し、本番と同一手順を実DB・実アプリ接続でドレスリハーサル。結果を services/<service>.md に記録。
  5. 本番実施版 に沿って production を実施。メンテ枠日時・スナップショット名・結果を services/<service>.md と関連 Issue に記録。