Using PGD CLI#
PGD CLIは、PGDクラスターを管理するための強力なコマンドラインインターフェイスです。次のようなさまざまなタスクを実行するために使用できます。
クラスターの状態の確認
クラスター内のノードのリスト
クラスター内のグループのリスト
グループオプションの設定
ライトリーダーの切り替え
installation guide を使用してPGDをインストールした場合、既にPGD CLIをインストールし、それを使用してクラスターを作成しています。
PGD CLIを使用する#
PGD CLIコマンドは、構成ファイルを使用して、接続するホストを判断します。これをオーバーライドして代替構成ファイルを使用したり、サーバーを明示的にポイントしたりできる options があります。ただし、デフォルトでは、 PGD CLIはプリセットの場所で構成ファイルを検索します。
データベースへの接続は、 psqlコマンドのような他のコマンドラインユーティリティが認証されるのと同じ方法で認証されます。
他のコマンドとは異なり、 PGD CLIは対話型でパスワードの入力を求めません。したがって、次のいずれかの方法を使用してパスワードを渡す必要があります。
ホスト、ポート、データベース名、ユーザー名、パスワードを含むエントリを .pgpass に追加する
PGPASSWORD環境変数にパスワードを設定する接続文字列にパスワードを含める
他のオプションはマルチプルのデータベースクラスターでうまく拡張できないか、パスワードの機密性が危険にさらされるため、最初のオプションをお勧めします。
PGD CLIの構成と接続#
PGD CLIがインストールされていることを確認します。
PGD CLIが既にインストールされている場合は、次のステップに移動します。
システムの場合、そのシステムで Step 2 - Configure repositories ステップを繰り返します。
次に、そのプラットフォームに適切なパッケージインストールコマンドを実行します。
RHELおよび派生製品
sudo dnf install edb-pgd6-cliDebian、Ubuntu、およびデリバティブ
sudo apt-get install edb-pgd6-cli構成ファイルを作成します。 - これは、使用するPGD CLIのクラスターとエンドポイントを指定するYAMLファイルです。
構成ファイルのインストール.
YAML構成ファイルをデフォルトの構成ディレクトリ
/etc/edb/pgd-cli/にpgd-cli-config.yml.としてコピーします PGD CLIを実行するシステムでこのプロセスを繰り返します。
pgd-cliを実行します。
PGD CLIを使用してクラスターを探索する#
cluster show --healthコマンドでクラスターの状態を確認します。nodes listコマンドを使用して、クラスター内のノードを表示します。groups listコマンドでクラスター内のグループを表示するgroup set-optionコマンドでグループオプションを設定します。group set-leaderコマンドで書き込みリーダーを切り替えます。
これらのコマンドの詳細については、次の実際の例を参照してください。
また、他の構成オプションと完全なコマンドリファレンスの詳細については、 PGD CLI documentation を参照してください。
実際の例#
PGD CLIがインストールされていることを確認します#
この実際の例では、PostgresとPGDが既にインストールされているホスト1でPGD CLIを構成して使用します。 PGD CLIを再度インストールする必要はありません。
オプションで構成ファイルを作成します#
PGD CLI構成ファイルは、クラスターオブジェクトを含むYAMLファイルです。これには2つのプロパティがあります。
PGDクラスターのトップレベルグループの名前
nameとしてデータベースのエンドポイントの配列
endpointsとして
cluster:
name: pgd
endpoints:
- host=host-1 dbname=pgddb port=5444
- host=host-2 dbname=pgddb port=5444
- host=host-3 dbname=pgddb port=5444
この例のエンドポイントはport=5444
を指定していることに注意してください。これはEDB Postgres Advanced
Serverインスタンスに必要です。 EDB Postgres
ExtendedおよびコミュニティPostgreSQLの場合、これを省略できます。
PGD CLI構成ディレクトリを作成します。
sudo mkdir -p /etc/edb/pgd-cli
次に、構成を/etc/edb/pgd-cli
ディレクトリのpgd-cli-config.yml ファイルに書き込みます。
この例では、host-1でこれを実行してファイルを作成できます。
cat <<EOF | sudo tee /etc/edb/pgd-cli/pgd-cli-config.yml
cluster:
name: pgd
endpoints:
- host=host-1 dbname=pgddb port=5444
- host=host-2 dbname=pgddb port=5444
- host=host-3 dbname=pgddb port=5444
EOF
PGD CLIを使用する必要があるシステムでこのプロセスを繰り返すことができます。
PGD CLIの実行#
構成ファイルを配置し、enterprisedb
systemユーザーとしてログインすると、pgd-cliを実行できます。たとえば、
nodes list
コマンドを使用して、クラスター内のノードとそのステータスをリストできます。
pgd nodes list
__OUTPUT__
Node Name Group Name Node Kind Join State Node Status
- -------- ----------- --------- ---------- -----------
node-1 group-1 data ACTIVE Up
node-2 group-1 data ACTIVE Up
node-3 group-1 data ACTIVE Up
PGD CLIを使用してクラスターを探索する#
PGD CLIが構成されたら、それを使用して、クラスターのPGDレベルのビューを取得できます。
クラスターの状態を確認する#
cluster show --health コマンドは、クラスターの状態を表示する簡単な方法を提供します。
pgd cluster show --health
__OUTPUT__
Check Status Details
- ---------------- ------ -----------------------------------------------
Connections Ok All BDR nodes are accessible
Raft Ok Raft Consensus is working correctly
Replication Slots Ok All PGD replication slots are working correctly
Clock Skew Ok Clock drift is within permissible limit
Versions Ok All nodes are running the same PGD version
クラスター内のノードを表示する#
前述のように、 nodes list コマンドはクラスター内のノードをリストします。
pgd nodes list
__OUTPUT__
Node Name Group Name Node Kind Join State Node Status
- --------- ----------- --------- ---------- -----------
node-1 group-1 data ACTIVE Up
node-2 group-1 data ACTIVE Up
node-3 group-1 data ACTIVE Up
このビューには、ノードがメンバーであるグループとその現在のステータスが表示されます。ノードで実行されているPGDおよびPostgresのバージョンを確認するには、
nodes list --versions を使用します。
pgd nodes list --versions
__OUTPUT__
Node Name BDR Version Postgres Version
- --------- --------------------------- --------------------------------
node-1 5.7.0 (snapshot e2534db6d) 16.6 (Debian 16.6-1EDB.bullseye)
node-2 5.7.0 (snapshot e2534db6d) 16.6 (Debian 16.6-1EDB.bullseye)
node-3 5.7.0 (snapshot e2534db6d) 16.6 (Debian 16.6-1EDB.bullseye)
クラスター内のグループを表示する#
最後に、 PGD CLIの groups list コマンドは、構成されているグループなどを表示します。
pgd groups list
__OUTPUT__
Group Name Parent Group Name Group Type Nodes
- ----------- ----------------- ---------- -----
pgd global 0
group-1 pgd data 3
このコマンドは次を示します。
グループ
そのタイプ
その親グループ
各グループのノード数
グループオプションを設定する#
group set-option コマンドを使用して、PGD
CLIを使用してグループオプションを設定することもできます。 group-1
グループの場所をLondon に設定する場合は、次を実行します。
pgd group group-1 set-option location London
__OUTPUT__
Status Message
- ----- -----------------------------
OK Command executed successfully
group get-option コマンドを使用して、新しい場所を確認できます。
pgd group group-1 get-option location
__OUTPUT__
Option Name Option Value
- ---------- ------------
location London
書き込みリーダーを設定する#
グループ内の書き込みリーダーを変更して、ホストのメンテナンスを有効にする必要がある場合、
PGD CLIは group set-leader コマンドを提供します。 group
の後にグループ名を入力し、set leader
の後にスイッチするノードの名前を入力します。
pgd group group-1 set-leader node-2
__OUTPUT__
Status Message
- ----- -----------------------------
OK Command executed successfully
--summary option
で group show command を使用して、書き込みリーダーを検証できます。
pgd group group-1 show --summary
__OUTPUT__
Group Property Value
- ---------------- ------------
Group Name group-1
Parent Group Name pgd
Group Type data
Write Leader node-2
Commit Scope
PGD CLIで使用可能なコマンドの詳細については、 PGD CLI command reference を参照してください。
PGD エッセンシャルコンストレイン#
クラスターアーキテクチャの検証#
クラスターが以下にリストされているPGD Essential制約を満たさない場合、
pgd cluster verify コマンドはWarning を表示します。
PGD Essentialクラスターには、最大3つのデータノードが必要です。
PGD Essentialクラスターでは、グローバルグループのみにルーティングを有効にする必要があります。
pgd cluster verify --arch
__OUTPUT__
Check | Status | Groups
- ----------------------------+---------+--------
Cluster has data nodes | Ok |
Max data nodes in a cluster | Warning | dc-1
Witness nodes per group | Ok |
Witness-only groups | Ok |
Data nodes per group | Ok |
Routing enabled groups | Warning | dc-1
Empty groups | Ok |
Nodes have node kind set | Ok |
PGD互換性評価#
pgd assess コマンドは、 PGD
Essentialの互換性についてPostgresサーバーの以下にリストされている評価を実行しません。
複数の一意のインデックスを持つテーブル
行レベルのロックの使用
ロックテーブルの使用法
リッスン通知の使用法
PGD Essentialクラスターのコマンド出力は以下のようになります。
pgd assess --dsn "host=pgd-a2 port=5432 dbname=pgddb user=postgres "
__OUTPUT__
Assessment | Result | Details
- -----------------------------+----------------------------+-------------------------------------------------------
Multiple Databases | Compatible | Found only one user database
Materialized Views | Compatible | No materialized views found
EPAS Queue Tables | Compatible | No EPAS Queue Tables found
DDL Command Usage | Requires workload analysis | Cannot be checked automatically at this time
Advisory Lock Usage | Potentially compatible | No advisory lock commands found in pg_stat_statements
Large Objects | Compatible | No large objects found
Trigger/Reference Privileges | Compatible | No triggers with incompatible privileges found
コミットスコープ管理コマンド#
pgd commit-scope create 、pgd commit-scope update
、およびpgd commit-scope drop コマンドは、PGD
Essentialクラスターではサポートされていません。コマンドは次のアドバイスを表示して終了します。
Operation not supported for PGD Essential version.
HINT: This limit doesnt exist in the PGD Expanded version
グループオプションを設定する#
pgd group set-option コマンドでは、 PGD
Essentialクラスターのグループオプションenable_raft
、enable_routing 、enable_wal_decoder
、およびstreaming_mode
の更新はできません。コマンドは以下のアドバイスで終了します。
Operation not supported for PGD Essential version.
HINT: This limit doesnt exist in the PGD Expanded version
PGDノードのセットアップ#
pgd node setup コマンドは、global
グループのルーティングを有効にし、subgroup(s)
で同じを無効にします。