Modifica della configurazione di PostgreSQL
Gen 2
È possibile configurare i parametri del database al momento del provisioning e su un'istanza in esecuzione utilizzando l'API o la CLI c IBM Cloud® Databases for PostgreSQL e Gen 2. Alcuni parametri richiedono un riavvio graduale (ogni nodo viene riavviato uno alla volta); altri vengono applicati immediatamente senza tempi di inattività.
Configurazione di una nuova istanza con parametri personalizzati
Includi solo i parametri che desideri impostare.
Configurazione tramite 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"
}
}
}
}'
Provisioning tramite l'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"
}
}
}
}
}'
Aggiornamento dei parametri su un'istanza in esecuzione
Includi solo i parametri che desideri modificare; tutti gli altri rimangono invariati. I valori dei parametri non validi vengono rifiutati con un errore di tipo " 4xx ".
Aggiornamento con la 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"
}
}
}
}'
Aggiornamento tramite l'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"
}
}
}
}
}'
Configurazione dei parametri di PostgreSQL
max_connections
- Tipo: intero
- Valore predefinito: 115
- Intervallo: da 25 a 500
- È necessario riavviare il sistema: Sì
Numero massimo di connessioni simultanee dei client. Il valore predefinito di 115 riserva 15 connessioni per il monitoraggio della piattaforma; ne rimangono 100 disponibili per i carichi di lavoro dei client.
log_connessioni
- Tipo: booleano
- Impostazione predefinita: false
- È necessario riavviare il sistema: No
Registra ogni connessione riuscita, il che risulta utile ai fini dei registri di audit di conformità (ad esempio, SOC 2 o PCI DSS).
log_disconnessioni
- Tipo: booleano
- Impostazione predefinita: false
- È necessario riavviare il sistema: No
Registra ogni sessione al momento della disconnessione, compresa la durata della sessione.
log_min_durata_istruzione
- Tipo: numero intero (millisecondi)
- Valore predefinito: 100
- Intervallo: -1 – 3.600.000
- È necessario riavviare il sistema: No
Registra le istruzioni che superano la durata specificata (ms). Impostare su -1 per disabilitare, su 0 per registrare tutte le istruzioni.
max_locks_per_transazione
- Tipo: intero
- Valore predefinito: 64
- Intervallo: da 10 a 1.024
- È necessario riavviare il sistema: Sì
Numero medio di blocchi sugli oggetti disponibili per transazione.
max_prepared_transactions
- Tipo: intero
- Valore predefinito: 0
- Intervallo: 0 – 500
- È necessario riavviare il sistema: Sì
Numero massimo di transazioni nello stato "preparato". Impostare su 0 (impostazione predefinita) per disabilitare il commit in due fasi. Impostare un valore diverso da zero solo se l'applicazione utilizza PREPARE TRANSACTION. Quando questa opzione è abilitata, mantenere questo valore uguale a max_connections.
wal_level
- Tipo: enum
- Impostazione predefinita: logico
- Valori validi: replica, logico
- È necessario riavviare il sistema: Sì
Controlla il livello di dettaglio del WAL. Il tipo “logical” supporta la replica logica e il CDC; il tipo “replica” supporta solo la replica fisica.
La riduzione da logico a replica può rendere inutilizzabili gli slot di replica logica esistenti. Assicurarsi che non vi siano carichi di lavoro CDC o di replica logica attivi prima di modificare questo valore.
max_wal_senders
- Tipo: intero
- Valore predefinito: 10
- Intervallo: 10 – 40
- È necessario riavviare il sistema: Sì
Numero massimo di processi di invio WAL simultanei. Ogni sottoscrittore di replica logica e ogni standby fisico richiedono un mittente.
max_replication_slots
- Tipo: intero
- Valore predefinito: 10
- Intervallo: 10 – 40
- È necessario riavviare il sistema: Sì
Numero massimo di slot di replica. Ogni destinatario della replica logica richiede uno slot. Eliminare tempestivamente gli slot inutilizzati, poiché quelli abbandonati conservano i dati WAL e possono esaurire lo spazio su disco. È necessario che max_wal_senders sia maggiore o uguale a max_replication_slots.
max_worker_processes
- Tipo: intero
- Valore predefinito: 8
- Minimo: 8
- Massimo: a livelli di memoria. 8, 16, 24 o 32 a seconda della configurazione della RAM dell'host
- È necessario riavviare il sistema: Sì
Budget totale per i processi in background, ripartito tra la replica logica e altre attività in background.
| RAM dell'host | Valore massimo di max_worker_processes |
|---|---|
| Meno di 16 GiB | 8 |
| 16 – 31 GiB | 16 |
| 32 – 63 GiB | 24 |
| 64 GiB o più | 32 |
È necessario che valga max_worker_processes >= max_logical_replication_workers + 4.
max_logical_replication_workers
- Tipo: intero
- Valore predefinito: 4
- Minimo: 4
- Massimo: a livelli di memoria — 4, 12, 20 o 28 a seconda della configurazione della RAM dell'host
- È necessario riavviare il sistema: Sì
Lavoratori disponibili per la replica logica. Il valore massimo è quello del livello max_worker_processes - 4:
| RAM dell'host | Valore massimo di max_logical_replication_workers |
|---|---|
| Meno di 16 GiB | 4 |
| 16 – 31 GiB | 12 |
| 32 – 63 GiB | 20 |
| 64 GiB o più | 28 |
pgaudit.log
- Tipo: stringa (classi di eventi separate da virgole)
- Impostazione predefinita: "ddl"
- È necessario riavviare il sistema: No
Elenco, separato da virgole, delle classi di istruzioni da sottoporre a verifica:
| Classe | Dichiarazioni registrate |
|---|---|
| leggi | SELECT, COPY FROM |
| scrivi | INSERT, UPDATE, DELETE, TRUNCATE, COPY TO |
| funzione | Chiamate di funzione e blocchi DO |
| ruolo | CONCESSIONE, REVOCA, modifiche a ruoli e privilegi |
| DDL | Tutte le istruzioni DDL, ad eccezione di quelle relative ai ruoli |
| Varie | DISCARD, FETCH, CHECKPOINT, VACUUM, SET |
| misc_set | Solo istruzioni SET |
| tutti | Tutte le classi di istruzioni precedenti |
| nessuno | Disattiva la registrazione di audit della sessione |
L'utilizzo delle istanze "all" o "write on busy" può generare volumi elevati di log.
pgaudit.role
- Tipo: stringa
- Impostazione predefinita: "" (vuoto — registrazione degli audit a livello di oggetto disabilitata)
- È necessario riavviare il sistema: No
Ruolo utilizzato per la registrazione degli audit a livello di oggetto. Il servizio " pgAudit " registra le attività relative agli oggetti su cui questo ruolo dispone di privilegi. Il ruolo deve già esistere prima di impostare questo parametro.