メイン コンテンツをスキップする 補完的コンテンツへスキップ

フェールオーバーの設定

情報メモ
  • このトピックで説明する手順は、PostgreSQL DBA によって実行される必要があります。
  • Data Movement gateway 2024.11.14 以降が必要です

このトピックでは、フェールオーバー シナリオをサポートするために PostgreSQL と Data Movement gateway を設定する方法について説明します。実行すべき手順は、PostgreSQL フェールオーバーの設定に応じて異なります。

フェールオーバー後もプライマリ データベースとセカンダリ データベースのデータベース オブジェクト ID が同じである場合 (通常は同じ)、セカンダリ データベース サーバーの IP アドレスを使用して Data Movement gateway マシン上のホスト ファイルを更新するだけです。ただし、フェールオーバー後にセカンダリ データベースのデータベース オブジェクト ID がプライマリ データベースと同じでない場合は、追加の構成が必要になります。通常、オブジェクト ID が変更されるかどうかを事前に知ることはできませんが、わかっている場合は、以下で説明する「プライマリ データベースとセカンダリ データベースのオブジェクト ID が異なる場合のフェールオーバーの設定」手順を実行してください。オブジェクト ID が変更されるかどうかわからない場合は、通常オブジェクト ID はフェールオーバー後も同じままであるため、「プライマリ データベースとセカンダリ データベースのオブジェクト ID が同じ場合のフェールオーバーの設定」で説明されているより簡単な手順を実行することをお勧めします。

簡単なセットアップを実行し、フェールオーバー中に Data Movement gateway が回復に失敗した場合は、「プライマリ データベースとセカンダリ データベースのオブジェクト ID が異なる場合のフェイルオーバーの設定」手順を実行する必要があります。

情報メモプライマリ データベースとセカンダリ データベースのオブジェクト ID が同じ場合のフェールオーバーの設定」の手順は、データ パイプライン プロジェクトのレプリケーション プロジェクトとランディング タスクの両方でサポートされていますが、「プライマリ データベースとセカンダリ データベースのオブジェクト ID が異なる場合のフェールオーバーの設定」の手順は、レプリケーション プロジェクトでのみサポートされています。

プライマリ データベースとセカンダリ データベースのオブジェクト ID が同じ場合のフェールオーバーの設定

フェールオーバーが発生すると、データ タスクは回復可能なエラーに遭遇し、プライマリ データベース サーバーの IP アドレスに再接続しようとします。ただし、セカンダリ データベース サーバーの IP アドレスは異なることが多いため、通常は成功しません。

IP アドレスの切り替えが DNS フェールオーバー サービスによって処理されない場合は、Data Movement gateway マシンのホスト ファイルに新しい IP アドレスを指定する必要があります。ホスト ファイルへのパスは /etc/hosts です。ホスト ファイルが更新されると、データ タスクは自動的に再開されます。

プライマリ データベースとセカンダリ データベースのオブジェクト ID が異なる場合のフェールオーバーの設定

情報メモレプリケーション プロジェクトでのみサポートされます。

標準操作では、データ タスクは PostgreSQL ソースからデータを移動するときにスロットを自動的に作成します。スロット名には、データベースのオブジェクト ID が含まれます。まれに、プライマリ データベースとセカンダリ データベースのオブジェクト ID が異なる場合があります。このような場合、プライマリ データベース用に作成したスロットをセカンダリ データベース内で見つけることができないため、データ タスクはフェールオーバー中に失敗します。この場合、次のエラーが発生します。

[SOURCE_CAPTURE ]E: Can't resume task after replication slot was dropped. [1020101] (postgres_endpoint_capture.c:445)

このようなエラーが発生した場合は、次を実行してください。

  1. コネクタ設定の [内部プロパティ] セクションで、内部プロパティ slotName を追加し、スロット名の値を設定します。

    指定された slotName はプライマリ PostgreSQL サーバーにすでに存在している必要があります。新しいスロットを作成することも、既存のスロットを使用することもできます。

    新しいスロットを作成し、その LSN を取得するには、次のクエリを実行します。

    SELECT lsn FROM pg_create_logical_replication_slot ('user_provided_slot_name', 'test_decoding');

    使用可能なスロットとその LSN のリストを取得するには、次のクエリを実行します。

    SELECT slot_name, restart_lsn FROM pg_replication_slots WHERE slot_type = 'logical';

  2. [詳細な実行オプション] ダイアログの [ソース変更位置] 項目に指定した slotName の LSN を入力し、データ タスクを準備して開始します。

    フェールオーバーが発生した場合、セカンダリ サーバーは即座に引き継がれ、プライマリサーバーになります。フェールオーバーは、pg_failover_slots 拡張によって処理される必要があります。

  3. フェールオーバーが発生すると、データ タスクは回復可能なエラーに遭遇し、プライマリ データベース サーバーの IP アドレスに再接続しようとします。ただし、セカンダリ データベース サーバーの IP アドレスは異なることが多いため、通常は成功しません。IP アドレスの切り替えが DNS フェールオーバー サービスによって処理されない場合は、Data Movement gateway マシンのホスト ファイルに新しい IP アドレスを指定する必要があります。ホスト ファイルへのパスは /etc/hosts です。ホスト ファイルが更新されると、データ タスクは自動的に再開されます。

このページは役に立ちましたか?

このページまたはコンテンツに、タイポ、ステップの省略、技術的エラーなどの問題が見つかった場合は、お知らせください。改善に役立たせていただきます。