pgd node setup#
概要#
pgd node setup
コマンドは、クラスター内のPGDデータノードを構成するために使用されます。新しいノードのセットアップ、既存のノードのクラスターへの参加、またはクラスターへのノードの論理参加を実行するために使用できます。
!!!重要「物理的結合のバージョン要件」
pgd node setup
が物理的結合ローカルノードが起動して実行されていないときにリモートノードからデータをコピーする場合、ソースノードと参加ノードの両方がまったく同じPGDバージョンである必要があります。物理的結合を使用して、別のPGDバージョンのノードを既存のクラスターに参加させることはできません。ローリングアップグレードの場合、代わりに論理結合を使用してください。詳細については、
ノード参加を使用したローリングアップグレード を参照してください。
コマンドの動作は、コマンドで指定されたローカルノードとリモートノードの状態によって異なります。
これがクラスター内の最初のノードの場合、 pgd node setup
はinitdb を実行し、 PGDノードをセットアップします。
これが最初のノードではなく、ローカルノードが起動して実行されていない場合、
pgd node setup
はクラスターへのノードの物理的参加を実行します。これにより、初期化プロセスの一部としてリモートノードからローカルノードにデータがコピーされ、ローカルノードがクラスターに参加します。これは、新しいノードにデータをロードする最も速い方法です。
ローカルノードが起動して実行されており、リモートノードにも到達可能である場合、
pgd node setup
はクラスターへのノードの論理参加を実行します。これにより、クラスター内に新しいノードが作成され、リモートノードからストリーミングレプリケーションが開始されます。これは、新しいノードを既存のクラスターに追加するための推奨される方法です。
ローカルノードがアップして実行されており、リモートノードdsnが提供されていない場合、
pgd node setup
は、ノードが指定されたグループの一部でない場合、ノードグループのスイッチを実行します。
ユーザーとロール#
pgd node setup
コマンドを実行するには、スーパーユーザーロールが必要です。スーパーユーザーロールは、データディレクトリを作成し、データベースを初期化するために使用されます。データベースを作成するには、スーパーユーザーロールにCREATEDB
特権が必要です。
--dsn オプションで指定されたユーザーが存在しない場合は作成されます。
PGD機能を管理できるbdr_superuser
ロールのみが付与されます。ただし、データベースに対する他の特権はありません。
透過的データ暗号化TDEのサポート#
透過的データ暗号化TDEは、 EDB Postgres Advanced ServerおよびEDB Postgres Extended Serverバージョン15以降で利用可能なオプション機能です。
pgd node setup
コマンドは、新しいデータベースサーバーを初期化するとき、または既存のノードをクラスターに参加させるときにこの機能をサポートします。
pgd node setup によって公開されるTDEオプションは、次の例外を除き
initdb TDE options に似ています。
オプション
--data-encryptionは、ブール値のみのフラグですAESキー長さの値は受け入れません。代わりに、オプション
--data-encryption-keylenを使用してAESキー長を指定します。
構文#
pgd node <NODE_NAME> setup [OPTIONS] -D <PG_DATA>
引数#
<NODE_NAME\>作成するノードの名前。これは、クラスター内のノードを識別するために使用される名前です。クラスター内で一意である必要があります。
オプション#
Option |
Description |
|---|---|
--listen-addr <LISTEN_ADDR> |
構成されたノードが着信接続をリッスンするアドレス、および他のノードがこのノードに接続するために使用するアドレス。これは通常、少なくとも`localhost`に設定されますが、任意の有効なアドレスに設定できます。デフォルトは`localhost`です。 `--dsn`からの`host`値もこのリストに追加されます。 |
--initial-node-count <INITIAL_NODE_COUNT> |
クラスター内のノードまたはクラスター内に含まれる予定のノードの数。ノードのさまざまなリソース設定を計算するために使用されます。デフォルト3です。 |
--bindir <BINDIR> |
<BINDIR> バイナリが存在するディレクトリを指定します。デフォルトは、実行中のpgdバイナリが置かれているディレクトリです。 |
--log-file <LOG_FILE> |
ログファイルへのパス。postgres起動ログに使用されます。デフォルトでは、postgres-<port>.log`という名前の現在のディレクトリにあるファイルに書き込みます。ここで、ポート値は--dsn`オプションの`port`属性から取得されます。 |
-D, --pgdata <PG_DATA> |
ノードのデータディレクトリとして<PG_DATA>を使用します。環境変数`PGDATA`でも設定されます。これは有効なディレクトリであり、コマンドを実行するユーザーが書き込み可能である必要があります。 |
--superuser <SUPERUSER> |
`initdb`のスーパーユーザー名。デフォルトは`postgres`です。 |
--node-kind <NODE_KIND> |
作成するノードの種類を指定します。デフォルトは`data`です。サポートされている値は`data`、witness、`subscriber-only`です。 |
--group-name <GROUP_NAME> |
ノードグループ名。指定しない場合、ノードはアクティブノードのグループに追加されます。これは、グループの最初のノードの必須引数です。 |
--create-group |
指定されたグループがまだ存在しない場合、このフラグを設定して作成します。これは、最初のノードのデフォルトでtrueになります。 |
--cluster-name <CLUSTER_NAME> |
ノードに参加するクラスターの名前。クラスターを初めてセットアップするときに、これは`parent node group`を作成するために使用されます。指定しない場合、デフォルトの`pgd`。 |
--cluster-dsn <CLUSTER_DSN> |
アクティブなPGDクラスターに属するDSN。これは、クラスターの最初のノードを構成する場合には必要ありませんが、後続のノードには必須です。既存のアクティブノードのDSNを指す必要があります。 |
--postgresql-conf <POSTGRESQL_CONF> |
ノードに使用される`postgresql.conf`ファイルのオプションのパス。 |
--postgresql-auto-conf <POSTGRESQL_AUTO_CONF> |
ノードに使用される`postgresql.auto.conf`ファイルのオプションのパス。 |
--hba-conf <HBA_CONF> |
ノードに使用される`pg_hba.conf`ファイルのオプションのパス。 |
--update-pgpass |
設定されている場合、新しいノードパスワードのpgpassファイルは、現在のユーザーの`.pgpass`ファイルに保存されます。 |
--verbose |
詳細なメッセージを出力します。 |
-y, --data-encryption |
データベースサーバーの初期化時にTDEを追加します。 |
--data-encryption-keylen <AES_KEYLEN> |
TDEのAESキーの長さ。デフォルトは`128`です。サポートされている値は`128`および`256`です。 |
--key-wrap-command <KEY_WRAP_COMMAND> |
データ暗号化キーを保護するためのラッピング/暗号化コマンド。 `<KEY_WRAP_COMMAND>`はカスタマイズ可能ですが、プレースホルダー `%p`を含める必要があります。このオプションを使用しない場合、`pgd node setup`は環境変数`PGDATAKEYWRAPCMD`にフォールバックします。 |
--key-unwrap-command <KEY_UNWRAP_COMMAND> |
データ暗号化キーにアクセスするための解凍/復号コマンド。 `<KEY_UNWRAP_COMMAND>`はカスタマイズ可能ですが、プレースホルダー `%p`を含める必要があります。このオプションを使用しない場合、`pgd node setup`は環境変数`PGDATAKEYUNWRAPCMD`にフォールバックします。 |
--no-key-wrap |
キーのラッピングを無効にします。このオプションは、実稼働環境での使用はお勧めできません。 |
--copy-key-from <COPY_KEY_FROM> |
指定された場所から既存のデータ暗号化キーをコピーします。通常、暗号化キーは`pg_encryption/key.bin`に保存されます |
Global Options も参照してください。
pgd node setup
コマンドは、次の取得方法を優先順に確認することにより、非対話型でデータベースパスワードを見つけようとします。
--dsnグローバルオプションで提供されるpasswordパラメーターで設定されたパスワード。PGPASSWORD環境変数で設定されたパスワード。--dsnグローバルオプションで提供されるpassfileパラメーターで設定されたパスワードファイル。PGPASSFILE環境変数で設定されたパスワードファイルコマンドを呼び出すユーザーの
HOMEディレクトリにあるパスワードファイル.pgpass
システムがこれらの方法でパスワードを見つけられない場合、コマンドはパスワードを手動で入力するように求めます。
--update-pgpass
フラグは、システムがパスワードを正常に取得した後に発生する動作を制御します。設定すると、パスワードが将来の非対話型使用に備えて保存されます。更新するパスワードファイルは、次の優先順位に従います。
--dsn optionに提供された接続文字列内のpassfileパラメーターで指定されたパス。PGPASSFILE環境変数で指定されたファイル.pgpassファイルは、コマンドを呼び出したユーザーのHOMEディレクトリにあります。
例#
これらの例では、3つのホストhost-1 、host-2
、およびhost-3
でクラスターをセットアップして、3つのノードnode-1 、node-2
、およびnode-3 を作成します。
3つのノードはデータノードであり、グループ名がgroup-1
であるpgd という名前のクラスターの一部です。
PGPASSWORD環境変数をエクスポートして、コマンドを実行するたびにpgdadmin
ユーザーのパスワードを入力する必要を回避することをお勧めします。これは、次のコマンドで行うことができます。
export PGPASSWORD=pgdsecret
最初のノードの構成#
pgd node node-1 setup --dsn "host=host-1 port=5432 user=pgdadmin dbname=pgddb" \
- -listen-addr "localhost,host-1" \
- -group-name group-1 --cluster-name pgd \
- D /var/lib/edb-pge/17/main
コマンドをステップ実行して、node-1
を設定しています。最初のオプションは--dsn
オプションで、これはノードの接続文字列です。これは通常、host=hostname port=5432 user=pgdadmin dbname=pgd
に設定されます。これは、ローカルPostgresインスタンスの一般的な接続文字列です。
--listen-address
オプションは、ノードが着信接続をリッスンするアドレスを指定するために使用されます。この場合、localhost,host-1
に設定しています。これは、ノードがローカルホストとhost-1
アドレスの両方でリッスンすることを意味します。
これはクラスター内の最初のノードであるため、グループ名をgroup-1
に設定し、クラスター名をpgd
実際にデフォルトに設定します。これはクラスター内の最初のノードであるため、
--create-group オプションが自動的に設定されます。
最後に、 -D
オプションを使用してノードのデータディレクトリを設定します。これは、Postgresデータファイルが保存される場所です。この例では、データディレクトリとして/var/lib/edb-pge/17/main
を使用しています。
このコマンドは、データディレクトリを作成し、データベースをPGD用に正しく初期化します。次に、ノードを起動し、クラスターに参加する他のノードを含む新しい接続で利用できるようにします。
2番目のノードの構成#
pgd node node-2 setup --dsn "host=host-2 port=5432 user=pgdadmin dbname=pgddb" \
- -listen-addr "localhost,host-2" \
- D /var/lib/edb-pge/17/main
- -cluster-dsn "host=host-1 port=5432 user=pgdadmin dbname=pgddb"
このコマンドは最初のノードに似ていますが、node-2
を設定しています。 --dsn
オプションは、ノードの接続文字列であり、通常はhost=hostname port=5432 user=pgdadmin dbname=pgd
に設定されます。 cluster-dsn
は、アクティブなノードを指す必要があります。接続マネージャー、またはプロキシエンドポイントなどを指すことができます。
CLIは、その背後にあるノードの実際のDSNを取得します。この場合、クラスター内の最初のノードの接続文字列であるhost=host-1 port=5432 user=pgdadmin dbname=pgd
に設定しています。
3番目のノードの構成#
pgd node node-3 setup --dsn "host=host-3 port=5432 user=pgdadmin dbname=pgddb" \
- -listen-addr "localhost,host-3" \
- -cluster-dsn "host=host-1 port=5432 user=pgdadmin dbname=pgddb" \
- D /var/lib/edb-pge/17/main
このコマンドは2番目のノードに似ていますが、node-3
を設定しています。 --dsn
オプションは、ノードの接続文字列であり、通常はhost=hostname port=5432 user=pgdadmin dbname=pgd
に設定されます。 cluster-dsn
は、アクティブなノードを指す必要があります。接続マネージャー、またはプロキシエンドポイントなどを指すことができます。
CLIは、その背後にあるノードの実際のDSNを取得します。この場合、クラスター内の最初のノードの接続文字列であるhost=host-1 port=5432 user=pgdadmin dbname=pgd
に設定しています。
分割およびドロップされたノードのクラスターへの参加#
pgd node node-2 setup --dsn "host=host-2 port=5432 user=pgdadmin dbname=pgddb" \
- -listen-addr "localhost,host-2" \
- -cluster-dsn "host=host-1 port=5432 user=pgdadmin dbname=pgddb" \
- D /var/lib/edb-pge/17/main
このコマンドは、後続のノードの設定に似ていますが、 node-2
を再度設定します。 --dsn
オプションは、ノードの接続文字列であり、通常はhost=hostname port=5432 user=pgdadmin dbname=pgd
に設定されます。 cluster-dsn
は、アクティブなノードを指す必要があります。接続マネージャー、またはプロキシエンドポイントなどを指すことができます。
CLIは、その背後にあるノードの実際のDSNを取得します。この場合、クラスター内の最初のノードの接続文字列であるhost=host-1 port=5432 user=pgdadmin dbname=pgd
に設定しています。
これは、メンテナンスなどのアクティビティのためにノードがクラスターからparted
およびdropped
され、クラスターに再参加する必要がある場合に役立ちます。コマンドは、クラスターへのノードの論理参加を実行します。これにより、クラスター内に新しいノードが作成され、リモートノードからストリーミングレプリケーションが開始されます。
TDEオプションを使用した最初のノードの構成#
pgd node node-1 setup \
- -dsn "host=host-1 port=5432 user=pgdadmin dbname=pgddb" \
- -listen-addr "localhost,host-1" \
- -group-name group-1 --cluster-name pgd \
- D /var/lib/edb-pge/17/main \
- -data-encryption \
- -key-wrap-command "openssl enc -e -aes-128-cbc -pbkdf2 -pass pass:secret -out %p" \
- -key-unwrap-command "openssl enc -d -aes-128-cbc -pbkdf2 -pass pass:secret -in %p"
TDE対応クラスターのpgd node setup
コマンドは標準のコマンドに似ていますが、3つの追加TDE固有オプション
--data-encryption 、--key-wrap-command
、および--key-unwrap-command が必要です。
簡単にするために、この例の--key-wrap-command
および--key-unwrap-command
の値は単純なパスフレーズを使用しています。ただし、外部のキー管理サービスKMSなどのより安全なメカニズムを構成できます。
この例では、 --data-encryption-keylen
オプションを明示的に設定せず、キー長をデフォルトの128ビットに設定しています。
TDEオプションを使用した2番目のノードの構成#
pgd node node-2 setup \
- -dsn "host=host-2 port=5432 user=pgdadmin dbname=pgddb" \
- -listen-addr "localhost,host-2" \
- D /var/lib/edb-pge/17/main \
- -cluster-dsn "host=host-1 port=5432 user=pgdadmin dbname=pgddb" \
- -key-wrap-command "openssl enc -e -aes-128-cbc -pbkdf2 -pass pass:secret -out %p" \
- -key-unwrap-command "openssl enc -d -aes-128-cbc -pbkdf2 -pass pass:secret -in %p"
このコマンドは、最初のノードで使用されるセットアップに似ていますが、必要なTDEオプションを保持します。残りの引数は、クラスター内の後続のノードをセットアップするときに使用される標準のコマンドと一貫しています。 TDEオプションの値は、初期ノードに提供されたものと同じである必要があります。