2016-09-06 5 views
1

時々再インポートが必要なエントリがかなりあるテーブルがいくつかあります。唯一のいくつかのテーブルは懸念しているので、我々はrestoreを使用していないが、このようなコマンド:Heroku Postgresで新しいテーブルをインポート中にダウンタイムを制限する

heroku pg:psql --app ourapp HEROKU_POSTGRESQL_WHITE < data.sql

これは主に、(約1GB)データのアップロードに、およそ30分かかります。

これまでは、新しいデータをインポートするためにアプリをメンテナンスモードにしましたが、今後は長いダウンタイムを避けたいと考えています。

ヘロクでこれを達成するにはどうすればよいでしょうか?

ダウンタイムを短縮するための最初の考えは、アップロード速度がはるかに向上するサーバーからコマンドを実行する方法を見つけることでしたが、まだ完全ではありません。

私たちはフォロワーを使用すると考えていましたが、ユーザーがアプリケーションとやりとりしているときに書かれている必要があるテーブルがあります。マスターの場合でもフォロワーにフォールバックするように指示できるかどうかはわかりません問題はありません。

新しいデータをアップロードしてからそのキャッシュをクリアしている間に、関連するすべてのテーブルを完全にキャッシュすることも考えましたが、Herokuはそれを達成するためにキャッシュを十分に制御していないようです。

答えて

1

一時的な第二のテーブルにインポートし、その後は最初のテーブルをドロップし、トランザクションに2番目の名前を変更します。

+0

このソリューションを選択すると、テーブルに適用する必要がある新しいデータ(メンテナンス期間中に追加された)を意味する「差分」問題があることに気づくでしょう。 –

+0

なぜか分かりません我々はこれを考えなかった、それはおそらく、それを行うための最も簡単な方法です、ありがとう。 @GuyDubrovski私たちの場合再インポートされるテーブルは静的であるため、diffの問題はありません – Jukurrpa

関連する問題