Ändern der Konfiguration von PostgreSQL

Gen 2

Mit IBM Cloud® Databases for PostgreSQL Gen 2 können Sie Datenbankparameter sowohl bei der Bereitstellung als auch bei einer laufenden Instanz über die API oder die CLI konfigurieren. Einige Parameter erfordern einen schrittweisen Neustart (jedes Mitglied wird nacheinander neu gestartet); andere werden sofort und ohne Ausfallzeit angewendet.

Bereitstellung einer neuen Instanz mit benutzerdefinierten Parametern

Geben Sie nur die Parameter an, die Sie festlegen möchten.

Bereitstellung über die 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"
        }
      }
    }
  }'

Bereitstellung über die 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"
          }
        }
      }
    }
  }'

Aktualisieren von Parametern auf einer laufenden Instanz

Geben Sie nur die Parameter an, die Sie ändern möchten; alle anderen bleiben unverändert. Ungültige Parameterwerte werden mit einem 4xx-Fehler zurückgewiesen.

Über die Befehlszeilenschnittstelle (CLI) aktualisieren

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"
        }
      }
    }
  }'

Aktualisierung über die 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"
          }
        }
      }
    }
  }'

Konfigurieren der Parameter von PostgreSQL

max_connections

  • Typ: Ganzzahl
  • Standard: 115
  • Umfang: 25 – 500
  • Neustart erforderlich: Ja

Maximale Anzahl gleichzeitiger Client-Verbindungen. Der Standardwert von 115 reserviert 15 Verbindungen für die Plattformüberwachung; 100 stehen für Client-Workloads zur Verfügung.

log_connections

  • Typ: Boolesch
  • Standard: false
  • Neustart erforderlich: Nein

Jede erfolgreiche Verbindung wird protokolliert, was für Compliance-Prüfpfade (z. B. SOC 2 oder PCI DSS) nützlich ist.

log_disconnections

  • Typ: Boolesch
  • Standard: false
  • Neustart erforderlich: Nein

Protokolliert jede Sitzung bei der Trennung der Verbindung, einschließlich der Sitzungsdauer.

log_min_duration_statement

  • Typ: Ganzzahl (Millisekunden)
  • Standardwert: 100
  • Umfang: -1 – 3.600.000
  • Neustart erforderlich: Nein

Protokolliert Anweisungen, die die angegebene Dauer (ms) überschreiten. Setzen Sie den Wert auf -1, um die Funktion zu deaktivieren, und auf 0, um alle Anweisungen zu protokollieren.

max_locks_per_transaction

  • Typ: Ganzzahl
  • Standard: 64
  • Bereich: 10 – 1.024
  • Neustart erforderlich: Ja

Durchschnittliche Anzahl der pro Transaktion verfügbaren Objektsperren.

max_prepared_transactions

  • Typ: Ganzzahl
  • Standard: 0
  • Umfang: 0 – 500
  • Neustart erforderlich: Ja

Maximale Anzahl von Transaktionen im vorbereiteten Zustand. Setzen Sie den Wert auf 0 (Standard), um das zweistufige Commit zu deaktivieren. Setzen Sie diesen Wert nur dann auf einen Wert ungleich Null, wenn Ihre Anwendung PREPARE TRANSACTION verwendet. Wenn diese Option aktiviert ist, sollte dieser Wert dem Wert von max_connections entsprechen.

shared_buffers

  • Typ: Ganzzahl (8- kB-Blöcke)
  • Standard: ~25 % des Arbeitsspeichers der Host-Variante
  • Bereich: ~25 % RAM – ~40 % RAM
  • Neustart erforderlich: Ja

Größe des Shared-Memory-Pools in 8- kB-Blöcken. 1 GiB = 131.072 Blöcke. Die Plattform legt den Standardwert auf ca. 25 % des Host-RAMs fest, wobei der Höchstwert bei ca. 40 % liegt. Der Wert wird bei einer Skalierung der Infrastruktur automatisch angepasst.

wal_level

  • Typ: Aufzählung
  • Standard: logisch
  • Gültige Werte: Replik, logisch
  • Neustart erforderlich: Ja

Steuert den Ausführlichkeitsgrad der WAL. logical unterstützt logische Replikation und CDC; replica unterstützt ausschließlich physische Replikation.

Eine Reduzierung von logisch auf Replik kann dazu führen, dass bestehende logische Replikationsslots nicht mehr verwendet werden können. Stellen Sie sicher, dass keine CDC- oder logischen Replikations-Workloads aktiv sind, bevor Sie diesen Wert ändern.

max_wal_senders

  • Typ: Ganzzahl
  • Standard: 10
  • Umfang: 10 – 40
  • Neustart erforderlich: Ja

Maximale Anzahl gleichzeitig laufender WAL-Sender-Prozesse. Für jeden logischen Replikationsabonnenten und jeden physischen Standby-Server ist ein Sender erforderlich.

max_replication_slots

  • Typ: Ganzzahl
  • Standard: 10
  • Umfang: 10 – 40
  • Neustart erforderlich: Ja

Maximale Anzahl an Replikationsslots. Jeder Abonnent der logischen Replikation benötigt einen Slot. Löschen Sie nicht genutzte Slots umgehend, da aufgegebene Slots WAL-Daten behalten und den Speicherplatz auf der Festplatte belasten können. Die Bedingung max_wal_senders >= max_replication_slots muss erfüllt sein.

max_worker_processes

  • Typ: Ganzzahl
  • Standard: 8
  • Mindestanzahl: 8
  • Maximal: Speicher-gestaffelt. 8, 16, 24 oder 32, je nach RAM-Auslastung der Host-Variante
  • Neustart erforderlich: Ja

Gesamtbudget für Hintergrundprozesse, das sich auf logische Replikation und andere Hintergrundaufgaben verteilt.

Die Anzahl der Worker-Prozesse wird durch den Arbeitsspeicher begrenzt
Host-RAM Maximaler Wert für max_worker_processes
Weniger als 16. GiB 8
16–31 GiB 16
32 – 63 GiB 24
64 GiB oder mehr 32

Die Bedingung max_worker_processes >= max_logical_replication_workers + 4 muss erfüllt sein.

max_logical_replication_workers

  • Typ: Ganzzahl
  • Standard: 4
  • Mindestanzahl: 4
  • Maximal: Speicher-Tier — 4, 12, 20 oder 28, je nach RAM-Kapazität der Host-Variante
  • Neustart erforderlich: Ja

Für die logische Replikation verfügbare Worker. Das Maximum liegt bei der Stufe max_worker_processes – 4:

max_logical_replication_workers – Begrenzung durch den Arbeitsspeicher (RAM)
Host-RAM Maximaler Wert für max_logical_replication_workers
Weniger als 16. GiB 4
16–31 GiB 12
32 – 63 GiB 20
64 GiB oder mehr 28

pgaudit.log

  • Typ: Zeichenfolge (durch Kommas getrennte Ereignisklassen)
  • Standard: ddl
  • Neustart erforderlich: Nein

Durch Kommas getrennte Liste der zu prüfenden Anweisungsklassen:

pgaudit.log Ereignisklassen
Klasse Protokollierte Aussagen
Lesen SELECT, COPY FROM
Schreiben INSERT, UPDATE, DELETE, TRUNCATE, COPY TO
Function Funktionsaufrufe und DO-Blöcke
Rolle GRANT, REVOKE, Änderungen an Rollen und Berechtigungen
DDL Alle DDL-Anweisungen mit Ausnahme der rollenbezogenen Anweisungen
Misc DISCARD, FETCH, CHECKPOINT, VACUUM, SET
misc_set Nur SET-Anweisungen
Alle Alle bisherigen Aussageklassen
keine Deaktiviert die Protokollierung der Sitzungsüberwachung

Die Verwendung von all oder write on busy kann zu hohem Protokollaufkommen führen.

pgaudit.role

  • Typ: Zeichenfolge
  • Standard: "" (leer – Audit-Protokollierung auf Objektebene deaktiviert)
  • Neustart erforderlich: Nein

Rolle, die für die Protokollierung von Prüfprotokollen auf Objektebene verwendet wird. pgAudit protokolliert Aktivitäten an Objekten, für die diese Rolle Berechtigungen besitzt. Die Rolle muss bereits vorhanden sein, bevor Sie diesen Parameter festlegen.