データベース取り込みとレプリケーション > データベース取り込みとレプリケーションソース - 準備と使用方法 > PostgreSQLソース
  

PostgreSQLソース

データベース取り込みとレプリケーションタスクでPostgreSQLソースを使用するには、最初にソースデータベースを準備し、使用に関する考慮事項を確認してください。

ソースの準備:

データベース取り込みとレプリケーションタスクでPostgreSQLソースを使用するには、次のソース準備タスクを実行します。
Secure Agent システム上で、オペレーティングシステムに適したODBCドライバをインストールします。
注:
PostgreSQL ODBCドライバを使用する場合は、psqlODBCドライババージョン13.x以前を使用します。psqlODBC 15.xから、PostgreSQL ODBCドライバはOpenSSL 3.0.xを使用するように移行しましたが、これはデータ取り込みおよびレプリケーションが使用しているOpenSSL 1.1.xバージョンと互換性がありません。
PostgreSQLデータベースシステムで、次の設定手順を実行します。
  1. 1増分ロードジョブ、初期および増分ロードジョブの場合、PostgreSQL postgresql.conf構成ファイルでwal_level=logicalパラメータが指定されていることを確認します。
  2. このパラメータは、PostgreSQLがログ先行書き込み(WAL)に書き込む情報の量を決定します。論理の設定によって、論理デコードのサポートに必要な情報が追加されます。
    Amazon Aurora PostgreSQLまたはAmazon RDS for PostgreSQLソースでwal_levelをlogicalに設定するには、クラスタパラメータグループでrds.logical_replicationパラメータを1に設定します。Azure Database for PostgreSQL - フレキシブル サーバ-の場合、Azureポータルの[サーバーパラメータ]ページでwal_levelパラメータをlogicalに設定します。
    Cloud SQL for PostgreSQLソースの場合は、次のアクションを実行します。
    1. aパブリックIPを使用してデータベースに接続します。
    2. 注:
      Google Cloudコンソールの[承認済みネットワーク]に必要なIPを必ず追加してください。
    3. bCloud SQL for PostgreSQLデータベースインスタンスレプリカを作成します。
    4. cCloud Shellで、ローカル管理者ユーザーとして次のコマンドを実行します。
    5. alter database postgres set default_transaction_read_only = off;
      gcloud sql connect database_replica --user=postgres --quiet;
      ALTER USER postgres WITH REPLICATION;
      CREATE USER replication_user WITH REPLICATION IN ROLE cloudsqlsuperuser LOGIN PASSWORD 'password';
      ALTER USER postgres WITH REPLICATION;
    6. dGoogle Cloudコンソールで、次のデータベースフラグを追加します:
    7. eデータベースインスタンスを再起動します。
  3. 2PostgreSQL用DataDirect ODBCドライバを使用する場合は、データベースでSCRAM-SHA-256認証方法を使用していないことを確認してください。MD5などの別の認証方法を使用します。
  4. 注:
    PostgreSQL ODBCドライバは、SCRAM-SHA-256認証方法をサポートしています。PostgreSQL 13では、この認証方法がデフォルトの方法になりました。
  5. 3PostgreSQLソースを含むデータベース取り込みとレプリケーションタスクをデプロイして実行するには、ソース接続で、必要な特権を持つデータベースユーザーを指定する必要があります。次の方法でユーザーを作成し、そのユーザーに特権を付与します。
  6. 4増分ロードジョブ、または初期および増分ロードジョブの論理デコード出力にwal2jsonプラグインを使用する場合は、プラグインをインストールします。
  7. 5増分ロードジョブ、または初期および増分ロードジョブにpgoutputプラグインを使用する場合は、次のSQL文を使用して、データベース取り込みジョブのパブリケーションを作成します。
  8. CREATE PUBLICATION publication_name [FOR TABLE [ONLY] table_name [*] [,...] | FOR ALL TABLES ];
    ターゲットにレプリケートするすべてのテーブルがパブリケーションに含まれていることを確認してください。
  9. 6増分ロードジョブ、および初期ロードと増分ロードの組み合わせジョブの場合は、次の関数を使用してPostgreSQL論理レプリケーションスロットを作成します。
  10. SELECT pg_create_logical_replication_slot('slot_name', 'plugin_type');
    ここで、plugin_typeはpgoutputプラグインまたはwal2jsonプラグインのどちらかです。
    注:
    PostgreSQLレプリカデータベースから変更データをキャプチャする場合は、必ずレプリカにレプリケーションスロットを作成してください。
  11. 7増分ロードジョブ、初期および増分ロードジョブの場合、postgresql.conf構成ファイルのmax_replication_slotsパラメータの値が、使用する予定の同時データベース取り込みジョブの数以上であることを確認します。
  12. 重要:
    すべてのレプリケーションスロットは、すべての同時ジョブで一意である必要があります。
  13. 8増分ロードジョブ、初期および増分ロードジョブの場合、PostgreSQLソースがUTF-8エンコードを使用していることを確認します。
  14. 9PostgreSQLソースがUTF-8エンコーディングを使用していることを確認します。ソースデータベースに別のエンコードを使用すると、初期ロードジョブ、増分ロードジョブ、および初期ロードと増分ロードの組み合わせジョブが失敗する可能性があります。

使用に関する考慮事項: