Читайте с реплики или снапшота (никогда с primary), листайте через keyset-пагинацию вместо OFFSET, троттлите темп чтения и стримьте результаты прямо в объектное хранилище. Цель — экспортировать 500 млн строк без долгих блокировок, всплеска CPU на primary или взрыва памяти.
Пайплайн экспорта
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)
