PostgreSQL の設定を変更する
第2世代
IBM Cloud® Databases for PostgreSQL Gen 2 では、プロビジョニング時および稼働中のインスタンスに対して、API または CLI を使用してデータベースパラメータを設定できます。 パラメータによっては、 ローリング再起動 (各ノードを1台ずつ順次再起動)が必要なものもあれば、ダウンタイムなしで即座に適用されるものもあります。
カスタムパラメータを使用して新しいインスタンスをプロビジョニングする
設定したいパラメータのみを含めてください。
CLI を使用したプロビジョニング
ibmcloud resource service-instance-create <INSTANCE_NAME> databases-for-postgresql <SERVICE_PLAN_NAME> <REGION> \
-p '{
"dataservices": {
"postgresql": {
"configuration": {
"max_connections": 300,
"log_connections": true,
"log_disconnections": true,
"log_min_duration_statement": 500,
"max_locks_per_transaction": 128,
"max_prepared_transactions": 50,
"wal_level": "logical",
"shared_buffers": 196608,
"max_worker_processes": 16,
"max_logical_replication_workers": 8,
"max_wal_senders": 20,
"max_replication_slots": 20,
"pgaudit.log": "ddl,role,read",
"pgaudit.role": "auditor"
}
}
}
}'
API を使用したプロビジョニング
curl -X POST \
https://resource-controller.cloud.ibm.com/v2/resource_instances \
-H "Authorization: Bearer $IBMCLOUD_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "<INSTANCE_NAME>",
"resource_plan_id": "<SERVICE_PLAN_ID>",
"resource_group": "<RESOURCE_GROUP_ID>",
"target": "<REGION>",
"parameters": {
"dataservices": {
"postgresql": {
"configuration": {
"max_connections": 300,
"log_connections": true,
"log_disconnections": true,
"log_min_duration_statement": 500,
"max_locks_per_transaction": 128,
"max_prepared_transactions": 50,
"wal_level": "logical",
"shared_buffers": 196608,
"max_worker_processes": 16,
"max_logical_replication_workers": 8,
"max_wal_senders": 20,
"max_replication_slots": 20,
"pgaudit.log": "ddl,role,read",
"pgaudit.role": "auditor"
}
}
}
}
}'
実行中のインスタンスのパラメータを更新する
変更したいパラメータのみを含めてください。それ以外のパラメータは変更されません。 無効なパラメータ値は、 4xx エラーとして拒否されます。
CLI を使用した更新
ibmcloud resource service-instance-update <INSTANCE_NAME_OR_CRN> \
-p '{
"dataservices": {
"postgresql": {
"configuration": {
"max_connections": 300,
"log_connections": true,
"log_disconnections": true,
"log_min_duration_statement": 500,
"max_locks_per_transaction": 128,
"max_prepared_transactions": 50,
"wal_level": "logical",
"shared_buffers": 196608,
"max_worker_processes": 16,
"max_logical_replication_workers": 8,
"max_wal_senders": 20,
"max_replication_slots": 20,
"pgaudit.log": "ddl,role,read",
"pgaudit.role": "auditor"
}
}
}
}'
API による更新
curl -X PATCH \
https://resource-controller.cloud.ibm.com/v2/resource_instances/<INSTANCE_ID> \
-H "Authorization: Bearer $IBMCLOUD_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"parameters": {
"dataservices": {
"postgresql": {
"configuration": {
"max_connections": 300,
"log_connections": true,
"log_disconnections": true,
"log_min_duration_statement": 500,
"max_locks_per_transaction": 128,
"max_prepared_transactions": 50,
"wal_level": "logical",
"shared_buffers": 196608,
"max_worker_processes": 16,
"max_logical_replication_workers": 8,
"max_wal_senders": 20,
"max_replication_slots": 20,
"pgaudit.log": "ddl,role,read",
"pgaudit.role": "auditor"
}
}
}
}
}'
PostgreSQL パラメータの設定
max_connections
- 型 :整数
- デフォルト: 115
- 範囲 :25 ~ 500
- 再起動が必要 :はい
クライアントの同時接続数の上限。 デフォルト値の 115 では、プラットフォームの監視用に 15 の接続が確保され、クライアントのワークロード用に 100 が利用可能です。
log_connections
- 型: ブール型
- デフォルト: false
- 再起動が必要 :いいえ
接続が成功したたびにログを記録します。これは、コンプライアンス監査証跡(SOC 2 や PCI DSS など)において有用です。
log_disconnections
- 型: ブール型
- デフォルト: false
- 再起動が必要 :いいえ
接続が切断されるたびに、各セッションを、セッションの継続時間を含めて記録します。
log_min_duration_statement
- 型 :整数(ミリ秒)
- デフォルト: 100
- 範囲 : -1 ~ 3,600,000
- 再起動が必要 :いいえ
指定された継続時間(ms)を超えるログ出力ステートメントを記録します。 無効にするには -1 に設定し、すべてのステートメントをログに記録するには0に設定します。
トランザクションあたりの最大ロック数
- 型 :整数
- デフォルト: 64
- 範囲 :10 ~ 1,024
- 再起動が必要 :はい
トランザクションごとに利用可能なオブジェクトロックの平均数。
max_prepared_transactions
- 型 :整数
- デフォルト: 0
- 範囲 :0 ~ 500
- 再起動が必要 :はい
「準備済み」状態での最大トランザクション数。 2フェーズコミットを無効にするには、0(デフォルト)に設定してください。 アプリケーションで PREPARE TRANSACTION を使用する場合にのみ、0 以外の値に設定してください。 有効にした場合は、この値を max_connections と同じ値に設定してください。
wal_level
- 型: enum
- デフォルト: 論理値
- 有効な値 :replica、logical
- 再起動が必要 :はい
WALの詳細度を制御します。「logical」は論理レプリケーションとCDCをサポートし、「replica」は物理レプリケーションのみをサポートします。
「論理」から「レプリカ」への変更を行うと、既存の論理レプリケーションスロットが使用できなくなる可能性があります。 この値を変更する前に、CDC または論理レプリケーションのワークロードが実行されていないことを確認してください。
max_wal_senders
- 型 :整数
- デフォルト: 10
- 範囲 :10 ~ 40
- 再起動が必要 :はい
同時に実行できるWAL送信プロセスの最大数。 各論理レプリケーションのサブスクライバーおよび物理スタンバイには、1つの送信者が必要です。
max_replication_slots
- 型 :整数
- デフォルト: 10
- 範囲 :10 ~ 40
- 再起動が必要 :はい
最大レプリケーションスロット数。 論理レプリケーションのサブスクライバー1つにつき、1つのスロットが必要です。 使用されていないスロットは速やかに削除してください。放置されたスロットはWALを保持したままとなり、ディスク容量を消費してしまう可能性があります。 max_wal_senders >= max_replication_slots の条件を満たす必要があります。
max_worker_processes
- 型 :整数
- デフォルト: 8
- 最低人数 :8人
- 最大 :メモリ階層型。ホストのRAM構成に応じて、8、16、24、または32
- 再起動が必要 :はい
論理レプリケーションおよびその他のバックグラウンドタスクで共有される、バックグラウンドワーカーの総予算。
| ホストRAM | max_worker_processes の最大値 |
|---|---|
| 16未満 GiB | 8 |
| 16 ~ 31 GiB | 16 |
| 32 – 63 GiB | 24 |
| 64 GiB 以上 | 32 |
max_worker_processes >= max_logical_replication_workers + 4 という条件を満たす必要があります。
max_logical_replication_workers
- 型 :整数
- デフォルト: 4
- 最小 :4
- 最大 :メモリ階層型 — ホストのRAM構成に応じて4、12、20、または28
- 再起動が必要 :はい
論理レプリケーションに対応可能なワーカー。 最大値は max_worker_processes のティア - 4 です:
| ホストRAM | max_logical_replication_workers の最大値 |
|---|---|
| 16未満 GiB | 4 |
| 16 ~ 31 GiB | 12 |
| 32 – 63 GiB | 20 |
| 64 GiB 以上 | 28 |
pgaudit.log
- 型 :文字列(カンマ区切りのイベントクラス)
- デフォルト: "ddl"
- 再起動が必要 :いいえ
監査対象となるステートメントクラスのカンマ区切りリスト:
| クラス | 記録された発言 |
|---|---|
| 読み取り | SELECT、COPY FROM |
| 書き込み | INSERT、UPDATE、DELETE、TRUNCATE、COPY TO |
| 関数 | 関数呼び出しとDOブロック |
| 役割 | GRANT、REVOKE、ロールおよび権限の変更 |
| DDL | ロールに関連するステートメントを除くすべてのDDL |
| その他 | DISCARD、FETCH、CHECKPOINT、VACUUM、SET |
| misc_set | SET文のみ |
| すべて | これまでのすべてのステートメントクラス |
| なし | セッション監査ログの記録を無効にします |
「all」を使用したり、ビジー状態のインスタンスに書き込みを行ったりすると、ログの量が多くなる可能性があります。
pgaudit.role
- 型: 文字列
- デフォルト: "" (空 — オブジェクトレベルの監査ログ記録が無効)
- 再起動が必要 :いいえ
オブジェクトレベルの監査ログ記録に使用されるロールです。 pgAudit は、このロールが権限を持つオブジェクトに対する操作をログに記録します。 このパラメータを設定する前に、そのロールが存在している必要があります。