變更您的 PostgreSQL 設定
第 2 代
在 IBM Cloud® Databases for PostgreSQL Gen 2 中,您可以在配置時,或透過 API 或 CLI 在運行中的實例上設定資料庫參數。 某些參數需要進行滾動式重啟 (即逐個重啟每個節點);其他參數則會立即生效,且不會造成服務中斷。
使用自訂參數建立新執行個體
請僅包含您想要設定的參數。
使用 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
- 是否需要重新啟動:否
記錄超過指定持續時間(毫秒)的陳述式。 設定為 -1 以停用,設定為 0 以記錄所有語句。
每筆交易的最大鎖定數
- 類型:整數
- 預設值:64
- 範圍:10 – 1,024
- 是否需要重新啟動:是
每個交易可用的物件鎖平均數量。
max_prepared_transactions
- 類型:整數
- 預設值:0
- 範圍:0 – 500
- 是否需要重新啟動:是
在「已準備」狀態下的最大交易數。 設定為 0(預設值)以停用兩階段提交。 僅當您的應用程式使用 PREPARE TRANSACTION 時,才將此值設定為非零值。 啟用此功能時,請將此值設定為與 max_connections 相同。
wal_level
- 類型:enum
- 預設值:邏輯型
- 有效值:副本、邏輯
- 是否需要重新啟動:是
控制 WAL 的詳細程度。logical 支援邏輯複製和 CDC;replica 僅支援實體複製。
將邏輯複本降級為實體複本,可能會導致現有的邏輯複製槽無法使用。 在變更此值之前,請確保沒有任何 CDC 或邏輯複製工作負載處於活動狀態。
max_wal_senders
- 類型:整數
- 預設值:10
- 範圍:10 – 40
- 是否需要重新啟動:是
最大同時運作的 WAL 發送程序數量。 每個邏輯複製訂閱者和實體備援伺服器都需要一個發送者。
max_replication_slots
- 類型:整數
- 預設值:10
- 範圍:10 – 40
- 是否需要重新啟動:是
最大複製槽數。 每個邏輯複製訂閱者都需要一個槽位。 請盡快刪除未使用的主機槽,因為閒置的主機槽會保留 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 區塊 |
| 角色 | 授予、撤銷、角色與權限變更 |
| DDL | 所有 DDL 語句(與角色相關的語句除外) |
| 其他 | DISCARD、FETCH、CHECKPOINT、VACUUM、SET |
| misc_set | 僅限 SET 語句 |
| 全部 | 所有先前的陳述類別 |
| 無 | 停用工作階段稽核記錄 |
在「全用」或「寫入中」狀態的實例上執行操作,可能會產生大量的日誌。
pgaudit.role
- 類型:字串
- 預設值:""(為空 — 物件層級的稽核記錄已停用)
- 是否需要重新啟動:否
用於物件層級稽核記錄的角色。pgAudit 會記錄此角色具有權限之物件上的活動。 在設定此參數之前,該角色必須已存在。