Managing EDB Postgres Distributed (PGD) databases#
Architecture で説明しているように、EDB CloudNativePG Global Clusterは、PGDデータベースを展開するために作成されたオペレーターです。 Kubernetesエコシステムを活用することで、自己修復と宣言的制御を提供できます。オペレーターは、バックアップおよび復元操作も担当します。 Backup on object stores を参照してください。
ただし、 PGDクラスターの操作と制御の多くは、オペレーターによって管理されていません。 EDB CloudNativePG Global Clusterによって作成されたポッドには、 PGD CLI がインストールされた状態で提供されます。このツールを使用して、スイッチオーバーを実行できます。
PGD CLI#
警告
PGD CLIを使用してリソースを作成および削除しないでください。たとえば、 create-proxy および`delete-proxy` コマンドは避けてください。リソースのプロビジョニングはオペレーターの制御下にあり、手動での作成と削除はサポートされていません。
例として、switchoverコマンドを実行します。
プロキシポッドからPGD CLIを使用することをお勧めします。それらを見つけるには、クラスターのポッドリストを取得します。
kubectl get pods -n my-namespace
NAME READY STATUS RESTARTS AGE
location-a-1-1 1/1 Running 0 2h
location-a-2-1 1/1 Running 0 2h
location-a-3-1 1/1 Running 0 2h
location-a-proxy-0 1/1 Running 0 2h
location-a-proxy-1 1/1 Running 0 2h
プロキシノードの名前にはproxy が含まれます。
1つを選択して、コマンドプロンプトを取得します。
kubectl exec -n my-namespace -ti location-a-proxy-0 -- bash
これで、プロキシポッドとのbashセッションが開きました。 pgd
コマンドは使用できます。
pgd
Available Commands:
check-health Checks the health of the EDB Postgres Distributed cluster.
<- snipped ->
switchover Switches over to new write leader.
<- snipped ->
スイッチオーバーに必要な情報を取得して、簡単に移動できます。
pgd switchover --help
$ pgd switchover --group-name group_a --node-name bdr-a1
switchover is complete
pgd show-groups
Group Group ID Type Parent Group Location Raft Routing Write Leader
- ---- -------- ---- ------------ -------- ---- ------- ------------
world 3239291720 global true true location-a-2
location-a 2135079751 data world true true location-a-1
pgd show-nodes
Node Node ID Group Type Current State Target State Status Seq ID
- --- ------- ----- ---- ------------- ------------ ------ ------
location-a-1 3165289849 location-a data ACTIVE ACTIVE Up 1
location-a-2 3266498453 location-a data ACTIVE ACTIVE Up 2
location-a-3 1403922770 location-a data ACTIVE ACTIVE Up 3
データベースへのアクセス#
'Use cases' は、Kubernetesクラスター内でのデータベースの使用と外部からのデータベースの使用に関するディスカッションです。 Connectivity では、アプリケーションからデータベースへのアクセスに関連するサービスに関するディスカッションを見つけることができます。
システムを実装する方法にかかわらず、アプリケーションはプロキシサービスを使用して接続し、PGDとEDB Postgres Distributed for Kubernetesオペレーターによって追加された自己修復機能の強化のメリットを享受する必要があります。
重要
EDB CloudNativePGクラスターのデフォルトに従って、データノードは`app` と呼ばれるデータベースで作成され、app という名前のユーザーが所有します。EDB EDB Postgres Distributedドキュメントで説明されている`bdrdb` データベースとは対照的に。これらの値は、マニフェストの`cnp` セクションで構成できます。参考については、EDB CloudNativePGクラスタードキュメントの Bootstrap を参照してください。
ただし、管理タスクのために psql CLIを使用してPGDデータノードにアクセスすることが必要になる場合があります。
PGDクラスターとkubectl exec
のポッドリストを取得して、データノードに入れることができます。
kubectl exec -n my-namespace -ti location-a-1-1 -- psql
psqlのよく知られた領域では、デフォルトで作成されるデータベースの名前がapp
であることに注意してください。前述の警告を参照してください。
postgres=# \c app
You are now connected to database "app" as user "postgres".
app=# \x
Expanded display is on.
app=# select * from bdr.node_summary;
- [ RECORD 1 ]---------------------------------------
node_name | location-a-1
node_group_name | location-a
interface_connstr | host=location-a-1-node user=streaming_replica sslmode=verify-ca port=5432 sslkey=/controller/certificates/streaming_replica.key sslcert=/controller/certificates/streaming_replica.crt sslrootcert=/controller/certificates/server-ca.crt application_name=location-a-1 dbname=app
peer_state_name | ACTIVE
peer_target_state_name | ACTIVE
<- snipped ->
アプリケーションには、非特権ロールデフォルトでapp を使用します。
ユーザーの資格情報が必要です。これはKubernetesシークレットに保存されています。
kubectl get secrets
NAME TYPE DATA AGE
<- snipped ->
location-a-app kubernetes.io/basic-auth 2 2h
このシークレットには、Postgres DSNに必要なbase64でエンコードされたユーザー名とパスワードが含まれています。
kubectl get secrets location-a-app -o yaml
apiVersion: v1
data:
password: <base64-encoded-password>
username: <base64-encoded-username>
kind: Secret
metadata:
creationTimestamp: <timestamp>
labels:
<- snipped ->