Cambiar la configuración de PostgreSQL
Gen 2
Puedes configurar los parámetros de la base de datos en el momento del aprovisionamiento y en una instancia en ejecución mediante la API o la CLI c IBM Cloud® Databases for PostgreSQL e Gen 2. Algunos parámetros requieren un reinicio progresivo (cada miembro se reinicia de uno en uno); otros se aplican de inmediato sin tiempo de inactividad.
Aprovisionamiento de una nueva instancia con parámetros personalizados
Incluye solo los parámetros que quieras configurar.
Aprovisionamiento mediante la 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"
}
}
}
}'
Aprovisionamiento mediante la 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"
}
}
}
}
}'
Actualización de parámetros en una instancia en ejecución
Incluye solo los parámetros que quieras cambiar; el resto no se modifican. Los valores de parámetro no válidos se rechazan con un error 4xx.
Actualización 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"
}
}
}
}'
Actualización mediante la 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"
}
}
}
}
}'
Configuración de los parámetros de PostgreSQL
max_connections
- Tipo: entero
- Por defecto: 115
- Rango: 25 – 500
- Es necesario reiniciar: Sí
Número máximo de conexiones simultáneas de clientes. El valor predeterminado de 115 reserva 15 conexiones para la supervisión de la plataforma; quedan 100 disponibles para las cargas de trabajo de los clientes.
log_connections
- Tipo: booleano
- Por defecto: false
- ¿Es necesario reiniciar el sistema? No
Registra cada conexión realizada con éxito, lo cual resulta útil para los registros de auditoría de cumplimiento (por ejemplo, SOC 2 o PCI DSS).
log_disconnections
- Tipo: booleano
- Por defecto: false
- ¿Es necesario reiniciar el sistema? No
Registra cada sesión al desconectarse, incluida la duración de la misma.
log_min_duration_statement
- Tipo: entero (milisegundos)
- Valor predeterminado: 100
- Rango: -1 – 3 600 000
- ¿Es necesario reiniciar el sistema? No
Registra las entradas que superen la duración especificada (ms). Establecer en -1 para desactivarlo, y en 0 para registrar todas las instrucciones.
max_locks_per_transaction
- Tipo: entero
- Por defecto: 64
- Rango: 10 – 1.024
- Es necesario reiniciar: Sí
Número medio de bloqueos de objetos disponibles por transacción.
max_prepared_transactions
- Tipo: entero
- Valor por defecto: 0
- Rango: 0 – 500
- Es necesario reiniciar: Sí
Número máximo de transacciones en el estado preparado. Establezca el valor en 0 (por defecto) para desactivar la confirmación en dos fases. Establece un valor distinto de cero únicamente si tu aplicación utiliza PREPARE TRANSACTION. Cuando esté habilitado, mantén este valor igual a max_connections.
wal_level
- Tipo: enumeración
- Por defecto: lógico
- Valores válidos: réplica, lógico
- Es necesario reiniciar: Sí
Controla el nivel de detalle de WAL. logical admite la replicación lógica y CDC; replica solo admite la replicación física.
La reducción de un logico a una réplica puede hacer que las ranuras de replicación lógicas existentes queden inutilizables. Asegúrese de que no haya ninguna carga de trabajo de CDC o de replicación lógica activa antes de modificar este valor.
max_wal_senders
- Tipo: entero
- Por defecto: 10
- Rango: 10 – 40
- Es necesario reiniciar: Sí
Número máximo de procesos emisores de WAL simultáneos. Cada suscriptor de replicación lógica y cada sistema en espera físico requiere un emisor.
max_replication_slots
- Tipo: entero
- Por defecto: 10
- Rango: 10 – 40
- Es necesario reiniciar: Sí
Número máximo de ranuras de replicación. Cada suscriptor de replicación lógica requiere una ranura. Elimina rápidamente los espacios no utilizados, ya que los espacios abandonados conservan el WAL y pueden agotar el espacio en disco. Debe cumplirse la condición max_wal_senders >= max_replication_slots.
max_worker_processes
- Tipo: entero
- Por defecto: 8
- Mínimo: 8
- Máximo: por niveles de memoria. 8, 16, 24 o 32, dependiendo de la configuración de RAM del host
- Es necesario reiniciar: Sí
Presupuesto total para los procesos en segundo plano, compartido entre la replicación lógica y otras tareas en segundo plano.
| RAM del servidor | Valor máximo de max_worker_processes |
|---|---|
| Menos de 16 GiB | 8 |
| 16 – 31 GiB | 16 |
| 32 – 63 GiB | 24 |
| 64 GiB o más | 32 |
Debe cumplirse la condición max_worker_processes >= max_logical_replication_workers + 4.
max_logical_replication_workers
- Tipo: entero
- Por defecto: 4
- Mínimo: 4
- Máximo: Niveles de memoria: 4, 12, 20 o 28, dependiendo de la configuración de RAM del host
- Es necesario reiniciar: Sí
Trabajadores disponibles para la replicación lógica. El máximo es el nivel max_worker_processes - 4:
| RAM del servidor | Máximo max_logical_replication_workers |
|---|---|
| Menos de 16 GiB | 4 |
| 16 – 31 GiB | 12 |
| 32 – 63 GiB | 20 |
| 64 GiB o más | 28 |
pgaudit.log
- Tipo: cadena (clases de eventos separadas por comas)
- Por defecto: ddl
- ¿Es necesario reiniciar el sistema? No
Lista, separada por comas, de clases de sentencias que se deben auditar:
| Clase | Declaraciones registradas |
|---|---|
| leer | SELECT, COPY FROM |
| escribir | INSERTAR, ACTUALIZAR, BORRAR, TRUNCAR, COPIAR A |
| function | Llamadas a funciones y bloques DO |
| rol | CONCESIÓN, REVOCACIÓN, cambios en roles y privilegios |
| DDL | Todo el lenguaje DDL, excepto las sentencias relacionadas con los roles |
| Otros | DISCARD, FETCH, CHECKPOINT, VACUUM, SET |
| misc_set | Solo instrucciones SET |
| todo | Todas las clases de enunciados anteriores |
| ninguno | Desactiva el registro de auditoría de sesiones |
El uso de instancias all o write on busy puede generar grandes volúmenes de registros.
pgaudit.role
- Tipo: cadena
- Valor predeterminado: "" (vacío; registro de auditoría a nivel de objeto desactivado)
- ¿Es necesario reiniciar el sistema? No
Rol utilizado para el registro de auditoría a nivel de objeto. pgAudit registra la actividad en los objetos sobre los que este rol tiene privilegios. El rol debe existir antes de configurar este parámetro.