Rails アプリは、各テナントのスキーマを作成する Apartment gem を使用してクライアント データをサイロ化します。Heroku で Postgres 9.4 を使用しています。
約 600 のテナントに到達するまで、すべてが正常に機能していましたが、突然自動 pg バックアップが機能しなくなりました。Heroku サポートから、スキーマの数 (約 30,000) を考慮したテーブルの総数によって pg_dump で OOM エラーが発生したため、バックアップを実行できないことが通知されました。(ローカル マシンに直接 pg_dump を実行しようとしても失敗します。)
Heroku は、たとえば、すべてのスキーマ名をループする bash スクリプトで、スキーマごとにデータをバックアップできることを提案しました。
pg_dump -Fc "<db_credentials>" -n $schema >"$schema.dump"
これは機能しますが、私たちの計算によると、すべてのデータをダウンロードするだけで 40 時間以上かかります (すべてがうまくいったと仮定します)。実際のデータ量はピーナッツ (非圧縮で約 4GB) であるため、これは少しイライラします。
データベースを Amazon RDS にエクスポートすることを検討したいと考えていますが、当社は、顧客がアプリが 2 日間ダウンすることを許容するとは考えていません (すべてがうまくいくと仮定しています)。私たちは成長しており、潜在的な移行のダウンタイムは悪化する一方であり、実質的に Heroku に閉じ込められます。
質問:
このプロセスをスピードアップする方法はありますか? (FWIW、圧縮されていない pg_dump を実行しても、パフォーマンスは向上しないようです。)
これは単なる標準的なデータベース移行のダウンタイムであり、開発者はダウンタイムに対処する必要があることを会社に伝える必要があるだけですか?