レプリカまたはスナップショットから読み(決してプライマリからではなく)、OFFSET ではなくキーセットページネーションでページングし、読み取りレートをスロットリングし、結果をオブジェクトストレージへ直接ストリームします。 目標は、長いロックを保持せず、プライマリのCPUをスパイクさせず、メモリを爆発させずに5億行をエクスポートすることです。
エクスポートパイプライン
text
Primary DB ──async replication──▶ Read replica / snapshot
│ (isolated from live traffic)
▼
Export worker
keyset page: WHERE id > :last
│ throttle (sleep / rate limit)
▼
Stream (batches)
│
▼
S3 / GCS (NDJSON / Parquet)
