Step 4 - Installing the PGD software#

PGDソフトウェアのインストール#

リポジトリが構成されたら、 Postgres Distributedソフトウェアをインストールできます。次の手順に進む前に、各ホストでこれらの手順を実行する必要があります。

  • パッケージをインストールします。 - PGDパッケージをインストールします。これには、サーバー固有のBDRパッケージ、汎用のPGDプロキシおよびCLIパッケージが含まれます。 edb-bdr5-<postgresversion> 、edb-pgd5-proxy 、およびedb-pgd5-cli

  • Postgresデータベースサーバーが初期化および起動していることを確認します。
  • systemctl status を使用して、サービスが実行されていることを確認します。

  • サービスが実行されていない場合は、データベースを初期化してサービスを開始します。

  • ** BDR拡張機能を構成します。** 1_blank_2_- postgresql.conf .`1_blank_2_-` の`shared_preload_libraries` 設定の先頭にBDR拡張機能 $libdir/bdr を追加します postgresql.conf .`1_blank_2_-` で wal_level GUC変数を`logical` に設定します 1_blank_2_- edb_12b_11に設定してコミットタイムスタンプ追跡をオンにしますin postgresql.conf .`1_blank_2_-` max_worker_processes を`'16'` に設定することにより、最大ワーカープロセスを16以上に増やします postgresql.conf .<br/><br/> .. Note The max_worker_processes value::

    max_worker_processes 値は、クラスターのトポロジ、ピアの数、データベースの数から導き出されます。 、およびその他の要因。必要な値を計算するには、 Postgres configuration/settings を参照してください。値16は、この例で展開されるクラスターのサイズとして計算されました。大規模なクラスターの場合、増加する必要があります。 !!!`1_blank_2_-` EnterprisedDB / Postgresユーザーにパスワードを設定します。1_blank_2_- ルールを`pg_hba.conf` に追加して、ノードが相互に接続できるようにします。1_blank_4_- pg_hba.conf にこれらの行が存在することを確認します。

edb_notranlate_0 - .pgpass ファイルを追加して、ノードが相互に認証できるようにします。 - 他のノードにログインするための十分な特権を持つユーザーを構成します。 - .pgpass ファイルの詳細については、Postgresドキュメントの The Password File を参照してください。

  • サーバーを再起動します。 - 再起動したサーバーが変更した設定で実行されており、 BDR拡張機能が利用できることを確認します。

  • レプリケートされたデータベースを作成します。

  • サーバーのデフォルトデータベースEDB Postgres Advanced Serverの場合はedb 、PGEおよびコミュニティPostgresの場合はpostgres にログインします。

  • CREATE DATABASE bdrdb を使用して、デフォルトのPGDレプリケートデータベースを作成します。

  • ログアウトして、bdrdb に再度ログインします。

  • CREATE EXTENSION bdr を使用して、 BDR拡張機能とPGDがそのデータベースで実行できるようにします。

次の作業例は、 EDB Postgres Advanced Serverの手順を詳細に示しています。

EDB Postgres Extended ServerまたはコミュニティPostgresを使用してPGDをインストールする場合、手順は似ていますが、パッケージ名やパスなどの詳細が異なります。これらの違いは

実際の例#

パッケージをインストールする#

最初の手順は、パッケージをインストールすることです。各Postgresパッケージには、それに対応するedb-bdr5-<postgresversion> パッケージがあります。たとえば、 EDB Postgres Advanced Server Serverepasバージョン16をインストールする場合は、edb-bdr5-epas16 をインストールします。

他にインストールするパッケージが2つあります。

  • PGDプロキシのedb-pgd5-proxy

  • PGDコマンドラインツールの場合 edb-pgd5-cli

これらのパッケージをすべてRHELまたはRHEL互換Linuxにインストールするには、次のコマンドを実行します。

sudo dnf -y install edb-bdr5-epas16 edb-pgd5-proxy edb-pgd5-cli

データベースが初期化され起動されていることを確認します#

サーバーが初期化されず、データベースのパッケージ初期化によって起動された場合、またはプロセスを繰り返している場合、サーバーを初期化して起動する必要があります。

サーバーが実行されているかどうかを確認するには、サービスを確認します。 EDB Advanced Serverのサービス名はedb-as-16 であるため、次を実行します。

sudo systemctl status edb-as-16

サーバーが実行されていない場合、応答は次のとおりです。

○ edb-as-16.service - EDB Postgres Advanced Server 16
     Loaded: loaded (/usr/lib/systemd/system/edb-as-16.service; disabled; preset: disabled)
     Active: inactive (dead)

Active: inactive (dead) は、サーバーを初期化して起動する必要があることを示します。

特定のPostgresフレーバーのセットアップスクリプトへのパスを知る必要があります。

EDB Postgres Advanced Serverの場合、このスクリプトは/usr/edb/as16/bin にedb-as-16-setup としてあります。 initdb パラメーターを指定してこのコマンドを実行し、UTF-8を使用するようにデータベースを設定するオプションを渡します。

sudo PGSETUP_INITDB_OPTIONS="-E UTF-8" /usr/edb/as16/bin/edb-as-16-setup initdb

データベースが初期化されたら、 BDR拡張機能の構成を続行できるように起動します。

sudo systemctl start edb-as-16

BDR拡張機能の構成#

EDB Postgres Advanced Serverをインストールすると、データベースへの接続時に管理機能を持つシステムユーザーenterprisedbが作成されます。このユーザーを使用して、 BDR拡張機能を構成します。

BDRライブラリのプリロード#

BDRライブラリを他のライブラリでプリロードする必要があります。 EDB Postgres Advanced Serverには、多数のライブラリが既にプリロードされているため、既存のリストにBDRライブラリを先頭に付ける必要があります。

echo -e "shared_preload_libraries = \$libdir/bdr,\$libdir/dbms_pipe,\$libdir/edb_gen,\$libdir/dbms_aq" | sudo -u enterprisedb tee -a /var/lib/edb/as16/data/postgresql.conf >/dev/null

!!!tip このコマンドフォーマットecho ... | sudo ... tee -a ... は、エコーされた文字列を別のユーザーが所有するpostgresql.conf ファイルの最後に追加します。

BDR拡張機能は、論理レプリケーションを実行するようにサーバーを設定する必要があります。これを行うには、 wal_level をlogical に設定します。

echo -e "wal_level = logical" | sudo -u enterprisedb tee -a /var/lib/edb/as16/data/postgresql.conf >/dev/null

コミットタイムスタンプ追跡を有効にする#

BDR拡張機能では、コミットタイムスタンプ追跡を有効にすることも必要です。

echo -e "track_commit_timestamp = on" | sudo -u enterprisedb tee -a /var/lib/edb/as16/data/postgresql.conf >/dev/null

max_worker_processes を増やす#

複数のノード間で通信するために、 Postgres Distributedノードは通常より多くのワーカープロセスを実行します。デフォルトの制限8は、小規模なクラスターであっても低すぎます。

max_worker_processes 値は、クラスターのトポロジ、ピアの数、データベースの数、およびその他の要素から導き出されます。必要な値を計算するには、

Postgres configuration/settings を参照してください。

3ノードクラスターを使用するこの例では、値16を使用します。

ワーカープロセスの最大数を16に増やします。

echo -e "max_worker_processes = 16" | sudo -u enterprisedb tee -a /var/lib/edb/as16/data/postgresql.conf >/dev/null

クラスターが大きい場合、この値を増やす必要があります。

Postgres enterprisedbユーザーにパスワードを追加します#

ノード間の接続を許可するには、Postgres enterprisedbユーザーにパスワードを設定する必要があります。この例では、パスワード secret を使用します。展開には別のパスワードを選択します。このパスワードは

connecting the cluster に必要です。

sudo -u enterprisedb psql edb -c "ALTER USER enterprisedb WITH PASSWORD secret"

pg_hba.confでノード間認証を有効にする#

デフォルトで、Postgresはローカル認証とデータベースとの接続を許可しますが、外部ネットワーク接続は許可しません。これを有効にするには、 pg_hba.conf を編集し、レプリケーションユーザーのルールを含む適切なルールを追加します。プロセスを簡素化するには、次のコマンドを使用します。

echo -e "host all all all md5\nhost replication all all md5" | sudo tee -a /var/lib/edb/as16/data/pg_hba.conf

このコマンドは、次をpg_hba.conf に追加します。

host all all all md5
host replication all all md5

これらのコマンドは、ノードの複製を有効にします。

ノード間の認証を有効にする#

レプリケーションのためにノードを接続するプロセスの一部として、PGDは他のノードにログインします。 Postgresが実行されているユーザーとしてそのログインを実行します。 EDB Postgres Advancedサーバーの場合、これはenterprisedbユーザーです。そのユーザーが他のノードにログインするには、資格情報が必要です。 .pgpass ファイルを使用して、これらの資格情報を提供します。このファイルは、ユーザーのホームディレクトリに存在する必要があります。 enterprisedb のホームディレクトリは/var/lib/edb です。

次のコマンドを実行してファイルを作成します。

echo -e " *:* :*:enterprisedb:secret" | sudo -u enterprisedb tee /var/lib/edb/.pgpass; sudo chmod 0600 /var/lib/edb/.pgpass

PostgreSQLドキュメントの The Password File の.pgpass ファイルの詳細を読むことができます。

サーバーを再起動します#

これらをすべて変更した後、次の方法でサーバーを再起動することをお勧めします。

sudo systemctl restart edb-as-16

拡張機能がインストールされたことを確認します#

この時点で、拡張機能が実際に利用可能であり、構成が正しくロードされたかどうかを確認する価値があります。次のようなBDR拡張機能のpg_available_extensions テーブルを照会できます。

sudo -u enterprisedb psql edb -c "select * from pg_available_extensions where name like bdr"

このコマンドは、拡張機能とそのバージョンのエントリを結果ます。

 name | default_version | installed_version |                  comment
- -----+-----------------+-------------------+-------------------------------------------
 bdr  | 5.3.0           |                   | Bi-Directional Replication for PostgreSQL

次のコマンドを使用して、他のサーバー設定を確認することもできます。

sudo -u enterprisedb psql edb -c "show all" | grep -e wal_level -e track_commit_timestamp -e max_worker_processes

レプリケートデータベースを作成する#

これで、サーバーはPGD用の準備が整いました。次に、 bdrdb という名前のデータベースを作成し、ログインしたときにBDR拡張機能をインストールする必要があります。

sudo -u enterprisedb psql edb -c "CREATE DATABASE bdrdb"
sudo -u enterprisedb psql bdrdb -c "CREATE EXTENSION bdr"

最後に、サーバーにログインして接続をテストします。

sudo -u enterprisedb psql bdrdb

サーバーに接続しました。コマンド「\dx」を実行して、インストールされている拡張機能をリストします。

bdrdb=# \dx
                                List of installed extensions
       Name       | Version |   Schema   |                   Description
- -----------------+---------+------------+--------------------------------------------------
 bdr              | 5.3.0   | pg_catalog | Bi-Directional Replication for PostgreSQL
 edb_dblink_libpq | 1.0     | pg_catalog | EnterpriseDB Foreign Data Wrapper for PostgreSQL
 edb_dblink_oci   | 1.0     | pg_catalog | EnterpriseDB Foreign Data Wrapper for Oracle
 edbspl           | 1.0     | pg_catalog | EDB-SPL procedural language
 plpgsql          | 1.0     | pg_catalog | PL/pgSQL procedural language
(5 rows)

BDR拡張機能がテーブルにリストされ、インストールされていることを示していることに注意してください。

サマリー#

EDB Postgres Advanced ServerのPGDのインストール#

参考までに、この例で使用されるコマンドの概要を次に示します。

sudo dnf -y install edb-bdr5-epas16 edb-pgd5-proxy edb-pgd5-cli
sudo PGSETUP_INITDB_OPTIONS="-E UTF-8" /usr/edb/as16/bin/edb-as-16-setup initdb
sudo systemctl start edb-as-16
echo -e "shared_preload_libraries = \$libdir/bdr,\$libdir/dbms_pipe,\$libdir/edb_gen,\$libdir/dbms_aq" | sudo -u enterprisedb tee -a /var/lib/edb/as16/data/postgresql.conf >/dev/null
echo -e "wal_level = logical" | sudo -u enterprisedb tee -a /var/lib/edb/as16/data/postgresql.conf >/dev/null
echo -e "track_commit_timestamp = on" | sudo -u enterprisedb tee -a /var/lib/edb/as16/data/postgresql.conf >/dev/null
echo -e "max_worker_processes = 16" | sudo -u enterprisedb tee -a /var/lib/edb/as16/data/postgresql.conf >/dev/null
sudo -u enterprisedb psql edb -c "ALTER USER enterprisedb WITH PASSWORD secret"
echo -e "host all all all md5\nhost replication all all md5" | sudo tee -a /var/lib/edb/as16/data/pg_hba.conf >/dev/null
echo -e " *:* :*:enterprisedb:secret" | sudo -u enterprisedb tee /var/lib/edb/.pgpass >/dev/null; sudo chmod 0600 /var/lib/edb/.pgpass
sudo systemctl restart edb-as-16
sudo -u enterprisedb psql edb -c "CREATE DATABASE bdrdb"
sudo -u enterprisedb psql bdrdb -c "CREATE EXTENSION bdr"
sudo -u enterprisedb psql bdrdb

EDB Postgres Extended ServerのPGDのインストール#

EDB Postgres Extended Serverを使用してPGDをインストールすると、 EDB Postgres Advanced Serverインストールと多くの違いがあります。

  • インストールするBDRパッケージの名前はedb-bdrV-pgextendedNN です。ここで、VはPGDバージョン、NNはPGEバージョン番号です。

  • 別のセットアップユーティリティ /usr/edb/pgeNN/bin/edb-pge-NN-setup を呼び出します。

  • サービス名はedb-pge-NN です。

  • システムユーザーはpostgresenterprisedbではありません。

  • postgresユーザーのホームディレクトリは/var/lib/pgqsl です。

  • shared_preload_libraries に追加する既存のライブラリはありません。

概要EDB Postgres Extended Server 16のPGDのインストール#

sudo dnf -y install edb-bdr5-pgextended16 edb-pgd5-proxy edb-pgd5-cli
sudo PGSETUP_INITDB_OPTIONS="-E UTF-8" /usr/edb/pge16/bin/edb-pge-16-setup ekend initdb
sudo systemctl start edb-pge-16
echo -e "shared_preload_libraries = \$libdir/bdr" | sudo -u postgres tee -a /var/lib/edb-pge/16/data/postgresql.conf >/dev/null
echo -e "wal_level = logical" | sudo -u postgres tee -a /var/lib/edb-pge/16/data/postgresql.conf >/dev/null
echo -e "track_commit_timestamp = on" | sudo -u postgres tee -a /var/lib/edb-pge/16/data/postgresql.conf >/dev/null
echo -e "max_worker_processes = 16" | sudo -u postgres tee -a /var/lib/edb-pge/16/data/postgresql.conf >/dev/null
sudo -u postgres psql postgres -c "ALTER USER postgres WITH PASSWORD secret"
echo -e "host all all all md5\nhost replication all all md5" | sudo tee -a /var/lib/edb-pge/16/data/pg_hba.conf >/dev/null
echo -e " *:* :*:postgres:secret" | sudo -u postgres tee /var/lib/pgsql/.pgpass >/dev/null; sudo chmod 0600 /var/lib/pgsql/.pgpass
sudo systemctl restart edb-pge-16
sudo -u postgres psql postgres -c "CREATE DATABASE bdrdb"
sudo -u postgres psql bdrdb -c "CREATE EXTENSION bdr"
sudo -u postgres psql bdrdb

PostgresqlのPGDのインストール#

PostgresSQLを使用したPGDのインストールには、 EDB Postgres Advanced Serverインストールと多くの違いがあります。

  • インストールするBDRパッケージの名前はedb-bdrV-pgNN です。ここで、VはPGDバージョン、NNはPostgreSQLバージョン番号です。

  • 別のセットアップユーティリティ /usr/pgsql-NN/bin/postgresql-NN-setup を呼び出します。

  • サービス名はpostgresql-NN です。

  • システムユーザーはpostgresenterprisedbではありません。

  • postgresユーザーのホームディレクトリは/var/lib/pgqsl です。

  • shared_preload_libraries に追加する既存のライブラリはありません。

概要 Postgresql 16のPGDのインストール#

sudo dnf -y install edb-bdr5-pg16 edb-pgd5-proxy edb-pgd5-cli
sudo PGSETUP_INITDB_OPTIONS="-E UTF-8" /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl start postgresql-16
echo -e "shared_preload_libraries = \$libdir/bdr" | sudo -u postgres tee -a /var/lib/pgsql/16/data/postgresql.conf >/dev/null
echo -e "wal_level = logical" | sudo -u postgres tee -a /var/lib/pgsql/16/data/postgresql.conf >/dev/null
echo -e "track_commit_timestamp = on" | sudo -u postgres tee -a /var/lib/pgsql/16/data/postgresql.conf >/dev/null
echo -e "max_worker_processes = 16" | sudo -u postgres tee -a /var/lib/pgsql/16/data/postgresql.conf >/dev/null
sudo -u postgres psql postgres -c "ALTER USER postgres WITH PASSWORD secret"
echo -e "host all all all md5\nhost replication all all md5" | sudo tee -a /var/lib/pgsql/16/data/pg_hba.conf >/dev/null
echo -e " *:* :*:postgres:secret" | sudo -u postgres tee /var/lib/pgsql/.pgpass; sudo chmod 0600 /var/lib/pgsql/.pgpass
sudo systemctl restart postgresql-16
sudo -u postgres psql postgres -c "CREATE DATABASE bdrdb"
sudo -u postgres psql bdrdb -c "CREATE EXTENSION bdr"
sudo -u postgres psql bdrdb