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
- 재시작 필요: 아니요
지정된 지속 시간(ms)을 초과하는 로그 문장을 기록합니다. 비활성화하려면 -1 로 설정하고, 모든 문장을 기록하려면 0으로 설정하십시오.
트랜잭션당 최대 잠금 수
- 유형: 정수
- 기본값: 64
- 범위: 10 – 1,024
- 재시작 필요: 예
트랜잭션당 사용할 수 있는 객체 잠금의 평균 개수.
max_prepared_transactions
- 유형: 정수
- 기본값: 0
- 범위: 0 – 500
- 재시작 필요: 예
준비 상태에서의 최대 트랜잭션 수. 2단계 커밋을 비활성화하려면 0(기본값)으로 설정하십시오. 애플리케이션에서 PREPARE TRANSACTION을 사용하는 경우에만 0이 아닌 값으로 설정하십시오. 이 기능을 활성화한 경우, 이 값을 max_connections와 동일하게 유지하십시오.
wal_level
- 유형: 열거형
- 기본값: 논리형
- 유효한 값: 레플리카, 논리적
- 재시작 필요: 예
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 문만 |
| 모두 | 앞서 언급된 모든 문장 클래스 |
| 없음 | 세션 감사 로깅을 비활성화합니다 |
'all'을 사용하거나 'write on busy' 인스턴스를 사용하면 로그 양이 크게 늘어날 수 있습니다.
pgaudit.role
- 유형: 문자열
- 기본값: "" (비어 있음 — 객체 수준 감사 로깅이 비활성화됨)
- 재시작 필요: 아니요
객체 수준 감사 로깅에 사용되는 역할입니다. ‘ pgAudit ’은 이 역할이 권한을 가진 객체에 대한 활동을 기록합니다. 이 매개변수를 설정하기 전에 해당 역할이 이미 존재해야 합니다.