Konfigurieren von Parametereinstellungen für die pgactive-Erweiterung - Amazon Relational Database Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfigurieren von Parametereinstellungen für die pgactive-Erweiterung

Sie können die folgende Abfrage verwenden, um alle mit der „pgactive“-Erweiterung verknüpften Parameter anzuzeigen.

app=> SELECT * FROM pg_settings WHERE name LIKE 'pgactive.%';

Sie können die pgactive-Erweiterung mit verschiedenen Parametern konfigurieren. Diese Parameter können entweder über die CLI-Schnittstelle von AWS Management Console oder AWS festgelegt werden.

Wichtigste pgactive-Erweiterungsparameter

Die folgende Tabelle enthält eine Referenz für die Hauptparameter der pgactive-Erweiterung:

Parameter

Einheit

Standard

Beschreibung

pgactive.conflict_logging_include_tuples

boolean

Protokolliert vollständige Tupel-Informationen für die pgactive-Erweiterung.

Anmerkung

Ein Serverneustart ist erforderlich, damit Änderungen wirksam werden.

pgactive.log_conflicts_to_table

boolean

Legt fest, ob die pgactive-Erweiterung die erkannten Konflikte in der pgactive.pgactive_conflict_history-Tabelle protokolliert. Weitere Informationen finden Sie unter „Konfliktprotokollierung“.

Anmerkung

Ein Serverneustart ist erforderlich, damit Änderungen wirksam werden.

pgactive.log_conflicts_to_logfile

boolean

Legt fest, ob die pgactive-Erweiterung die erkannten Konflikte in der PostgreSQL-Protokolldatei protokolliert. Weitere Informationen finden Sie unter „Konfliktprotokollierung“.

Anmerkung

Ein Serverneustart ist erforderlich, damit Änderungen wirksam werden.

pgactive.synchronous_commit

boolean

aus

Bestimmt das Commit-Verhalten für „pgactive apply“-Worker. Wenn diese Option deaktiviert (aus) ist, führen apply-Worker asynchrone Commits durch. Dadurch wird der PostgreSQL-Durchsatz bei Apply-Vorgängen verbessert, die Wiederholungsbestätigungen an den Upstream werden jedoch verzögert. Die Einstellung auf off ist immer sicher und führt nicht zum Verlust oder Überspringen von Transaktionen. Diese Einstellung wirkt sich nur auf den Zeitpunkt der Festplattenleerungen auf dem Downstream-Knoten und darauf aus, wann Bestätigungen upstream gesendet werden. Das System verzögert das Senden von Replay-Flush-Bestätigungen, bis Commits durch unabhängige Vorgänge wie Checkpoints oder regelmäßige Aufgaben auf die Festplatte geschrieben werden. Wenn im Upstream-Bereich jedoch der Downstream unter synchronous_standby_names aufgeführt ist, führt die Einstellung auf off dazu, dass synchrone Commits auf dem Upstream länger brauchen, bis sie dem Client erfolgreich gemeldet werden. In diesem Fall legen Sie den Parameter auf on fest.

Anmerkung

Selbst wenn dieser Parameter auf on mit aufgelisteten Knoten unter synchronous_standby_names festgelegt ist, können Replikationskonflikte in active-active-Konfigurationen weiterhin auftreten. Das liegt daran, dass dem System das Sperren zwischen den Knoten und das globale Snapshot-Management fehlen, sodass gleichzeitige Transaktionen auf verschiedenen Knoten dasselbe Tupel ändern können. Darüber hinaus beginnen Transaktionen erst mit der Replikation, nachdem sie auf dem Upstream-Knoten festgeschrieben wurden. Durch die Aktivierung eines synchronen Commits wird die pgactive-Erweiterung nicht in ein stets konsistentes System transformiert.

pgactive.temp_dump_directory

string

Definiert den temporären Speicherpfad, der für das Klonen von Datenbanken bei der Ersteinrichtung erforderlich ist. Dieses Verzeichnis muss für den Postgres-Benutzer beschreibbar sein und über ausreichend Speicherplatz für einen vollständigen Datenbank-Dump verfügen. Das System verwendet diesen Speicherort nur bei der Ersteinrichtung der Datenbank mit logischen Kopiervorgängen. Dieser Parameter wird nicht von pgactive_init_copy command verwendet.

pgactive.max_ddl_lock_delay

milliseconds

-1

Gibt die maximale Wartezeit für die DDL-Sperre an, bevor gleichzeitige Schreibtransaktionen erzwungen werden. Der Standardwert ist -1, der den in max_standby_streaming_delay eingestellten Wert übernimmt. Dieser Parameter akzeptiert Zeiteinheiten. Sie können ihn beispielsweise für 10 Sekunden auf 10 Sekunden einstellen. Während dieser Wartezeit versucht das System, DDL-Sperren zu erhalten, während es darauf wartet, dass laufende Schreibtransaktionen entweder festgeschrieben oder rückgängig gemacht werden. Weitere Informationen finden Sie unter „DDL-Sperren“.

pgactive.ddl_lock_timeout

milliseconds

-1

Gibt an, wie lange ein DDL-Sperrversuch darauf wartet, die Sperre zu erhalten. Der Standardwert ist -1, der den in lock_timeout angegebenen Wert verwendet. Sie können diesen Parameter in Zeiteinheiten wie 10s für 10 Sekunden festlegen. Dieser Timer steuert nur die Wartezeit für den Erhalt einer DDL-Sperre. Sobald das System die Sperre erhält und den DDL-Vorgang startet, stoppt der Timer. Dieser Parameter begrenzt weder die Gesamtdauer, für die eine DDL-Sperre aufrechterhalten werden kann, noch die gesamte DDL-Betriebszeit. Um die Gesamtdauer des Vorgangs zu steuern, verwenden Sie stattdessen statement_timeout. Weitere Informationen finden Sie unter „DDL-Sperren“.

pgactive.debug_trace_ddl_locks_level

boolean

Setzt die standardmäßige Debug-Protokollebene für DDL-Sperrvorgänge in der pgactive-Erweiterung außer Kraft.- Wenn diese Einstellung konfiguriert ist, werden Meldungen im Zusammenhang mit DDL-Sperren auf der LOG-Debug-Ebene statt auf ihrer Standardebene ausgegeben. Verwenden Sie diesen Parameter, um DDL-Sperraktivität zu überwachen, ohne die ausführlichen Protokollebenen DEBUG1 oder DEBUG2 Protokollebenen auf Ihrem gesamten Server zu aktivieren.

Verfügbare Protokollebenen, in aufsteigender Reihenfolge der Ausführlichkeit:

  • none – DDL-Sperrmeldungen werden nur auf DEBUG1 und niedrigeren Serverprotokollebenen angezeigt.

  • statement – Fügt die LOG-Ausgabe für Versuche zur Erfassung von DDL-Sperren hinzu.

  • acquire_release – Zeichnet Sperrenerfassungs-, Freigabe- und Deklinationsereignisse sowie Peer-Node-Anwendungen von Remote-DDL-Sperren auf.

  • peers – Stellt zusätzliche Informationen zu DDL-Sperrverhandlungen zwischen Peer-Knoten bereit.

  • debug – Protokolliert alle Aktivitäten im Zusammenhang mit DDL-Sperren auf LOG-Ebene.

Weitere Informationen zu Überwachungsoptionen finden Sie unter „Überwachen globaler DDL-Sperren“.

Anmerkung

Änderungen an dieser Einstellung werden wirksam, wenn Sie die Konfiguration neu laden. Sie müssen den Server nicht neu starten.

Zusätzliche pgactive-Erweiterungsparameter

Die folgende Tabelle enthält weniger häufig verwendete und interne Konfigurationsoptionen, die für die pgactive-Erweiterung verfügbar sind.

Parameter

Einheit

Standard

Beschreibung

pgactive.debug_apply_delay

integer

Legt eine Anwendungsverzögerung (in Millisekunden) für konfigurierte Verbindungen fest, deren pgactive.pgactive_connections-Eintrag keine explizite Anwendungsverzögerung enthält. Diese Verzögerung wird während der Knotenerstellung oder der Verbindungszeit festgelegt, und pgactive gibt eine Transaktion auf Peer-Knoten erst dann wieder, wenn mindestens die angegebene Anzahl von Millisekunden seit dem Festschreiben vergangen ist.

Wird in erster Linie verwendet, um Netzwerke mit hoher Latenz in Testumgebungen zu simulieren, um das Erzeugen von Konflikten zu vereinfachen. Beispiel: Bei einer Verzögerung von 500 ms auf den Knoten A und B haben Sie nach dem Einfügen eines Werts auf Knoten A mindestens 500 ms Zeit, um eine widersprüchliche Einfügung auf Knoten B durchzuführen.

Anmerkung

Erfordert ein erneutes Laden des Servers oder einen Neustart der apply-Worker, um wirksam zu werden.

pgactive.connectability_check_duration

integer

Gibt die Dauer (in Sekunden) an, für die ein Datenbank-Worker versucht, während fehlgeschlagener Versuche Verbindungen herzustellen. Der Worker unternimmt einen Verbindungsversuch pro Sekunde, bis er erfolgreich ist oder diesen Timeout-Wert erreicht. Diese Einstellung ist hilfreich, wenn die Datenbank-Engine gestartet wird, bevor der Worker bereit ist, Verbindungen herzustellen.

pgactive.skip_ddl_replication

boolean

on

Steuert, wie DDL-Änderungen in Amazon RDS repliziert oder verarbeitet werden, wenn pgactive aktiviert ist. Wenn diese Option auf on festgelegt ist, verarbeitet der Knoten DDL-Änderungen wie ein Nicht-pgactive-Knoten. Die folgenden Anforderungen gelten bei der Verwendung dieses Parameters:

  • Neue Knoten können keiner pgactive-Gruppe beitreten, wenn ihr skip_ddl_replication-Wert vom Wert des Upstream-Knotens abweicht.

  • Vorhandene Knoten können pgactive-Worker nicht starten, wenn ihr Parameterwert nicht mit dem Upstream-Knoten übereinstimmt.

  • Alle pgactive-Mitglieder müssen denselben Parameterwert verwenden.

Sie können diesen Parameter mit Superuser-Berechtigungen auf zwei Arten ändern: global, lokal (Sitzungsebene).

Anmerkung

Wenn Sie diesen Parameter falsch ändern, können Ihre Replikationseinrichtungen beschädigt werden.

pgactive.do_not_replicate

boolean

Dieser Parameter ist nur für die interne Verwendung vorgesehen. Wenn Sie diesen Parameter in einer Transaktion festlegen, werden die Änderungen nicht auf andere Knoten in Ihrem DB-Cluster repliziert.

Anmerkung

Wenn Sie diesen Parameter falsch ändern, können Ihre Replikationseinrichtungen beschädigt werden.

pgactive.discard_mismatched_row_attributes

boolean

Dieser Parameter ist nur für die Verwendung durch Spezialisten vorgesehen. Es wird empfohlen, diesen Parameter nur zur Behebung bestimmter Replikationsprobleme zu verwenden. Verwenden Sie diesen Parameter in folgenden Fällen:

  • Der eingehende Replikationsstream enthält Zeilen mit mehr Spalten als Ihre lokale Tabelle.

  • Diese entfernten Zeilen enthalten Werte, die ungleich Null sind.

Diese Einstellung überschreibt die folgende Fehlermeldung und ermöglicht Datendivergenzen, sodass die Replikation fortgesetzt werden kann: cannot right-pad mismatched attributes; attno %u is missing in local table and remote row has non-null, non-dropped value for this attribute

Anmerkung

Wenn Sie diesen Parameter falsch ändern, können Ihre Replikationseinrichtungen beschädigt werden.

pgactive.debug_trace_replay

boolean

Wenn dieser Wert auf on festgelegt ist, wird für jede Remote-Aktion, die nachgeschaltete apply-Worker verarbeiten, eine Protokollmeldung ausgegeben. Zu den Protokollen gehören:

  • Änderungstyp

  • Betroffener Tabellenname

  • Anzahl der Änderungen seit dem Start der Transaktion

  • Commit-LSN der Transaktion

  • Commit-Zeitstempel

  • ID des Upstream-Knotens

  • ID des Weiterleitungsknotens (falls zutreffend)

In den Protokollen werden auch DDL-Befehle und Tabellenabbrüche in der Warteschlange erfasst.

para>

Standardmäßig enthalten die Protokolle keine Zeilenfeldinhalte. Um Zeilenwerte in die Protokolle aufzunehmen, müssen Sie bei der Neukompilierung die folgenden Flags aktiviert haben:

  • VERBOSE_INSERT

  • VERBOSE_UPDATE

  • VERBOSE_DELETE

Anmerkung

Die Aktivierung dieser Protokollierungseinstellung kann sich auf die Leistung auswirken. Wir empfehlen, sie nur zu aktivieren, wenn sie zur Fehlerbehebung benötigt wird. Änderungen an dieser Einstellung werden wirksam, wenn Sie die Konfiguration neu laden. Sie müssen den Server nicht neu starten.

pgactive.extra_apply_connection_options

Sie können Verbindungsparameter für alle Peer-Knotenverbindungen mit pgactive-Knoten konfigurieren. Diese Parameter steuern Einstellungen wie Keepalives und SSL-Modi. Standardmäßig verwendet pgactive die folgenden Verbindungsparameter:

  • connect_timeout=30

  • keepalives=1

  • keepalives_idle=20

  • keepalives_interval=20

  • keepalives_count=5

Verwenden Sie den folgenden ähnlichen Befehl, um die Standardparameter zu überschreiben:

pgactive.extra_apply_connection_options = 'keepalives=0'

Verbindungszeichenfolgen für einzelne Knoten haben Vorrang vor diesen Einstellungen und den integrierten Verbindungsoptionen von pgactive. Weitere Informationen zu Formaten für Verbindungszeichenfolgen finden Sie unter libpq-Verbindungszeichenfolgen.

Wir empfehlen, die Keepalive-Standardeinstellungen aktiviert zu lassen. Deaktivieren Sie Keepalives nur, wenn Sie Probleme mit großen Transaktionen haben, die über unzuverlässige Netzwerke abgeschlossen werden.

Anmerkung

Wir empfehlen, die Keepalive-Standardeinstellungen aktiviert zu lassen. Deaktivieren Sie Keepalives nur, wenn Sie Probleme mit großen Transaktionen haben, die über unzuverlässige Netzwerke abgeschlossen werden. Änderungen an dieser Einstellung werden wirksam, wenn Sie die Konfiguration neu laden. Sie müssen den Server nicht neu starten.

pgactive.init_node_parallel_jobs (int)

Gibt die Anzahl der parallelen Aufträge an, die pg_dump und pg_restore bei logischen Knotenverbindungen mit der Funktion pgactive.pgactive_join_group verwenden können.

Änderungen an dieser Einstellung werden wirksam, wenn Sie die Konfiguration neu laden. Sie müssen den Server nicht neu starten.

pgactive.max_nodes

int

4

Gibt die maximal zulässige Anzahl von Knoten in einer pgactive-Erweiterungsgruppe an. Der Standardwert beträgt 4 Knoten. Sie müssen die folgenden Punkte berücksichtigen, wenn Sie den Wert dieses Parameters festlegen:

  • Alle Knoten in einer pgactive-Erweiterungsgruppe müssen denselben Parameterwert verwenden.

  • Ein neuer Knoten kann nicht beitreten, wenn sein Parameterwert vom Upstream-Knoten abweicht.

  • Vorhandene Knoten können pgactive-Worker nicht starten, wenn ihr Parameterwert vom Upstream-Knoten abweicht.

  • Größere Gruppen erfordern einen zusätzlichen Überwachungs- und Wartungsaufwand, daher sollte der Wert dieses Parameters mit Bedacht ausgewählt werden.

Sie können diesen Parameter auf zwei Arten festlegen: in der Konfigurationsdatei mit dem Befehl ALTER SYSTEM SET

Der Standardwert für diesen Parameter ist 4, was bedeutet, dass zu jedem Zeitpunkt maximal 4 Knoten in der pgactive-Erweiterungsgruppe zulässig sind.

Anmerkung

Die Änderung wird wirksam, nachdem Sie den Server neu gestartet haben.

pgactive.permit_node_identifier_getter_function_creation

boolean

Dieser Parameter ist nur für die interne Verwendung vorgesehen. Wenn er aktiviert ist, ermöglicht die pgactive-Erweiterung die Erstellung der Getter-Funktion für die pgactive-Knoten-ID.