Modification de la configuration d' PostgreSQL
Génération 2
Vous pouvez configurer les paramètres de la base de données au moment de l'approvisionnement et sur une instance en cours d'exécution à l'aide de l'API ou de l'interface de ligne de commande (CLI) avec IBM Cloud® Databases for PostgreSQL Gen 2. Certains paramètres nécessitent un redémarrage progressif (chaque composant est redémarré un par un); d'autres sont appliqués immédiatement, sans interruption de service.
Provisionnement d'une nouvelle instance avec des paramètres personnalisés
N'incluez que les paramètres que vous souhaitez définir.
Provisionnement à l'aide de l'interface de ligne de commande (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"
}
}
}
}'
Provisionnement via 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"
}
}
}
}
}'
Mise à jour des paramètres sur une instance en cours d'exécution
N'incluez que les paramètres que vous souhaitez modifier; tous les autres restent inchangés. Les valeurs de paramètres non valides sont rejetées avec une erreur 4xx.
Mise à jour à l'aide de l'interface 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"
}
}
}
}'
Mise à jour via 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"
}
}
}
}
}'
Configuration des paramètres d' PostgreSQL
max_connections
- Type: nombre entier
- Valeur par défaut: 115
- Nombre de mots: 25 à 500
- Redémarrage requis: Oui
Nombre maximal de connexions client simultanées. La valeur par défaut de 115 réserve 15 connexions à la surveillance de la plateforme; 100 sont disponibles pour les charges de travail des clients.
log_connections
- Type: booléen
- Valeur par défaut: false
- Redémarrage requis: Non
Enregistre chaque connexion réussie, ce qui est utile pour les pistes d'audit de conformité (par exemple, SOC 2 ou PCI DSS).
log_disconnections
- Type: booléen
- Valeur par défaut: false
- Redémarrage requis: Non
Enregistre chaque session lors de la déconnexion, y compris sa durée.
log_min_duration_statement
- Type: nombre entier (en millisecondes)
- Valeur par défaut: 100
- Fourchette: -1 – 3 600 000
- Redémarrage requis: Non
Enregistre les instructions dépassant la durée spécifiée (ms). Définissez la valeur sur -1 pour désactiver la journalisation, ou sur 0 pour consigner toutes les instructions.
max_locks_per_transaction
- Type: nombre entier
- Valeur par défaut: 64
- Plage: 10 – 1 024
- Redémarrage requis: Oui
Nombre moyen de verrous d'objet disponibles par transaction.
max_prepared_transactions
- Type: nombre entier
- Valeur par défaut: 0
- Plage: 0 – 500
- Redémarrage requis: Oui
Nombre maximal de transactions à l'état préparé. Définissez cette valeur sur 0 (par défaut) pour désactiver la validation en deux phases. Ne définissez cette valeur sur un nombre différent de zéro que si votre application utilise PREPARE TRANSACTION. Lorsque cette option est activée, veillez à ce que cette valeur soit égale à max_connections.
wal_level
- Type: énumération
- Par défaut: logique
- Valeurs valides: réplique, logique
- Redémarrage requis: Oui
Contrôle le niveau de détail du WAL. logical prend en charge la réplication logique et le CDC; replica prend uniquement en charge la réplication physique.
La réduction du nombre de répliques par rapport au nombre de slots de réplication logiques peut rendre les slots de réplication logiques existants inutilisables. Assurez-vous qu'aucune charge de travail CDC ou de réplication logique n'est active avant de modifier cette valeur.
max_wal_senders
- Type: nombre entier
- Valeur par défaut: 10
- Fourchette: 10 – 40
- Redémarrage requis: Oui
Nombre maximal de processus d'envoi WAL simultanés. Chaque abonné à la réplication logique et chaque instance de secours physique nécessite un expéditeur.
max_replication_slots
- Type: nombre entier
- Valeur par défaut: 10
- Fourchette: 10 – 40
- Redémarrage requis: Oui
Nombre maximal d'emplacements de réplication. Chaque abonné à la réplication logique nécessite un emplacement. Supprimez rapidement les emplacements inutilisés, car ceux-ci conservent le journal WAL et peuvent épuiser l'espace disque. La condition suivante doit être satisfaite : max_wal_senders >= max_replication_slots.
max_worker_processes
- Type: nombre entier
- Valeur par défaut: 8
- Minimum: 8
- Maximum: à plusieurs niveaux de mémoire. 8, 16, 24 ou 32, selon la configuration de la mémoire vive (RAM) de l'hôte
- Redémarrage requis: Oui
Budget total alloué aux processus d’arrière-plan, réparti entre la réplication logique et les autres tâches d’arrière-plan.
| Mémoire vive (RAM) de l'hôte | Valeur maximale de max_worker_processes |
|---|---|
| Moins de 16 GiB | 8 |
| 16 – 31 GiB | 16 |
| 32 – 63 GiB | 24 |
| 64 GiB ou plus | 32 |
La condition suivante doit être satisfaite : max_worker_processes >= max_logical_replication_workers + 4.
max_logical_replication_workers
- Type: nombre entier
- Valeur par défaut: 4
- Minimum: 4
- Maximum: niveaux de mémoire — 4, 12, 20 ou 28 selon la configuration de la RAM de l’hôte
- Redémarrage requis: Oui
Workers disponibles pour la réplication logique. La valeur maximale correspond au niveau max_worker_processes - 4 :
| Mémoire vive (RAM) de l'hôte | Valeur maximale de max_logical_replication_workers |
|---|---|
| Moins de 16 GiB | 4 |
| 16 – 31 GiB | 12 |
| 32 – 63 GiB | 20 |
| 64 GiB ou plus | 28 |
pgaudit.log
- Type: chaîne de caractères (classes d'événements séparées par des virgules)
- Par défaut: ddl
- Redémarrage requis: Non
Liste, séparée par des virgules, des classes d’instructions à auditer :
| Classe | Déclarations enregistrées |
|---|---|
| lecture | SELECT, COPY FROM |
| écriture | INSERT, UPDATE, DELETE, TRUNCATE, COPY TO |
| fonction | Appels de fonction et blocs DO |
| rôle | GRANT, REVOKE, modifications des rôles et des privilèges |
| DDL | Toutes les instructions DDL, à l'exception de celles liées aux rôles |
| divers | DISCARD, FETCH, CHECKPOINT, VACUUM, SET |
| misc_set | Instructions SET uniquement |
| tout | Toutes les classes d'énoncés précédentes |
| aucun | Désactive la journalisation d'audit de session |
L'utilisation des instances all ou write on busy peut générer des volumes de journaux importants.
pgaudit.role
- Type: chaîne de caractères
- Valeur par défaut: (vide — journalisation des audits au niveau des objets désactivée)
- Redémarrage requis: Non
Rôle utilisé pour la journalisation des audits au niveau des objets. Le rôle pgAudit enregistre les activités sur les objets pour lesquels ce rôle dispose de privilèges. Le rôle doit exister avant que vous ne définissiez ce paramètre.