# 前提条件

データのランディングまたはレプリケートをする前に、次の前提条件を満たすようにします。

* Data Movement gateway サーバーに、必要な driver をインストールする

  情報メモ

  これは、Data Movement gateway を使用することを選択した場合のみ必要です。Data Movement gateway の利点と必要なタイミングについては、[Qlik データ ゲートウェイ - データ移動](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm) を参照してください。

  Data Movement gateway は Qlik Talend Cloud スターター サブスクリプションではご利用いただけません。

* データ ソースに必要な権限を付与する

* データ ソースのコネクタを構成する

## ドライバーのセットアップ

driver のインストールは、ドライバー インストール ユーティリティを使用する (推奨) か、手動で実行できます。手動インストールは、ドライバー インストール ユーティリティで問題が発生した場合にのみ実行するようにしてください。

### ドライバー インストール ユーティリティを使用したドライバーのインストール

このセクションでは、必要な driver のインストール方法を説明しました。このプロセスでは、必要な driver を自動的にダウンロード、インストール、設定するスクリプトを実行します。また、必要に応じて driver の更新やアンインストールを行うスクリプトを実行することもできます。

### インストールの準備

* データ移動 ゲートウェイ サーバーに Python 3.6.x 以降 がインストールされていることを確認します。

  Python は、ほとんどの Linux 配布に前もってインストールされています。お使いのシステムにインストールされている Python のバージョンは、次のコマンドを実行することで確認できます。

  python3 --version

### driver のインストール

driver をダウンロードしてインストールするには:

1. データ移動 ゲートウェイ マシンで、作業ディレクトリを次に変更します:

   opt/qlik/gateway/movement/drivers/bin

2. 次のコマンドを実行します:

   構文:

   ./install postgres

   アクセス制限または技術的な問題により driver をダウンロードできない場合は、driver をダウンロードする場所と データ移動 ゲートウェイ マシンのコピー先を指示するメッセージが表示されます。それが完了したら、install postgres コマンドを再度実行します。

   それ以外の場合は、driver の EULA が表示されます。

3. 次のいずれかを実行します。

   * 何度も [Enter] を押すと、EULA 全体をスクロールできます。
   * 何度もスペースバーを押すと、EULA 全体をスピーディにスクロールできます。
   * q を押すと、ライセンス テキストが終了し、EULA 受諾オプションが表示されます。

4. 次のいずれかを実行します。

   * 「y」を入力して [Enter] を押すと、EULA が受諾され、インストールが開始します。

   * 「n」を入力して [Enter] を押すと、EULA が拒否され、インストールが終了します。

   * 「v」を入力して [Enter] を押すと、EULA が再表示されます。

   driver がインストールされます。

### driver の更新

提供された driver をインストールする前に前のバージョンの driver をアンインストールしたい場合は、更新コマンドを実行します。

driver をダウンロードして更新するには:

1. データ移動 ゲートウェイ マシンで、作業ディレクトリを次に変更します:

   opt/qlik/gateway/movement/drivers/bin

2. 次のコマンドを実行します:

   構文:

   ./update postgres

   アクセス制限または技術的な問題により driver をダウンロードできない場合は、driver をダウンロードする場所と データ移動 ゲートウェイ マシンのコピー先を指示するメッセージが表示されます。それが完了したら、update postgres コマンドを再度実行します。

   それ以外の場合は、driver の EULA が表示されます。

3. 次のいずれかを実行します。

   * 何度も [Enter] を押すと、EULA 全体をスクロールできます。
   * 何度もスペースバーを押すと、EULA 全体をスピーディにスクロールできます。
   * q を押すと、ライセンス テキストが終了し、EULA 受諾オプションが表示されます。

4. 次のいずれかを実行します。

   * 「y」を入力して [Enter] を押すと、EULA が受諾され、インストールが開始します。
   * 「n」を入力して [Enter] を押すと、EULA が拒否され、インストールが終了します。
   * 「v」を入力して [Enter] を押すと、最初から EULA をレビューできます。

   古い driver がアンインストールされ、新しい driver がインストールされます。

### driver のアンインストール

driver をアンインストールする場合は、アンインストール コマンドを実行します。

driver をアンインストールするには:

1. このコネクタを使用するように構成されているすべてのタスクを停止します。

2. データ移動 ゲートウェイ マシンで、作業ディレクトリを次に変更します:

   opt/qlik/gateway/movement/drivers/bin

3. 次のコマンドを実行します:

   構文:

   ./uninstall postgres

   driver がアンインストールされます。

### ドライバーの手動インストール

自動ドライバーのインストールが正常に完了しなかった場合にのみ、driver を手動でインストールするようにしてください。

Data Movement gateway をインストールしたら、次の RPM ファイルをダウンロードします。ファイルへの直接ダウンロード リンクは、/opt/qlik/gateway/movement/drivers/manifests/postgres.yaml の binary-artifacts にあります。ダウンロードが完了したら、ファイルを Data Movement gateway マシンにコピーします。

Red Hat 9.x で Data Movement gateway がインストールされている場合、

* postgresql&lt;version&gt;-libs-&lt;version&gt;PGDG.rhel9.x86\_64.rpm
* postgresql&lt;version&gt;-&lt;version&gt;PGDG.rhel9.x86\_64.rpm
* postgresql&lt;version&gt;-odbc-&lt;version&gt;PGDG.rhel9.x86\_64。

Red Hat 8.x で Data Movement gateway がインストールされている場合、

* postgresql&lt;version&gt;-libs-&lt;version&gt;PGDG.rhel8.x86\_64.rpm
* postgresql&lt;version&gt;-&lt;version&gt;PGDG.rhel8.x86\_64.rpm
* postgresql&lt;version&gt;-odbc-&lt;version&gt;PGDG.rhel8.x86\_64.rpm

Data Movement gateway サーバーで、シェル プロンプトを開き、次の手順を実行します。

1. Data Movement gateway サービスを停止します。

   sudo systemctl stop repagent

2. オプションで、サービスが停止されたことを確認します。

   sudo systemctl status repagent

   ステータスは次のようになっているはずです。

   Active: inactive (dead) since &lt;timestamp&gt; ago

3. RPM ファイルをインストールします。

4. 作業ディレクトリを &lt;Data Movement gateway\_Install\_Dir&gt;/bin に変更します。

5. 次のように、ドライバーの場所を `site_arep_login.sh` ファイルにコピーします。

   `echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib:/usr/lib64:/usr/pgsql-<version>/lib" >> site_arep_login.sh`

   これにより、ドライバーが「LD\_LIBRARY\_PATH」に追加され、site\_arep\_login.sh ファイル内のドライバーの場所が更新されます。

6. 必要に応じて、ドライバーの場所がコピーされていることを確認します。

   ```
   cat site_arep_login.sh
                           
   ```

7. 次の例のように、`/etc/odbcinst.ini` ファイルに PostgreSQL のエントリが含まれていることを確認します。

   `[PostgreSQL]`

   `Description = PostgreSQL ODBC driver`

   `Driver = /usr/pgsql-13/lib/psqlodbc.so`

   `Setup = /usr/pgsql-13/lib/psqlodbcw.so`

   `UsageCount = 1`

8. Data Movement gateway サービスを起動します。

   sudo systemctl start repagent

9. 必要に応じて、サービスが開始されたことを確認します。

   sudo systemctl status repagent

   ステータスは次のようになっているはずです。

   Active: active (running) since &lt;timestamp&gt; ago

## ポート

既定では、Data Movement gatewayサーバーのアウトバウンド通信のために、ポート 5432 を開く必要があります。これは、コネクタ設定で変更できます。

## 顧客がインストールした PostgreSQL データベースからの変更のキャプチャ

* Data Movement gateway マシンの IP アドレスは、「replication」キーワードをデータベース項目に入れて、 pg\_hba.conf 構成ファイルに追加する必要があります。

  例:

  `host replication all 176.123.1.212/32 trust`

* test\_decoding 出力プラグイン (postgresql12-contrib パッケージ) がインストールされていることを確認します。

* データベースで「スロット」を作成できるようにするには、接続設定で指定されたユーザーに、ソース データベースへの読み取り/書き込み権限を付与する必要があります。変更を読み取るにはスロットが必要です。

* 次のパラメータと値を、`postgresql.conf` 構成ファイルで設定する必要があります。

  ```
  wal_level = logical
                          
  ```

  ```
  max_replication_slots = number of replication slots
                          
  ```

  `number of replication slots` は 1 より大きく、実行したいタスクの数に従って設定する必要があります。例えば、5 つのタスクを実行するには、`max_replication_slots = 5` を設定する必要があります。タスクが開始されるとすぐにスロットが自動的に開き、タスクが実行されなくなっても、そのままの状態が維持されます。開いたスロットは手動で削除する必要があります。

  `max_wal_senders = number of  concurrent tasks`

  `number of concurrent tasks` は 1 より大きく、同時に実行中のタスクの数に従って設定する必要があります。例えば、3 つのタスクを実行するには、`max_wal_senders = 3` を設定する必要があります。

* `wal_sender_timeout` パラメータは、指定されたミリ秒を超えて非アクティブな状態が続く接続を終了します。既定のタイムアウトは 60 秒です。タイムアウトの機構を無効にするには (オプション)、このパラメータをゼロに設定します。

  情報メモ

  既定では、`wal_sender_timeout` パラメータの値は、サーバーによりミリ秒として解釈されます。明示的に秒数を指定するには、次の例のように値に「s」を付けます:

  `wal_sender_timeout=60s`

構成パラメーターの詳細については、[PostgreSQL オンライン ヘルプ](https://www.postgresql.org/docs/)の「サーバー構成」の「レプリケーション」セクションを参照してください。

## Amazon RDS for PostgreSQL からの変更のキャプチャ

Amazon RDS for PostgreSQL ソース エンドポイント ユーザーとして、PostgreSQL データベース インスタンスの AWS マスター ユーザー アカウントを使用できます。マスター ユーザー アカウントには、変更データ キャプチャ (CDC) を設定するのに必要な役割があります。

マスター ユーザー アカウントを使用しない場合は、使用を希望するアカウントに rds\_superuser role and the rds\_replication 役割が必要です。rds\_replication role は、論理的スロットを管理し、論理的スロットを使ってデータをストリーミングする権限を付与します。

Amazon RDS PostgreSQL データベース インスタンスの論理的複製を有効化するには:

1. 次の構成で新しいパラメータ グループを作成します:

   1. データベース パラメータ グループの rds.logical\_replication パラメータを 1 に設定します。
   2. max\_wal\_senders – 平行に実行できるタスク数。
   3. max\_replication\_slots – 各接続 (タスク) が新しいスロットを作成します。このパラメータは、データベースに対して確立できる同時接続の量を構成します。

2. Amazon RDS インスタンスをパラメータ グループにリンクします。

## Microsoft Azure for PostgreSQL からの変更のキャプチャ

Microsoft Azure for PostgreSQL から変更をキャプチャするためには、下記のステップに従って「replication」プロパティを「logical」に設定する必要があります。

1. Azure CLI を開いて、次のコマンドを実行します:

   情報メモ

   CLI をダウンロードするか、または Azure ポータルで shell コマンドを使って接続できます。

   構文:

   az postgres server configuration set --resource-group resource-group --server-name server-name --name azure.replication\_support --value logical

   例:

   az postgres server configuration set --resource-group azuredb --server-name qlik-azure-pg --name azure.replication\_support --value logical

2. データベースを再起動します (コマンド ラインを使うか、またはポータル経由)。

## Google Cloud SQL for PostgreSQL からの変更のキャプチャ

情報メモこの機能には Data Movement gateway 2022.11.42 以降が必要です。

データベースから変更をキャプチャするには、論理的レプリケーションを設定する必要があります。

論理的レプリケーションを設定するには:

1. Google Cloud プラットフォームで、PostgreSQL 設定に次のフラグを設定します:

   * cloudsql.logical\_decoding=on
   * max\_replication\_slots: すべての接続 (タスク) は新しいスロットを作成します。このパラメータは、データベースに対して確立できる同時接続数を構成します。プラットフォームの問題が発生した場合、この値を増加させることで解決される可能性があります。
   * max\_wal\_senders: 平行に実行できるタスク数。プラットフォームの問題が発生した場合、この値を増加させることで解決される可能性があります。

   これらのパラメータの詳細については、https://www.postgresql.org/docs/current/runtime-config-replication.html を参照してください。

2. データベースで、connector 設定 (*username*) でユーザー指定をレプリケーションをサポートするよう変更します。

   ALTER USER username WITH REPLICATION;