Installing PGAA on WarehousePG#

前提条件#

PGAAをインストールする前に、次のことを確認します。

  • x86_64 RHEL 8またはRHEL 9で実行されているWarehousePG 7.4以降のクラスター。

  • コーディネーターホストで構成されたEDBリポジトリへのアクセス。

  • すべてのホストでsudo特権を持つgpadmin ユーザー。

特に記載のない限り、すべての手順はgpadmin ユーザーとして実行する必要があります。

パッケージのダウンロードとインストール#

  1. コーディネーターでEDBサブスクリプション資格情報を設定します。

export EDB_SUBSCRIPTION_TOKEN=<your-token>
export EDB_SUBSCRIPTION_PLAN=analytics
curl -1sSLf "https://downloads.enterprisedb.com/$EDB_SUBSCRIPTION_TOKEN/$EDB_SUBSCRIPTION_PLAN/setup.rpm.sh" | sudo -E bash
sudo dnf download edb-whpg7-pgaa

edb-whpg7-pgfs は、edb-whpg7-pgaa の宣言された依存関係であり、自動的にダウンロードされます。

  1. コーディネーターで、WHPGクラスター内のすべてのホストをリストするファイルall_hosts を作成します。例

cdw
sdw1
sdw2
  1. すべてのホストにパッケージを転送してインストールします。

gpssh -f all_hosts -e "scp gpadmin@$(hostname):~/edb-whpg7-pgaa *.rpm /tmp/ && sudo dnf install -y /tmp/edb-whpg7-pgaa* .rpm"
  1. パッケージがすべてのホストにインストールされていることを確認します。

gpssh -f all_hosts -e rpm -q edb-whpg7-pgaa edb-whpg7-pgfs

拡張機能の有効化#

WarehousePGインストールでは、Seafowlは、拡張機能自分自身によって制御されるバックグラウンドワーカーとしてではなく、systemdサービスとして管理されます。 RPMは、systemdユニットファイルを自動的にインストールします。

  1. コーディネーターで、コンマ区切りを使用して共有ライブラリのリストにPGAAおよびPGFSを追加し、クラスターを再起動します。

gpconfig -c shared_preload_libraries -v <other_libraries>,pgaa,pgfs
gpstop -ra
  1. コーディネーターとすべてのセグメントホストを含むすべてのホストでSeafowlサービスを有効にして開始します。

gpssh -f all_hosts -e sudo systemctl enable seafowl && sudo systemctl start seafowl
!!!注 systemdが利用できない環境Dockerなどにインストールする場合、スーパーバイザプロセスやエントリーポイントスクリプトなどの他の手段を介してSeafowlワーカーをデーモン化する必要があります。重要な制約は、ホストごとに1つのSeafowlワーカーのみを実行する必要があることです。同じホストで複数のワーカーを実行しているか、いずれかの実行にまったく失敗すると、問題が発生します。 .. ::

!!!注 Seafowlは、デフォルトでポート9090でPrometheusメトリックエンドポイントを公開します。 Prometheusが既に同じホストで実行され、ポート9090にバインドされている場合、Seafowlは起動に失敗します。競合を解決するには、影響を受けるホストで`/etc/edb/pgaa/seafowl.toml` の`port` の値を編集し、Seafowlサービスをリスタートします。 .. :: 1.コーディネーターに接続し、PGAAを使用する各データベースに拡張機能を作成します。

CREATE EXTENSION IF NOT EXISTS pgaa CASCADE;

CASCADE を使用すると、Postgresファイルシステム PGFS などの必要な依存関係が自動的にインストールされます。

インストールの検証#

  1. \dx メタコマンドまたはversionファンクションを呼び出して、拡張機能がアクティブであることを確認します。

SELECT pgaa.pgaa_version();
  1. Seafowlサービスがすべてのホストで実行されていることを確認します。

gpssh -f all_hosts -e sudo systemctl status seafowl --no-pager

サービスの状態とログの確認#

Seafowlは、systemdを介して構造化JSONログを書き込みます。

  • 単一ホストでステータスと最近のログ出力を確認するには

sudo systemctl status seafowl
  • ライブログをストリーミングするには

sudo journalctl -u seafowl -f
  • すべてのホストのログを一度に確認するには

gpssh -f all_hosts -e sudo journalctl -u seafowl --no-pager -n 50

WarehousePGコーディネーターとセグメントログについては、 Viewing the database server log files を参照してください。