Skip to content

dr-work-record PG16 Clone リハーサル手順書(Global 削除経路の素振り)

本番 dr-work-record(Aurora Global Database・単一リージョン)の PG16 化に先立ち、本番クラスタの Clone(copy-on-write) に対して「Global 化 → Global 削除 → 標準 Blue/Green」の本番と同じ経路を素振りするテスト手順。本体 dr-work-record は一切操作しない(Clone のみ)。

  • 本番手順書(正本): preflight.md(固有値・§6-A 本番順序・§6-D consumer・§6-E ゲート・§7 preflight)/汎用: procedure-clone-rehearsal.md
  • 役割分担: 本書=Global 削除経路の検証(staging は非-Global で素振り不可なため Clone で担保)。アプリ互換staging.md が担当。
  • 実施 issue: #16266 / 汎用 stub #12729

前提・対象

  • profile production-admin / region us-east-1 / acct 967691968827(本番と同一アカウント。Clone も本番アカウント内に作る)
  • source(無操作): cluster dr-work-record(Aurora PG 13.20・Global・Writer dr-work-record-1+Reader dr-work-record-0・db.r6g.large・約92MB)
  • Clone 名(CL): dr-work-record-bgtest-blue / 使い捨て Global: g-dr-work-record-bgtest / BG 名: dr-work-record-bgtest
  • 破壊的操作はすべて Clone(dr-work-record-bgtest-*)に対してのみ。本体 dr-work-record / dr-work-record-0/-1 には打たない(identifier を都度目視確認)。
  • 事前に §3 の parameter group(dr-work-record-pg13-bg / dr-work-record-pg16)が作成済みであること(preflight.md §3)。

手順(Clone で「Global 化 → 削除 → 標準 BG」)

bash
export AWS_PROFILE=production-admin ; R=us-east-1
CL=dr-work-record-bgtest-blue            # リハで操作する clone
GTEST=g-dr-work-record-bgtest            # 本番の Global 構成を再現する使い捨て global

# (1) Clone 作成(copy-on-write)+ Writer/Reader 作成(本体 dr-work-record は無操作)
#     ※ restore-...-to-point-in-time は --engine 不可(source から継承)。SG/subnet は source と同一。
aws rds restore-db-cluster-to-point-in-time --region $R \
  --source-db-cluster-identifier dr-work-record \
  --db-cluster-identifier $CL \
  --restore-type copy-on-write --use-latest-restorable-time \
  --db-subnet-group-name dr-work-record-subnet \
  --vpc-security-group-ids sg-074e71eb70c8bc948
aws rds wait db-cluster-available --region $R --db-cluster-identifier $CL
#     本番相当に Writer+Reader の2台(class は source と同じ db.r6g.large)
aws rds create-db-instance --region $R --db-instance-identifier ${CL}-1 \
  --db-cluster-identifier $CL --engine aurora-postgresql --db-instance-class db.r6g.large   # Writer
aws rds create-db-instance --region $R --db-instance-identifier ${CL}-0 \
  --db-cluster-identifier $CL --engine aurora-postgresql --db-instance-class db.r6g.large   # Reader
aws rds wait db-instance-available --region $R --db-instance-identifier ${CL}-1
aws rds wait db-instance-available --region $R --db-instance-identifier ${CL}-0
#     ※ 手順素振りだけなら db.t3.medium でも可(所要/性能を本番相当にするなら r6g.large 維持)

# (2) Clone を Global 化(本番の "Global メンバー" 状態を再現)
CL_ARN=$(aws rds describe-db-clusters --region $R --db-cluster-identifier $CL --query 'DBClusters[0].DBClusterArn' --output text)
aws rds create-global-cluster --region $R --global-cluster-identifier $GTEST --source-db-cluster-identifier "$CL_ARN"

# (3) ★Global 削除で standalone 化(本番と同じ)
aws rds remove-from-global-cluster --region $R --global-cluster-identifier $GTEST --db-cluster-identifier "$CL_ARN"
aws rds wait db-cluster-available --region $R --db-cluster-identifier $CL
aws rds delete-global-cluster --region $R --global-cluster-identifier $GTEST

# (4) source(PG13) custom Cluster PG(logical=1) を clone に付替 → Reader→Writer 再起動
aws rds modify-db-cluster --region $R --db-cluster-identifier $CL \
  --db-cluster-parameter-group-name dr-work-record-pg13-bg --apply-immediately
aws rds wait db-cluster-available --region $R --db-cluster-identifier $CL
#     logical_replication は static → 反映に再起動が必要。Reader→Writer の順で1台ずつ(AWS推奨・安全側)
aws rds reboot-db-instance --region $R --db-instance-identifier ${CL}-0   # Reader を先に
aws rds wait db-instance-available --region $R --db-instance-identifier ${CL}-0
aws rds reboot-db-instance --region $R --db-instance-identifier ${CL}-1   # Writer(瞬断)
aws rds wait db-instance-available --region $R --db-instance-identifier ${CL}-0
#     踏み台 psql で SHOW rds.logical_replication;=on / SHOW wal_sender_timeout;=0 を確認

# (5) 標準 BG 作成(非-Global・standalone クラスタに対して・target PG16 は cluster/instance 両方指定)
aws rds create-blue-green-deployment --region $R \
  --blue-green-deployment-name dr-work-record-bgtest \
  --source "$CL_ARN" \
  --target-engine-version 16.13 \
  --target-db-cluster-parameter-group-name dr-work-record-pg16 \
  --target-db-parameter-group-name dr-work-record-pg16

# (6) Green 検証(generic 手順 6)→ Switchover(手順 7)→ 事後(手順 8: ALTER EXTENSION UPDATE)
# (7) 後始末(全削除・課金停止): BG レコード削除 → instance → cluster 削除(global は (3) で削除済)
  • [ ] remove-from-global-cluster無停止(クラスタ稼働継続)で通るか
  • [ ] delete-global-cluster 後、standalone として BG 作成できるか
  • [ ] Green が PG16・論理レプリ同期しているか(generic 手順 6)
  • [ ] Switchover 書込断の実測(数秒想定・シーケンス2)/rename・endpoint 据え置き・アプリ再接続
  • [ ] 所要時間(clone 作成 / BG AVAILABLE / switchover 書込断)を計測し #16266 に記録

⚠️ 本番転用: リハの (2) は不要(本番は既に Global)。本番は ① global 削除 → ② CPG → ③ 標準 BG → ④ Switchover → 事後 の順(preflight.md §6-A)。global 復元は方針上は任意(単一リージョンなら通常不要)。

後始末(全削除・課金停止)

bash
# BG レコード削除 → clone の instance/cluster を全削除(--skip-final-snapshot)。global は (3) で削除済
aws rds delete-blue-green-deployment --region $R --blue-green-deployment-identifier <bgd-xxxx>
for id in ${CL}-1 ${CL}-0 ${CL}-1-old1 ${CL}-0-old1; do
  aws rds delete-db-instance --region $R --db-instance-identifier $id --skip-final-snapshot 2>/dev/null || true
done
# cluster 削除(green/old も)→ describe で dr-work-record-bgtest-* が 0 になるまで確認
  • [ ] dr-work-record-bgtest-* のインスタンス/クラスタ/BG が全て 0
  • [ ] 本体 dr-work-record(Global・Writer/Reader)が無変更で健在