Alterando a configuração do PostgreSQL
2ª geração
É possível configurar os parâmetros do banco de dados no momento do provisionamento e em uma instância em execução, utilizando a API ou a CLI com o serviço “ IBM Cloud® Databases for PostgreSQL ” Gen 2. Alguns parâmetros exigem uma reinicialização gradual (cada membro é reiniciado um de cada vez); outros são aplicados imediatamente, sem tempo de inatividade.
Provisionamento de uma nova instância com parâmetros personalizados
Inclua apenas os parâmetros que você deseja definir.
Provisionamento por meio da 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"
}
}
}
}'
Provisionamento por meio da 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"
}
}
}
}
}'
Atualização de parâmetros em uma instância em execução
Inclua apenas os parâmetros que deseja alterar; todos os demais permanecem inalterados. Valores inválidos de parâmetros são rejeitados com um erro do tipo “ 4xx ”.
Atualizando com a 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"
}
}
}
}'
Atualização por meio da 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"
}
}
}
}
}'
Configurando os parâmetros d PostgreSQL
MAX_CONNECTIONS
- Tipo: inteiro
- Padrão: 115
- Intervalo: 25 – 500
- É necessário reiniciar: Sim
Número máximo de conexões simultâneas de clientes. O valor padrão de 115 reserva 15 conexões para o monitoramento da plataforma; 100 ficam disponíveis para as cargas de trabalho dos clientes.
log_connections
- Tipo: booleano
- Padrão: false
- É necessário reiniciar: Não
Registra cada conexão bem-sucedida, o que é útil para registros de auditoria de conformidade (por exemplo, SOC 2 ou PCI DSS).
log_desconexões
- Tipo: booleano
- Padrão: false
- É necessário reiniciar: Não
Registra cada sessão ao se desconectar, incluindo a duração da sessão.
log_min_duration_statement
- Tipo: inteiro (milissegundos)
- Padrão: 100
- Faixa: -1 – 3.600.000
- É necessário reiniciar: Não
Registra as instruções que excedem a duração especificada (ms). Defina como “ -1 ” para desativar e “0” para registrar todas as instruções.
max_locks_per_transaction
- Tipo: inteiro
- Padrão: 64
- Intervalo: 10 – 1.024
- É necessário reiniciar: Sim
Número médio de bloqueios de objeto disponíveis por transação.
max_prepared_transactions
- Tipo: inteiro
- Padrão: 0
- Intervalo: 0 – 500
- É necessário reiniciar: Sim
Número máximo de transações no estado “preparado”. Defina como 0 (padrão) para desativar o commit em duas fases. Defina um valor diferente de zero somente se o seu aplicativo utilizar o comando PREPARE TRANSACTION. Quando ativado, mantenha esse valor igual a max_connections.
wal_level
- Tipo: enum
- Padrão: lógico
- Valores válidos: réplica, lógico
- É necessário reiniciar: Sim
Controla o nível de detalhamento do WAL. A instância “logical” oferece suporte à replicação lógica e ao CDC; a instância “replica” oferece suporte apenas à replicação física.
A redução de um slot lógico para uma réplica pode tornar os slots de replicação lógica existentes inutilizáveis. Certifique-se de que não haja nenhuma carga de trabalho de CDC ou de replicação lógica ativa antes de alterar esse valor.
max_wal_senders
- Tipo: inteiro
- Padrão: 10
- Intervalo: 10 – 40
- É necessário reiniciar: Sim
Número máximo de processos remetentes do WAL em simultâneo. Cada assinante de replicação lógica e cada instância em espera física requerem um remetente.
max_replication_slots
- Tipo: inteiro
- Padrão: 10
- Intervalo: 10 – 40
- É necessário reiniciar: Sim
Número máximo de slots de replicação. Cada assinante de replicação lógica requer um slot. Exclua imediatamente os slots não utilizados, pois os slots abandonados retêm o WAL e podem esgotar o espaço em disco. É necessário que max_wal_senders seja maior ou igual a max_replication_slots.
max_worker_processes
- Tipo: inteiro
- Padrão: 8
- Mínimo: 8
- Máximo: Estratificado por memória. 8, 16, 24 ou 32, dependendo do tipo de RAM do host
- É necessário reiniciar: Sim
Orçamento total para processos em segundo plano, dividido entre a replicação lógica e outras tarefas em segundo plano.
| Memória RAM do host | Máximo de max_worker_processes |
|---|---|
| Menos de 16 GiB | 8 |
| 16 – 31 GiB | 16 |
| 32 – 63 GiB | 24 |
| 64 GiB ou mais | 32 |
{: caption="Limites do max_worker_processes em função da memória RAM" caption-side="bottom"} |
É necessário que max_worker_processes seja maior ou igual a max_logical_replication_workers + 4.
max_logical_replication_workers
- Tipo: inteiro
- Padrão: 4
- Mínimo: 4
- Máximo: Com camadas de memória — 4, 12, 20 ou 28, dependendo da configuração de RAM do host
- É necessário reiniciar: Sim
Trabalhadores disponíveis para replicação lógica. O valor máximo é o nível 4 de max_worker_processes:
| Memória RAM do host | Máximo de max_logical_replication_workers |
|---|---|
| Menos de 16 GiB | 4 |
| 16 – 31 GiB | 12 |
| 32 – 63 GiB | 20 |
| 64 GiB ou mais | 28 |
{: caption="Limites do max_logical_replication_workers em função da memória RAM" caption-side="bottom"} |
pgaudit.log
- Tipo: string (classes de eventos separadas por vírgulas)
- Padrão: "ddl"
- É necessário reiniciar: Não
Lista separada por vírgulas das classes de instruções a serem auditadas:
| Classe | Declarações registradas |
|---|---|
| ler | SELECT, COPY FROM |
| gravar | INSERT, UPDATE, DELETE, TRUNCATE, COPY TO |
| função | Chamadas de função e blocos DO |
| função | CONCEDER, REVOGAR, alterações de funções e privilégios |
| DDL | Todas as instruções DDL, exceto as relacionadas a funções |
| Diversos | DISCARD, FETCH, CHECKPOINT, VACUUM, SET |
| misc_set | Apenas instruções SET |
| todos | Todas as classes de instruções anteriores |
| Nenhum | Desativa o registro de auditoria de sessão |
O uso das opções “all” ou “write on busy” pode gerar grandes volumes de registros.
pgaudit.role
- Tipo: string
- Padrão: "" (vazio — registro de auditoria no nível do objeto desativado)
- É necessário reiniciar: Não
Função utilizada para o registro de auditoria no nível do objeto. O pgAudit registra as atividades nos objetos nos quais essa função possui privilégios. A função deve existir antes de você definir esse parâmetro.