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・Writerdr-work-record-1+Readerdr-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)が無変更で健在