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-proxyPGDコマンドラインツールの場合
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