この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2025年06月20日(金)
この記事では、Heroku Connect のメンテナンスについて説明します。Heroku Postgres のプランを変更する方法や、そのバージョンをアップグレードする方法についても説明します。
Heroku Connect のメンテナンス
メンテナンスタスクを実行するために、Heroku で Heroku Connect をオフラインにする場合があります。一般的なタスクには、基礎となるインフラストラクチャの更新があります。このメンテナンスは Heroku によって自動的に処理されます。Heroku Postgres とは異なり、Heroku Connect のメンテナンスウィンドウのスケジュールまたは再スケジュールはできません。
通常、メンテナンスには最長で 45 分かかります。メンテナンスの間、Heroku Connect のすべてのデータ同期は使用できません。Heroku Connect の設定も実行できません。Heroku Postgres データベースの既存のデータには引き続きアクセスできます。変更は Connect によって保持され、同期はメンテナンス後に再開します。
Heroku Connect のメンテナンスの準備
メンテナンスウィンドウは、実施の約 2 週間前に status.heroku.com で告知されます。このページで Subscribe (購読) をクリックすると通知を受け取ることができます。
メンテナンスウィンドウの間はデータの同期が遅れることを認識し、それに備える必要がありますが、それ以外に必要な準備はありません。メンテナンス操作後、Connect では通常の同期が再開します。
Heroku Postgres データベースのプランの変更
Heroku Postgres データベースのプランは、heroku addons:upgrade コマンドを使用して変更できます。HA フェイルオーバーと同じ動作であるため、Heroku Connect ではこの操作を透過的に処理できます。
お勧めはしませんが、フォロワーの切り替えの方法を代わりに使用できます。その場合は、次のセクションで説明されている追加の手順 (4 番を除く) を実行する必要があります。
Essential 層のデータベースから別の層のプランにアップグレードする場合、フォロワーは作成できません。代わりに、pg:copy プロセスを使用して新しいデータベースにデータをコピーします。アプリケーションをメンテナンスモードにすると同時に Heroku Connect を一時停止し、アプリケーションをアクティブに戻すときに Heroku Connect を再開します。
Heroku Postgres データベースのバージョンのアップグレード
pg:upgrade* でのアップグレード
Heroku Connect 使用して Heroku Postgres データベースのバージョンをアップグレードするには、version upgrade コマンドを使用し、「pg:upgrade:* コマンドでのアップグレード」セクションの手順に従うことをお勧めします。このアップグレードプロセスには次の内容が含まれます。
heroku pg:upgrade:prepare を実行して、アップグレードの準備をします。- アップグレードを開始する前に、Heroku Connect 接続を一時停止します。
- 準備ができたら、
heroku pg:upgrade:run を実行してアップグレードを開始するか、スケジュール済みのメンテナンスウィンドウまで待ちます。 - アップグレードが完了したら、Heroku Connect の接続を再開します。
フォロワーデータベースでのアップグレード
あるいは、フォロワーデータベースを使用してバージョンをアップグレードする場合は、データベースの同期操作が期待どおりに続行されるようにするため、追加の手順が必要になります。フォロワーデータベースを使用してデータベースバージョンをアップグレードするには、次の手順に従って Heroku Connect をそのプロセスに組み込みます。
以下の手順により、新しいデータベースが現在のデータベースの正確なコピーであることが保証されます。Heroku Connect によってテーブルが作成されたり、空のデータベースにデータが転送されたりすることはないため、必ず、正しいアップグレードプロセスに従ってください。
Essential 層のデータベースでバージョンをアップグレードしている場合は、代わりにバージョンアップグレードのコマンドまたはpg:copyのプロセスを使用して新しいデータベースにデータをコピーします。pg:copy メソッドを使用する場合は、アプリケーションをメンテナンスモードにすると同時に Heroku Connect を一時停止し、アプリケーションをアクティブに戻すときに Heroku Connect を再開します。
フォロワーデータベースを作成し、リードデータベースにほぼ追いつけるようにします。これにより、アップグレードに必要なダウンタイムが最小化されます。
アプリケーションをメンテナンスモードにするのと同じ理由で接続を一時停止して、アップグレード中に Heroku Connect がデータベースに書き込まないようにします。
フォロワーが追いつくまで待ちます。この時点で、Heroku Connect とアプリケーションの両方がデータベースへの書き込みを停止しているため、フォロワーは完全に追いつくことができます。データベースのステータスは
heroku pg:info を使用して確認できます。pg:upgrade:run を使用してフォロワーデータベースをアップグレードします。このコマンドによってフォロワーでリーダーのフォローが解除され、Postgres バージョンのアップグレードが実行されます。ここで、フォロワーデータベースをプロモートして新しいリードデータベースにする必要があります。実行する手順は、Heroku Connect で標準データベース URL (
DATABASE_URL) とカスタムデータベース URL (例: HEROKU_POSTGRESQL_ROSE_URL) のどちらを使用しているかによって異なります。- 標準データベース URL を使用している場合、フォロワーをプロモートして新しいリードデータベースにします。これによって、
DATABASE_URL でアクセスできるようになります。 - カスタムデータベース URL を使用している場合、プロモートされたフォロワーの新しいカスタムデータベース URL で Heroku Connect データベース設定を更新するか、heroku addons:attach を使用して、選択した名前にデータベースをアタッチする必要があります。
- 標準データベース URL を使用している場合、フォロワーをプロモートして新しいリードデータベースにします。これによって、
手順 2 で一時停止したときと同じプロセスを使用して Heroku Connect を再開し、アプリケーションのメンテナンスモードを終了します。Heroku Connect は、アプリケーションの新しい
DATABASE_URL (または、カスタムデータベース URL を設定している場合はその URL) を自動的に取得し、新しいデータベースを使用して同期を再開します。
データベースロールバック後の同期の回復
Heroku Connect では、ハイウォーターマークの手法を使用します。同期されたデータベースをロールバックすると、データの不整合が発生します。データの整合性を回復するには、データベースのロールバック後にマッピングをリロードします。
同期の一時停止
データベースのアップグレードのような特定のタスクを実行するときに、Heroku Connect での同期アクティビティを一時停止することが必要になります。これを行うには、Settings (設定) タブ、Manage Connection (接続の管理) の順に移動し、Pause (一時停止) ボタンをクリックします。
Heroku Connect は、保留中の操作があればすべて完了してから一時停止状態に移行します。接続を一時停止すると、データベースでのデータの変更はトリガーログに追加され続け、Salesforce で行われた変更はポーリングされなくなります。ストリーミングモードを使用した、マッピングに関する Salesforce からの PushTopic 通知も無視されます。
接続は IDLE 状態のときに限り一時停止できます。接続が長期間 POLLING_DB_CHANGES ステータスのままである場合は、ログを確認してデバッグしてください。
同期を再開するには、Settings (設定) タブ、Manage Connection (接続の管理) に戻り、Resume (再開) をクリックします。Heroku Connect は引き続き、中断した場所にとどまります。トリガーログのエントリが処理されて Salesforce にプッシュされ、Salesforce で行われた変更は (通常は Streaming API を使用するマッピングも含めて) ポーリングを使用して取得されます。
接続の一時停止中にデータベースまたは Salesforce のデータに行われた変更は、接続が再開すると自動的に同期されます。
接続の再作成
サンドボックス組織をリロード済みの場合や、Essential 層のデータベースから別の層のプランにアップグレードする必要がある場合、既存の接続を削除して新しい接続を作成する必要があります。
以下の設定は手動で設定します。
- 共同作業者とその通知設定
- ベータ機能
- 書き込みアルゴリズム
- Salesforce API のバージョン
残りの再作成を自動化するには、Heroku CLI または Heroku Connect ダッシュボードの以下の手順に従ってください。
CLI
Heroku CLI での操作:
次のコマンドを使用して、Heroku Connect の設定をエクスポートします。
$ heroku connect:export -a appname herokuconnect-resource-name読み取り/書き込みマッピングが 1 つでも設定されているテーブルには、新規データの書き込みを一切行わないでください。また、すべてのデータが Salesforce に存在することを保証するために、すべてのマッピングが
DATA_SYNCED 状態であることを確認してください。接続のアクティビティを停止するには、以下を実行します。$ heroku connect:pause -a appname herokuconnect-resource-name以下のコマンドを使用して、Heroku Connect アドオンを破棄します。
$ heroku addons:destroy -a appname herokuconnect-resource-name以下のコマンドを使用して、新しい Heroku Connect アドオンを作成します。
$ heroku addons:create herokuconnect以下のコマンドを使用してアドオンを認証し、Salesforce ログイン情報でログインします。
$ heroku connect:sf:auth -a appname herokuconnect-resource-name以下のコマンドを使用して、手順 1 でエクスポートしたマッピング設定をインポートします。
$ heroku connect:export mapping_file.json -a appname herokuconnect-resource-name
ダッシュボード
Heroku Connect ダッシュボードでの操作:
Settings(設定) タブからHeroku Connect の設定をエクスポートします。a.
Import/Export Configuration(設定をインポート/エクスポート)、Export(エクスポート) の順に選択し、確認ウィンドウで再度Export(エクスポート) を選択して、JSON ファイルをダウンロードします。読み取り/書き込みマッピングが 1 つでも設定されているテーブルには、新規データの書き込みを一切行わないでください。また、すべてのデータが Salesforce に存在することを保証するために、すべてのマッピングが
DATA_SYNCED 状態であることを確認してください。Settings(設定) タブから、Manage Connection(接続の管理)、Pause(一時停止) の順にクリックして、接続のアクティビティを停止します。Heroku Dashboard の
Resources(リソース) タブから Heroku Connect アドオンを破棄します。アドオンのアクションボタン (縦の 3 連ドット) を選択して、メニューを開きます。Delete Add-on(アドオンの削除) を選択します。Heroku Dashboard の
Resources(リソース) タブから新しい Heroku Connect アドオンを作成します。Heroku Connect アドオンを検索して追加します。Heroku Connect ダッシュボードを開いて
Setup Connection(接続の設定) を選択し、アドオンを認証します。a. アドオンに接続する Heroku Postgres データベースとスキーマを選択し、
Next(次へ) をクリックします。b. Select the Salesforce org type and API version for your connection and select
Authorizeto log in with your Salesforce credentials.Settings(設定) タブから、手順 1 でエクスポートしたマッピング設定をインポートします。a.
Import/Export Configuration(設定のインポート/エクスポート) を選択し、Importを選択します。b. Select
Choose Fileand select the file to upload, and then selectUpload.
Salesforce でのフィールド定義の変更
適切に調整されていない場合、フィールド定義の変更によって Heroku Connect との同期が遅れる可能性があります。
対応するフィールド定義を Salesforce で変更した後、PostgreSQL のテーブルスキーマが Heroku Connect によって自動的に変更されることはありません。これは、フィールドを変更しようとした結果、データが失われるか破損する可能性があるからです。
Salesforce でフィールドを変更した後、ユーザーが Heroku Connect でオブジェクトマッピングを編集して、Heroku Connect による PostgreSQL テーブルスキーマの更新をトリガーする必要があります。比較的単純なケースでは、ユーザーはマッピングの Edit (編集) をクリックしてから Save (保存) をクリックするだけで済みます。より複雑なケースでは、ユーザーはフィールドを選択解除し、マッピングを保存し、マッピングを再編集してから、フィールドを再び追加する必要があります。こうすると、Connect によって列が削除され、再度追加されて、列に再度データがロードされます。
単純なケースには、フィールドの長さの延長または短縮などがあります。複雑なケースには、フィールドのデータ型の変更などがあります。