C2(migrate-immich-to-ringtail): close immich-pg-data-migration
Migration via CNPG pg_basebackup (Option A) completed cleanly.
Sequence:
1. Stopped immich-server + immich-machine-learning on minikube
(scaled to 0). valkey + source pg kept running.
2. Copied minikube's immich-pg-ca + immich-pg-replication secrets
to ringtail as source-immich-pg-{ca,replication}.
3. Recreated the ringtail immich-pg Cluster with
bootstrap.pg_basebackup, replica.enabled=true, externalClusters
pointing at immich-pg.tail8d86e.ts.net via the streaming_replica
TLS cert.
4. Basebackup completed in ~50s. Replica caught up streaming.
5. Verified row counts identical between source and replica:
asset=12681, user=1, album=28, smart_search=9624,
activity=0, asset_face=3917.
6. Promoted via replica.enabled=false. pg_is_in_recovery → false.
Write test passed. All 7 expected extensions present in immich
db (vector, vchord, cube, earthdistance, pg_trgm, unaccent,
uuid-ossp).
7. Pruned bootstrap + externalClusters blocks; deleted out-of-band
replication secrets.
Source minikube immich-pg is intact and untouched — recovery path
remains available until immich-cutover-and-decommission completes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>