Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Verwenden einer PostgreSQL-Datenbank als AWS DMS -Quelle

Fokusmodus
Verwenden einer PostgreSQL-Datenbank als AWS DMS -Quelle - AWS Database Migration 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.

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.

Sie können Daten aus einer oder mehreren PostgreSQL-Datenbanken migrieren mit. AWS DMS Mit einer PostgreSQL-Datenbank als Quelle können Sie Daten zu einer anderen PostgreSQL-Datenbank oder einer der anderen unterstützten Datenbanken migrieren.

Hinweise zu Versionen von PostgreSQL, die als Quelle AWS DMS unterstützt werden, finden Sie unter. Quellen für AWS DMS

AWS DMS unterstützt PostgreSQL für diese Datenbanktypen:

  • Lokale Datenbanken

  • Datenbanken auf einer EC2 Amazon-Instance

  • Datenbanken auf einer DB-Instance von Amazon RDS

  • Datenbanken auf einer DB-Instance basierend auf der Amazon-Aurora-PostgreSQL-kompatiblen Edition

  • Datenbanken auf einer DB-Instance basierend auf der Amazon-Aurora-PostgreSQL-kompatiblen Serverless-Edition

Anmerkung

DMS unterstützt Amazon Aurora PostgreSQL – Serverless V1 nur als Quelle für Volllastaufgaben. Sie können jedoch Amazon Aurora PostgreSQL – Serverless V2 als Quelle für Volllast-, Volllast-und-CDC- und reine CDC-Aufgaben verwenden.

PostgreSQL-Quellversion

AWS DMS zu verwendende Version

9.x, 10.x, 11.x, 12.x

Verwenden Sie eine beliebige verfügbare AWS DMS Version.

13.x

Verwenden Sie AWS DMS Version 3.4.3 und höher.

14.x

Verwenden Sie AWS DMS Version 3.4.7 und höher.

15x

Verwenden Sie AWS DMS Version 3.5.1 und höher.

16.x

Verwenden Sie AWS DMS Version 3.5.3 und höher.

Sie können Secure Sockets Layer (SSL) verwenden, um Verbindungen zwischen Ihrem PostgreSQL-Endpunkt und der Replikations-Instance zu verschlüsseln. Weitere Informationen zur Verwendung von SSL mit einem PostgreSQL-Endpunkt finden Sie unter Verwenden von SSL mit AWS Database Migration Service.

Eine zusätzliche Sicherheitsanforderung bei Verwendung von PostgreSQL als Quelle besteht darin, dass das angegebene Benutzerkonto ein registrierter Benutzer in der PostgreSQL-Datenbank sein muss.

Gehen Sie wie folgt vor, um eine PostgreSQL-Datenbank als AWS DMS Quellendpunkt zu konfigurieren:

Arbeiten mit selbstverwalteten PostgreSQL-Datenbanken als Quelle in AWS DMS

Mit einer selbstverwalteten PostgreSQL-Datenbank als Quelle können Sie Daten entweder in eine andere PostgreSQL-Datenbank oder in eine der anderen Zieldatenbanken migrieren, die von unterstützt werden. AWS DMS Die Datenbankquelle kann eine lokale Datenbank oder eine selbstverwaltete Engine sein, die auf einer EC2 Amazon-Instance ausgeführt wird. Sie können eine DB-Instance sowohl für Volllast- als auch für CDC-Aufgaben verwenden.

Voraussetzungen für die Verwendung einer selbstverwalteten PostgreSQL-Datenbank als Quelle AWS DMS

Führen Sie vor der Migration von Daten aus einer selbstverwalteten PostgreSQL-Quelldatenbank die folgenden Schritte aus:

  • Stellen Sie sicher, dass Sie eine PostgreSQL-Datenbank der Version 9.4.x oder höher verwenden.

  • Erteilen Sie für Volllast-und-CDC- oder reine CDC-Aufgaben Superuser-Berechtigungen für das Benutzerkonto, das für die PostgreSQL-Quelldatenbank angegeben ist. Das Benutzerkonto erfordert Superuser-Berechtigungen, um auf replikationsspezifische Funktionen in der Quelle zugreifen zu können. Für reine Volllastaufgaben erfordert das Benutzerkonto SELECT-Berechtigungen für Tabellen, um diese migrieren zu können.

  • Fügen Sie der pg_hba.conf Konfigurationsdatei die IP-Adresse des AWS DMS Replikationsservers hinzu und aktivieren Sie Replikations- und Socket-Verbindungen. Ein Beispiel folgt.

    # Replication Instance host all all 12.3.4.56/00 md5 # Allow replication connections from localhost, by a user with the # replication privilege. host replication dms 12.3.4.56/00 md5

    Die Konfigurationsdatei pg_hba.conf von PostgreSQL steuert die Clientauthentifizierung. (HBA steht für hostbasierte Authentifizierung) Die Datei wird üblicherweise im Datenverzeichnis des Datenbankclusters gespeichert.

  • Wenn Sie eine Datenbank als Quelle für die logische Replikation konfigurieren, AWS DMS siehe CDC mithilfe einer selbstverwalteten PostgreSQL-Datenbank als Quelle aktivieren AWS DMS

Anmerkung

Einige AWS DMS Transaktionen befinden sich für einige Zeit im Leerlauf, bevor sie von der DMS-Engine wieder verwendet werden. Über den Parameter idle_in_transaction_session_timeout in PostgreSQL-Versionen 9.6 und höher können Sie für Transaktionen im Leerlauf ein Timeout und Fehlschlagen veranlassen. Beenden Sie Transaktionen im Leerlauf nicht, wenn Sie AWS DMS verwenden.

CDC mithilfe einer selbstverwalteten PostgreSQL-Datenbank als Quelle aktivieren AWS DMS

AWS DMS unterstützt die Erfassung von Änderungsdaten (CDC) mithilfe logischer Replikation. Legen Sie die folgenden Parameter und Werte in der Konfigurationsdatei postgresql.conf fest, um die logische Replikation einer selbstverwalteten PostgreSQL-Quelldatenbank zu aktivieren:

  • Set wal_level = logical.

  • Legen Sie für max_replication_slots einen Wert größer als 1 fest.

    Legen Sie den Wert max_replication_slots gemäß der Anzahl der Aufgaben fest, die Sie ausführen möchten. Wenn Sie beispielsweise fünf Aufgaben ausführen möchten, legen Sie mindestens fünf Slots fest.. Slots werden automatisch geöffnet, sobald eine Aufgabe gestartet wird und bleiben geöffnet, selbst wenn die Aufgabe nicht mehr ausgeführt wird. Löschen Sie offene Slots unbedingt manuell. Beachten Sie, dass DMS beim Löschen der Aufgabe automatisch Replikations-Slots löscht, sofern DMS den Slot erstellt hat.

  • Legen Sie für max_wal_senders einen Wert größer als 1 fest.

    Der Parameter max_wal_senders legt die Anzahl der Aufgaben fest, die gleichzeitig ausgeführt werden können.

  • Der Parameter wal_sender_timeout beendet Replikationsverbindungen, die länger als die angegebene Anzahl von Millisekunden inaktiv sind. Der Standardwert für eine On-Premises-PostgreSQL-Datenbank beträgt 60 000 Millisekunden (60 Sekunden). Wenn Sie den Wert auf 0 (Null) festlegen, wird der Timeout-Mechanismus deaktiviert. Dies ist eine gültige Einstellung für DMS.

    Wenn Sie den Wert wal_sender_timeout auf einen anderen Wert als Null festlegen, benötigt eine DMS-Aufgabe mit CDC mindestens 10 000 Millisekunden (10 Sekunden) und schlägt fehl, wenn der Wert unter 10 000 liegt. Halten Sie den Wert unter 5 Minuten, um eine Verzögerung während eines Multi-AZ-Failovers einer DMS-Replikations-Instance zu vermeiden.

Einige Parameter sind statisch und können nur beim Serverstart festgelegt werden. Änderungen an ihren Einträgen in der Konfigurationsdatei (für eine selbstverwaltete Datenbank) oder der DB-Parametergruppe (für eine Datenbank von RDS für PostgreSQL) werden ignoriert, bis der Server neu gestartet wird. Weitere Informationen finden Sie in der PostgreSQL-Dokumentation.

Weitere Informationen zum Aktivieren von CDC finden Sie unter Aktivieren der Erfassung von Datenänderungen (CDC) mithilfe logischer Replikation.

Arbeiten mit AWS-verwalteten PostgreSQL-Datenbanken als DMS-Quelle

Sie können eine AWS-verwaltete PostgreSQL-DB-Instance als Quelle für verwenden. AWS DMS Sie können sowohl Volllast- als auch CDC-Aufgaben mit einer von AWS verwalteten PostgreSQL-Quelle ausführen.

Voraussetzungen für die Verwendung einer AWS-verwalteten PostgreSQL-Datenbank als DMS-Quelle

Gehen Sie vor der Migration von Daten aus einer AWS-verwalteten PostgreSQL-Quelldatenbank wie folgt vor:

  • Wir empfehlen, dass Sie ein AWS Benutzerkonto mit den erforderlichen Mindestberechtigungen für die PostgreSQL-DB-Instance als Benutzerkonto für den PostgreSQL-Quellendpunkt für verwenden. AWS DMS Von der Verwendung des Hauptkontos wird abgeraten. Das Konto muss über die Rolle rds_superuser und die Rolle rds_replication verfügen. Die Rolle rds_replication erteilt Berechtigungen zur Verwaltung von logischen Slots und zum Streamen von Daten mithilfe von logischen Slots.

    Erstellen Sie vom Hauptbenutzerkonto aus mehrere Objekte für das verwendete Konto. Informationen dazu, wie Sie diese erstellen, finden Sie unter Migrieren einer Datenbank von Amazon RDS für PostgreSQL ohne Verwendung des Hauptbenutzerkontos.

  • Wenn sich Ihre Quelldatenbank in einer Virtual Private Cloud (VPC) befindet, wählen Sie die VPC-Sicherheitsgruppe aus, die Zugriff auf die DB-Instance bietet, in der sich die Datenbank befindet. Dies ist erforderlich, damit die DMS-Replikations-Instance eine Verbindung mit der Quell-DB-Instance herstellen kann. Wenn sich die Datenbank und die DMS-Replikations-Instance in derselben VPC befinden, fügen Sie die entsprechende Sicherheitsgruppe ihren eigenen Regeln für eingehenden Datenverkehr hinzu.

Anmerkung

Einige AWS DMS Transaktionen sind für einige Zeit inaktiv, bevor die DMS-Engine sie wieder verwendet. Über den Parameter idle_in_transaction_session_timeout in PostgreSQL-Versionen 9.6 und höher können Sie für Transaktionen im Leerlauf ein Timeout und Fehlschlagen veranlassen. Beenden Sie Transaktionen im Leerlauf nicht, wenn Sie AWS DMS verwenden.

CDC mit einer AWS-verwalteten PostgreSQL-DB-Instance aktivieren mit AWS DMS

AWS DMS unterstützt CDC auf Amazon RDS-PostgreSQL-Datenbanken, wenn die DB-Instance für die logische Replikation konfiguriert ist. In der folgenden Tabelle wird die logische Replikationskompatibilität jeder AWS-verwalteten PostgreSQL-Version zusammengefasst.

Sie können keine RDS-PostgreSQL-Lesereplikate für CDC (laufende Replikation) verwenden.

PostgreSQL-Version

AWS DMS Unterstützung bei Volllast

AWS DMS CDC-Unterstützung

Aurora PostgreSQL Version 2.1 mit Kompatibilität mit PostgreSQL 10.5 (oder niedriger)

Ja

Nein

Aurora PostgreSQL Version 2.2 mit Kompatibilität mit PostgreSQL 10.6 (oder höher)

Ja

Ja

RDS für PostgreSQL mit Kompatibilität mit PostgreSQL 10.21 (oder höher)

Ja

Ja

So aktivieren Sie die logische Replikation für eine RDS PostgreSQL DB-Instance
  1. Verwenden Sie das AWS Hauptbenutzerkonto für die PostgreSQL-DB-Instance als Benutzerkonto für den PostgreSQL-Quellendpunkt. Das Masterbenutzerkonto hat die erforderlichen Rollen für die CDC-Einrichtung.

    Wenn Sie ein anderes als das Hauptbenutzerkonto verwenden, müssen Sie vom Hauptbenutzerkonto aus mehrere Objekte für das verwendete Konto erstellen. Weitere Informationen finden Sie unter Migrieren einer Datenbank von Amazon RDS für PostgreSQL ohne Verwendung des Hauptbenutzerkontos.

  2. Legen Sie den Parameter rds.logical_replication in der DB-CLUSTER-Parametergruppe auf 1 fest. Für das Wirksamwerden dieses statischen Parameters ist ein Neustart der DB-Instance erforderlich. Im Rahmen der Anwendung dieses Parameters legt AWS DMS die Parameter wal_level, max_wal_senders, max_replication_slots und max_connections fest. Diese Parameteränderungen können die WAL-Erzeugung (Write Ahead Log) erhöhen. Setzen Sie rds.logical_replication also nur, wenn Sie logische Replikationsslots verwenden.

  3. Der Parameter wal_sender_timeout beendet Replikationsverbindungen, die länger als die angegebene Anzahl von Millisekunden inaktiv sind. Die Standardeinstellung für eine AWS-verwaltete PostgreSQL-Datenbank ist 30000 Millisekunden (30 Sekunden). Wenn Sie den Wert auf 0 (Null) festlegen, wird der Timeout-Mechanismus deaktiviert. Dies ist eine gültige Einstellung für DMS.

    Wenn Sie den Wert wal_sender_timeout auf einen anderen Wert als Null festlegen, benötigt eine DMS-Aufgabe mit CDC mindestens 10 000 Millisekunden (10 Sekunden) und schlägt fehl, wenn der Wert zwischen 0 und 10 000 liegt. Halten Sie den Wert unter 5 Minuten, um eine Verzögerung während eines Multi-AZ-Failovers einer DMS-Replikations-Instance zu vermeiden.

  4. Stellen Sie sicher, dass der Wert des Parameters max_worker_processes in Ihrer DB-Cluster-Parametergruppe gleich oder höher als die kombinierten Gesamtwerte von max_logical_replication_workers, autovacuum_max_workers und max_parallel_workers ist. Eine hohe Anzahl von Hintergrund-Worker-Prozessen kann sich auf die Anwendungs-Workloads auf kleinen Instances auswirken. Überwachen Sie daher die Leistung Ihrer Datenbank, wenn Sie für max_worker_processes einen höheren Wert als den Standardwert festlegen.

  5. Wenn Sie Aurora PostgreSQL als Quelle mit CDC verwenden, setzen Sie den Wert auf. synchronous_commit ON

Migrieren einer Datenbank von Amazon RDS für PostgreSQL ohne Verwendung des Hauptbenutzerkontos

In Einzelfällen können Sie das Hauptbenutzerkonto für die DB-Instance von Amazon RDS PostgreSQL, die Sie als Quelle verwenden, nicht verwenden. In diesen Fällen erstellen Sie mehrere Objekte, um Data Definition Language (DDL)-Ereignisse zu erfassen. Sie erstellen diese Objekte in dem Konto, das nicht das Masterkonto ist, und dann erstellen Sie einen Auslöser im Masterbenutzerkonto.

Anmerkung

Wenn Sie die Endpunkteinstellung CaptureDdls am Quellendpunkt auf false festlegen, müssen Sie folgende Tabelle/folgenden Auslöser in der Quelldatenbank nicht erstellen.

Gehen Sie wie folgt vor, um diese Objekte zu erstellen.

So erstellen Sie Objekte
  1. Wählen Sie das Schema aus, in dem die Objekte erstellt werden sollen. Das Standardschema ist public. Stellen Sie sicher, dass das Schema vorhanden ist und dass das OtherThanMaster-Konto darauf zugreifen kann.

  2. Melden Sie sich mit dem anderen Benutzerkonto (nicht dem Hauptkonto) (hier das Konto OtherThanMaster) bei der PostgreSQL-DB-Instance an.

  3. Erstellen Sie die Tabelle awsdms_ddl_audit, indem Sie den folgenden Befehl ausführen. Ersetzen Sie dabei objects_schema im folgenden Code durch den Namen des zu verwendenden Schemas.

    CREATE TABLE objects_schema.awsdms_ddl_audit ( c_key bigserial primary key, c_time timestamp, -- Informational c_user varchar(64), -- Informational: current_user c_txn varchar(16), -- Informational: current transaction c_tag varchar(24), -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE' c_oid integer, -- For future use - TG_OBJECTID c_name varchar(64), -- For future use - TG_OBJECTNAME c_schema varchar(64), -- For future use - TG_SCHEMANAME. For now - holds current_schema c_ddlqry text -- The DDL query associated with the current DDL event );
  4. Erstellen Sie die Funktion awsdms_intercept_ddl, indem Sie den folgenden Befehl ausführen und dabei objects_schema im folgenden Code durch den Namen des zu verwendenden Schemas ersetzen.

    CREATE OR REPLACE FUNCTION objects_schema.awsdms_intercept_ddl() RETURNS event_trigger LANGUAGE plpgsql SECURITY DEFINER AS $$ declare _qry text; BEGIN if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE' or tg_tag = 'CREATE TABLE AS') then SELECT current_query() into _qry; insert into objects_schema.awsdms_ddl_audit values ( default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry ); delete from objects_schema.awsdms_ddl_audit; end if; END; $$;
  5. Melden Sie sich vom OtherThanMaster-Konto ab und melden Sie sich mit einem Konto an, dem die rds_superuser-Rolle zugewiesen ist.

  6. Erstellen Sie den Ereignisauslöser awsdms_intercept_ddl, indem Sie den folgenden Befehl ausführen.

    CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end EXECUTE PROCEDURE objects_schema.awsdms_intercept_ddl();
  7. Stellen Sie sicher, dass alle Benutzer und Rollen, die auf diese Ereignisse zugreifen, über die erforderlichen DDL-Berechtigungen verfügen. Zum Beispiel:

    grant all on public.awsdms_ddl_audit to public; grant all on public.awsdms_ddl_audit_c_key_seq to public;

Wenn Sie das vorangegangene Verfahren ausgeführt haben, können Sie den AWS DMS -Quellendpunkt mithilfe des OtherThanMaster-Kontos erstellen.

Anmerkung

Diese Ereignisse werden durch die Anweisungen CREATE TABLE, ALTER TABLE und DROP TABLE ausgelöst.

Aktivieren der Erfassung von Datenänderungen (CDC) mithilfe logischer Replikation

Sie können das native PostgreSQL-Feature zur logischen Replikation verwenden, um CDC während einer Datenbankmigration für PostgreSQL-Quellen zu aktivieren. Sie können dieses Feature mit einer selbstverwalteten PostgreSQL- und einer DB-Instance von Amazon RDS für PostgreSQL verwenden. Dieser Ansatz reduziert Ausfallzeiten und stellt sicher, dass die Zieldatenbank mit der PostgreSQL-Quelldatenbank synchronisiert ist.

AWS DMS unterstützt CDC für PostgreSQL-Tabellen mit Primärschlüsseln. Wenn eine Tabelle keinen Primärschlüssel aufweist, enthalten die Write-Ahead (WAL)-Protokolle kein Vorher-Image der Datenbankzeile. In diesem Fall kann DMS die Tabelle nicht aktualisieren. Sie können dann zusätzliche Konfigurationseinstellungen verwenden und die Tabellenreplikatidentität als Problemumgehung verwenden. Bei diesem Ansatz können jedoch zusätzliche Protokolle generiert werden. Es wird empfohlen, die Tabellenreplikatidentität erst nach sorgfältigen Tests als Problemumgehung zu verwenden. Weitere Informationen finden Sie unter Zusätzliche Konfigurationseinstellungen bei Verwendung einer PostgreSQL-Datenbank als DMS-Quelle.

Anmerkung

REPLICA IDENTITY FULL wird mit einem Plug-in für logische Dekodierung unterstützt, aber nicht mit dem Plug-in pglogical. Weitere Informationen finden Sie in der Dokumentation zu pglogical.

AWS DMS Verwendet bei Volllast- und CDC- und nur CDC-Aufgaben logische Replikationssteckplätze, um WAL-Protokolle für die Replikation aufzubewahren, bis die Protokolle dekodiert sind. Beim Neustart (nicht bei der Fortsetzung) einer Volllast-und-CDC- oder einer reinen CDC-Aufgabe wird der Replikations-Slot neu erstellt.

Anmerkung

Für die logische Dekodierung verwendet DMS entweder das Plugin test_decoding oder pglogical. Wenn das Plug-in pglogical in einer PostgreSQL-Quelldatenbank verfügbar ist, erstellt DMS einen Replikations-Slot mithilfe von pglogical, andernfalls wird das Plug-in test_decoding verwendet. Weitere Informationen zum Plug-in test_decoding finden Sie in der Dokumentation zu PostgreSQL.

Wenn der Datenbankparameter max_slot_wal_keep_size auf einen anderen Wert als den Standardwert festgelegt ist und die restart_lsn eines Replikations-Slots um mehr als diese Größe hinter der aktuellen LSN zurückbleibt, schlägt die DMS-Aufgabe aufgrund des Entfernens der erforderlichen WAL-Dateien fehl.

Konfigurieren des Plug-ins pglogical

Das als PostgreSQL-Erweiterung implementierte Plug-in pglogical ist ein logisches Replikationssystem und Modell für die selektive Datenreplikation. In der folgenden Tabelle sind die PostgreSQL-Quelldatenbankversionen aufgeführt, die das Plug-in pglogical unterstützen.

PostgreSQL-Quelle

Unterstützung für pglogical

Selbstverwaltetes PostgreSQL 9.4 oder höher

Ja

Amazon RDS PostgreSQL 9.5 oder niedriger

Nein

Amazon RDS PostgreSQL 9.6 oder höher

Ja

Aurora PostgreSQL 1.x bis 2.5.x

Nein

Aurora PostgreSQL 2.6.x oder höher

Ja

Aurora PostgreSQL 3.3.x oder höher

Ja

Bevor Sie pglogical für die Verwendung mit konfigurieren AWS DMS, aktivieren Sie zunächst die logische Replikation für Change Data Capture (CDC) in Ihrer PostgreSQL-Quelldatenbank.

Nachdem die logische Replikation in Ihrer PostgreSQL-Quelldatenbank aktiviert wurde, führen Sie die folgenden Schritte aus, um pglogical für die Verwendung mit DMS zu konfigurieren.

Um das pglogical-Plugin für die logische Replikation in einer PostgreSQL-Quelldatenbank zu verwenden mit AWS DMS
  1. Erstellen Sie eine pglogical-Erweiterung für Ihre PostgreSQL-Quelldatenbank:

    1. Legen Sie den richtigen Parameter fest:

      • Legen Sie für selbstverwaltete PostgreSQL-Datenbanken den Datenbankparameter shared_preload_libraries= 'pglogical' fest.

      • Legen Sie für PostgreSQL-Datenbanken in Amazon RDS und Datenbanken der Amazon-Aurora-PostgreSQL-kompatiblen Edition den Parameter shared_preload_libraries in derselben RDS-Parametergruppe auf pglogical fest.

    2. Starten Sie Ihre PostgreSQL-Quelldatenbank neu.

    3. Führen Sie in der PostgreSQL-Datenbank den Befehl create extension pglogical; aus.

  2. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob pglogical erfolgreich installiert wurde:

    select * FROM pg_catalog.pg_extension

Sie können jetzt eine AWS DMS Aufgabe erstellen, die die Erfassung von Änderungsdaten für Ihren PostgreSQL-Quelldatenbank-Endpunkt durchführt.

Anmerkung

Wenn Sie pglogical in Ihrer PostgreSQL-Quelldatenbank nicht aktivieren, verwendet AWS DMS standardmäßig das Plug-in test_decoding. Wenn pglogical für die logische Dekodierung aktiviert ist, verwendet standardmäßig pglogical. AWS DMS Sie können jedoch das zusätzliche Verbindungsattribut PluginName festlegen, um stattdessen das Plug-in test_decoding zu verwenden.

Verwenden von nativen CDC-Startpunkten zum Einrichten einer CDC-Last einer PostgreSQL-Quelle

Legen Sie zum Aktivieren von nativen CDC-Startpunkten mit PostgreSQL als Quelle das zusätzliche Verbindungsattribut slotName auf den Namen eines vorhandenen logischen Replikations-Slots fest, wenn Sie den Endpunkt erstellen. Dieser logische Replikations-Slot enthält laufende Änderungen ab dem Zeitpunkt der Erstellung des Endpunkts und unterstützt somit die Replikation ab einem früheren Zeitpunkt.

PostgreSQL schreibt die Datenbankänderungen in WAL-Dateien, die nur verworfen werden, nachdem ein AWS DMS erfolgreich Änderungen aus dem logischen Replikations-Slot gelesen hat. Durch die Verwendung von logischen Replikations-Slots können protokollierte Änderungen vor dem Löschen geschützt werden, bevor sie vom Replikationsmodul verwendet werden.

Je nach Änderungsrate und Verbrauch können Änderungen in einem logischen Replikations-Slot jedoch zu einer erhöhten Festplattennutzung führen. Es wird empfohlen, Speicherplatznutzungsalarme in der PostgreSQL-Quell-Instance festzulegen, wenn Sie logische Replikations-Slots verwenden. Weitere Informationen zur Einstellung des zusätzlichen Verbindungsattributs slotName finden Sie unter Endpunkteinstellungen und zusätzliche Verbindungsattribute (ECAs) bei Verwendung von PostgreSQL als DMS-Quelle.

Im folgenden Verfahren wird dieser Ansatz näher erläutert.

So verwenden Sie einen systemeigenen CDC-Startpunkt zum Einrichten einer CDC-Last eines PostgreSQL-Quellendpunkts:
  1. Identifizieren Sie den logischen Replikations-Slot, der von einer früheren Replikationsaufgabe (einer übergeordneten Aufgabe) verwendet wird, die Sie als Startpunkt verwenden möchten. Fragen Sie dann die pg_replication_slots-Ansicht der Quelldatenbank ab, um sicherzustellen, dass dieser Slot über keine aktiven Verbindungen verfügt. Wenn dies doch der Fall ist, lösen Sie sie auf und beenden Sie sie, bevor Sie fortfahren.

    Für die folgenden Schritte gehen Sie davon aus, dass Ihr logischer Replikations-Slot abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef ist.

  2. Erstellen Sie einen neuen Quellendpunkt, der die folgenden zusätzlichen Verbindungsattributeinstellungen enthält.

    slotName=abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef;
  3. Erstellen Sie mithilfe der Konsole oder der API eine neue Aufgabe, die nur für CDC bestimmt ist. AWS CLI AWS DMS Wenn Sie die CLI verwenden, können Sie beispielsweise den folgenden Befehl create-replication-task ausführen.

    aws dms create-replication-task --replication-task-identifier postgresql-slot-name-test --source-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ABCD1EFGHIJK2LMNOPQRST3UV4 --target-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ZYX9WVUTSRQONM8LKJIHGF7ED6 --replication-instance-arn arn:aws:dms:us-west-2:012345678901:rep:AAAAAAAAAAA5BB4CCC3DDDD2EE --migration-type cdc --table-mappings "file://mappings.json" --cdc-start-position "4AF/B00000D0" --replication-task-settings "file://task-pg.json"

    Im vorhergehenden Befehl werden die folgenden Optionen festgelegt:

    • Die Option source-endpoint-arn ist auf den neuen Wert festgelegt, den Sie in Schritt 2 erstellt haben.

    • Die Option replication-instance-arn ist auf den gleichen Wert wie für die übergeordnete Aufgabe aus Schritt 1 festgelegt.

    • Die Optionen table-mappings und replication-task-settings sind auf die gleichen Werte wie für die übergeordnete Aufgabe aus Schritt 1 festgelegt.

    • Die Option cdc-start-position ist auf einen Startpositionswert festgelegt. Um diese Startposition zu finden, fragen Sie entweder die pg_replication_slots-Ansicht Ihrer Quelldatenbank ab oder sehen Sie sich die Konsolendetails für die übergeordnete Aufgabe in Schritt 1 an. Weitere Informationen finden Sie unter Bestimmen eines nativen CDC-Startpunkts.

    Gehen Sie wie folgt vor, um den benutzerdefinierten CDC-Startmodus zu aktivieren, wenn Sie eine neue reine CDC-Aufgabe über die AWS DMS Konsole erstellen:

    • Wählen Sie im Abschnitt Aufgabeneinstellungen für CDC-Startmodus für Quelltransaktionen die Option Benutzerdefinierten CDC-Startmodus aktivieren aus.

    • Wählen Sie für Benutzerdefinierter CDC-Startpunkt für Quelltransaktionen die Option Protokollsequenznummer angeben aus. Geben Sie die Systemänderungsnummer an oder wählen Sie Wiederherstellungsprüfpunkt angeben aus und geben Sie einen Wiederherstellungsprüfpunkt an.

    Wenn diese CDC-Aufgabe ausgeführt wird, wird ein Fehler AWS DMS ausgelöst, wenn der angegebene logische Replikationssteckplatz nicht existiert. Außerdem wird ein Fehler ausgelöst, wenn die Aufgabe nicht mit einer gültigen Einstellung für cdc-start-position erstellt wurde.

Wenn Sie native CDC-Startpunkte mit dem Plug-in pglogical verwenden und einen neuen Replikations-Slot verwenden möchten, führen Sie die folgenden Einrichtungsschritte durch, bevor Sie eine CDC-Aufgabe erstellen.

So verwenden Sie einen neuen Replikations-Slot, der nicht zuvor als Teil einer anderen DMS-Aufgabe erstellt wurde
  1. Erstellen Sie einen Replikations-Slot wie im Folgenden dargestellt:

    SELECT * FROM pg_create_logical_replication_slot('replication_slot_name', 'pglogical');
  2. Nachdem die Datenbank den Replikations-Slot erstellt hat, rufen Sie die Werte restart_lsn und confirmed_flush_lsn für den Slot ab und notieren Sie sich diese:

    select * from pg_replication_slots where slot_name like 'replication_slot_name';

    Beachten Sie, dass die native CDC-Startposition für eine CDC-Aufgabe, die nach dem Replikations-Slot erstellt wurde, nicht älter sein darf als der Wert confirmed_flush_lsn.

    Informationen zu den Werten restart_lsn und confirmed_flush_lsn finden Sie unter pg_replication_slots

  3. Erstellen Sie einen pglogical-Knoten.

    SELECT pglogical.create_node(node_name := 'node_name', dsn := 'your_dsn_name');
  4. Erstellen Sie mit der Funktion pglogical.create_replication_set zwei Replikationssätze. Der erste Replikationssatz verfolgt Aktualisierungen und Löschungen für Tabellen mit Primärschlüsseln nach. Der zweite Replikationssatz verfolgt nur Einfügungen nach und hat den gleichen Namen wie der erste Replikationssatz mit dem zusätzlichen Präfix „i“.

    SELECT pglogical.create_replication_set('replication_slot_name', false, true, true, false); SELECT pglogical.create_replication_set('ireplication_slot_name', true, false, false, true);
  5. Fügen Sie dem Replikationssatz eine Tabelle hinzu.

    SELECT pglogical.replication_set_add_table('replication_slot_name', 'schemaname.tablename', true); SELECT pglogical.replication_set_add_table('ireplication_slot_name', 'schemaname.tablename', true);
  6. Legen Sie das zusätzliche Verbindungsattribut (Extra Connection Attribute, ECA) wie folgt fest, wenn Sie Ihren Quellendpunkt erstellen.

    PluginName=PGLOGICAL;slotName=slot_name;

Sie können jetzt mithilfe des neuen Replikations-Slots eine reine CDC-Aufgabe mit einem nativen PostgreSQL-Startpunkt erstellen. Weitere Informationen zum Plug-in pglogical finden Sie in der Dokumentation zu pglogical 3.7.

Migration von PostgreSQL zu PostgreSQL mit AWS DMS

Wenn Sie von einer anderen Datenbank-Engine als PostgreSQL zu einer PostgreSQL-Datenbank migrieren, AWS DMS ist dies fast immer das beste Migrationstool, das Sie verwenden können. Wenn Sie jedoch aus einer PostgreSQL-Datenbank auf eine PostgreSQL-Datenbank migrieren, können native PostgreSQL-Tools effektiver sein.

Verwenden nativer PostgreSQL-Tools zur Datenmigration

Unter den folgenden Bedingungen empfehlen wir die Verwendung von PostgreSQL-Datenbank-Migrationstools wie pg_dump:

  • Sie möchten eine homogene Migration durchführen, bei der die PostgreSQL-Ausgangsdatenbank auf eine PostgreSQL-Zieldatenbank migriert werden soll.

  • Sie möchten eine komplette Datenbank migrieren.

  • Die nativen Tools erlauben Ihnen, Ihre Daten mit einer minimalen Ausfallzeit zu migrieren.

Das Dienstprogramm pg_dump verwendet den Befehl COPY, um ein Schema sowie eine Daten-Dumpdatei einer PostgreSQL-Datenbank zu erstellen. Das durch pg_dump erzeugte Dump-Skript lädt Daten in eine Datenbank mit dem gleichen Namen und erstellt die Tabellen, Indizes und Fremdschlüssel neu. Verwenden Sie den Befehl pg_restore und den Parameter -d, um die Daten in einer Datenbank mit einem anderen Namen wiederherzustellen.

Wenn Sie Daten aus einer PostgreSQL-Quelldatenbank, die auf EC2 einem Amazon RDS for PostgreSQL PostgreSQL-Ziel läuft, migrieren, können Sie das pglogical-Plugin verwenden.

Weitere Informationen zum Importieren einer PostgreSQL-Datenbank in Amazon RDS für PostgreSQL oder die Amazon-Aurora-PostgreSQL-kompatible Edition finden Sie unter https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html.

Migration von Daten von PostgreSQL auf PostgreSQL mit DMS

AWS DMS kann Daten beispielsweise von einer lokalen PostgreSQL-Quelldatenbank auf eine Amazon RDS for PostgreSQL- oder Aurora PostgreSQL-Zielinstanz migrieren. Kern- oder grundlegende PostgreSQL-Datentypen werden meist erfolgreich migriert.

Anmerkung

Wenn Sie partitionierte Tabellen aus einer PostgreSQL-Quelle in ein PostgreSQL-Ziel replizieren, müssen Sie die übergeordnete Tabelle nicht als Teil der Auswahlkriterien in der DMS-Aufgabe angeben. Wenn Sie die übergeordnete Tabelle angeben, werden Daten in untergeordneten Tabellen auf dem Ziel dupliziert, was möglicherweise eine PK-Verletzung verursacht. Wenn in den Auswahlkriterien für die Tabellenzuordnung nur untergeordnete Tabellen ausgewählt werden, wird die übergeordnete Tabelle automatisch aufgefüllt.

Datentypen, die in der Quelldatenbank, aber nicht in der Zieldatenbank unterstützt werden, werden möglicherweise nicht erfolgreich migriert. AWS DMS streamt einige Datentypen als Zeichenfolgen, wenn der Datentyp unbekannt ist. Bei einigen Datentypen, wie z. B. XML und JSON, können kleine Dateien erfolgreich migriert werden, bei großen Dokumenten schlägt die Migration jedoch fehl.

Beachten Sie bei der Datentypmigration Folgendes:

  • In Einzelfällen gibt der PostgreSQL-Datentyp NUMERIC(p,s) keine Präzision und Skalierung an. Für DMS-Versionen 3.4.2 und früher verwendet DMS standardmäßig eine Präzision von 28 und eine Skalierung von 6, NUMERIC(28,6). Beispielsweise wird der Wert 0,611111104488373 von der Quelle in 0,611111 auf dem PostgreSQL-Ziel konvertiert.

  • Eine Tabelle mit einem ARRAY-Datentyp muss über einen Primärschlüssel verfügen. Eine Tabelle mit einem ARRAY-Datentyp ohne Primärschlüssel wird während Volllastvorgängen angehalten.

Die folgende Tabelle enthält PostgreSQL-Quelldatentypen sowie Erläuterungen dazu, ob diese erfolgreich migriert werden können:

Datentyp Wird erfolgreich migriert Wird teilweise migriert Wird nicht migriert Kommentare
INTEGER X
SMALLINT X
BIGINT X
NUMERIC/DECIMAL(p,s) X Wobei 0 < p < 39 und 0 < s
NUMERIC/DECIMAL X Wobei p > 38 oder p=s=0
REAL X
DOUBLE X
SMALLSERIAL X
SERIAL X
BIGSERIAL X
MONEY X
CHAR X Ohne angegebene Genauigkeit
CHAR(n) X
VARCHAR X Ohne angegebene Genauigkeit
VARCHAR (n) X
TEXT X
BYTEA X
TIMESTAMP (ZEITSTEMPEL) X Positive und negative Unendlichkeitswerte werden auf „9999-12-31 23:59:59“ bzw. „4713-01-01 00:00:00 BC“ gekürzt.
TIMESTAMP WITH TIME ZONE X
DATUM X
TIME X
TIME WITH TIME ZONE X
INTERVAL X
BOOLEAN X
ENUM X
CIDR X
INET X
MACADDR X
TSVECTOR X
TSQUERY X
XML X
POINT X PostGIS Spatial Data-Typ
LINE X
LSEG X
BOX X
PATH X
POLYGON X PostGIS Spatial Data-Typ
CIRCLE X
JSON X
ARRAY X Primärschlüssel erforderlich
COMPOSITE X
RANGE X
LINESTRING X PostGIS Spatial Data-Typ
MULTIPOINT X PostGIS Spatial Data-Typ
MULTILINESTRING X PostGIS Spatial Data-Typ
MULTIPOLYGON X PostGIS Spatial Data-Typ
GEOMETRYCOLLECTION X PostGIS Spatial Data-Typ

Migrieren räumlicher PostGIS-Datentypen

Räumliche Daten identifizieren die Geometrieinformationen eines Objekts oder einer Position im Raum. Objektrelationale PostgreSQL-Datenbanken unterstützen räumliche PostGIS-Datentypen.

Stellen Sie vor der Migration räumlicher PostgreSQL-Datenobjekte sicher, dass das Plug-in PostGIS auf globaler Ebene aktiviert ist. Dadurch wird sichergestellt, dass die exakten räumlichen Quelldatenspalten für die PostgreSQL-Ziel-DB-Instance AWS DMS erstellt werden.

AWS DMS Unterstützt für homogene Migrationen von PostgreSQL zu PostgreSQL die Migration von geometrischen und geographischen (geodätischen Koordinaten) PostGIS-Datenobjekttypen und -Subtypen wie die folgenden:

  • POINT

  • LINESTRING

  • POLYGON

  • MULTIPOINT

  • MULTILINESTRING

  • MULTIPOLYGON

  • GEOMETRYCOLLECTION

Migration von Babelfish für Amazon Aurora PostgreSQL mit AWS DMS

Sie können die Quelltabellen von Babelfish for Aurora PostgreSQL auf alle unterstützten Zielendpunkte migrieren, indem Sie. AWS DMS

Wenn Sie Ihren AWS DMS Quellendpunkt mit der DMS-Konsole, der API oder den CLI-Befehlen erstellen, setzen Sie die Quelle auf Amazon Aurora PostgreSQL und den Datenbanknamen auf. babelfish_db Stellen Sie sicher, dass im Abschnitt Endpunkteinstellungen auf Babelfish und auf den DatabaseModeNamen der Babelfish-T-SQL-Quelldatenbank gesetzt BabelfishDatabaseNameist. Anstatt den Babelfish-TCP-Port zu verwenden1433, verwenden Sie den Aurora PostgreSQL-TCP-Port. 5432

Sie müssen Ihre Tabellen erstellen, bevor Sie Daten migrieren, um sicherzustellen, dass DMS die richtigen Datentypen und Tabellenmetadaten verwendet. Wenn Sie Ihre Tabellen nicht auf dem Ziel erstellen, bevor Sie die Migration ausführen, erstellt DMS die Tabellen möglicherweise mit falschen Datentypen und Berechtigungen.

Hinzufügen von Transformationsregeln zu Ihrer Migrationsaufgabe

Wenn Sie eine Migrationsaufgabe für eine Babelfish-Quelle erstellen, müssen Sie Transformationsregeln einbeziehen, die sicherstellen, dass DMS die vorab erstellten Zieltabellen verwendet.

Wenn Sie bei der Definition Ihres Babelfish for PostgreSQL-Clusters den Migrationsmodus für mehrere Datenbanken festgelegt haben, fügen Sie eine Transformationsregel hinzu, die den Schemanamen in das T-SQL-Schema umbenennt. Wenn der T-SQL-Schemaname beispielsweise lautet und Ihr Babelfish for PostgreSQL-Schemaname lautetdbo, benennen Sie das Schema um mydb_dbodbo, sodass es eine Transformationsregel verwendet. Den Namen des PostgreSQL-Schemas finden Sie unter Babelfish-Architektur im Amazon Aurora Aurora-Benutzerhandbuch.

Wenn Sie den Einzeldatenbankmodus verwenden, müssen Sie keine Transformationsregel verwenden, um Datenbankschemas umzubenennen. PostgreSQL-Schemanamen haben eine one-to-one Zuordnung zu den Schemanamen in der T-SQL-Datenbank.

Das folgende Beispiel für eine Transformationsregel zeigt, wie der Schemaname von mydb_dbo zurück in umbenannt wird: dbo

{ "rules": [ { "rule-type": "transformation", "rule-id": "566251737", "rule-name": "566251737", "rule-target": "schema", "object-locator": { "schema-name": "mydb_dbo" }, "rule-action": "rename", "value": "dbo", "old-value": null }, { "rule-type": "selection", "rule-id": "566111704", "rule-name": "566111704", "object-locator": { "schema-name": "mydb_dbo", "table-name": "%" }, "rule-action": "include", "filters": [] } ] }

Einschränkungen für die Verwendung eines PostgreSQL-Quellendpunkts mit Babelfish-Tabellen

Die folgenden Einschränkungen gelten, wenn Sie einen PostgreSQL-Quellendpunkt mit Babelfish-Tabellen verwenden:

  • DMS unterstützt nur die Migration von Babelfish Version 16.2/15.6 und höher sowie von DMS Version 3.5.3 und höher.

  • DMS repliziert keine Änderungen der Babelfish-Tabellendefinition auf den Zielendpunkt. Eine Lösung für diese Einschränkung besteht darin, zuerst die Änderungen der Tabellendefinition auf das Ziel anzuwenden und dann die Tabellendefinition auf der Babelfish-Quelle zu ändern.

  • Wenn Sie Babelfish-Tabellen mit dem BYTEA-Datentyp erstellen, konvertiert DMS sie bei der Migration zu SQL Server als Ziel in den varbinary(max) Datentyp.

  • DMS unterstützt den vollständigen LOB-Modus für binäre Datentypen nicht. Verwenden Sie stattdessen den eingeschränkten LOB-Modus für binäre Datentypen.

  • DMS unterstützt keine Datenvalidierung für Babelfish als Quelle.

  • Verwenden Sie für die Aufgabeneinstellung Target-Tabellenvorbereitungsmodus nur die Modi „Nichts tun“ oder „Kürzen“. Verwenden Sie nicht den Modus Tabellen am Ziel ablegen. Wenn Sie Drop-Tabellen auf Target verwenden, erstellt DMS möglicherweise die Tabellen mit falschen Datentypen.

  • Wenn Sie die fortlaufende Replikation (CDC oder Volllast und CDC) verwenden, setzen Sie das PluginName zusätzliche Verbindungsattribut (ECA) auf. TEST_DECODING

  • DMS unterstützt keine Replikation (CDC oder Full Load und CDC) von partitionierten Tabellen für Babelfish als Quelle.

AWS DMS Artefakte aus einer PostgreSQL-Quelldatenbank entfernen

AWS DMS Erstellt zum Erfassen von DDL-Ereignissen verschiedene Artefakte in der PostgreSQL-Datenbank, wenn eine Migrationsaufgabe gestartet wird. Wenn die Aufgabe abgeschlossen ist, können Sie diese Artefakte entfernen.

Entfernen Sie die Artefakte, indem Sie die folgenden Anweisungen ausgeben (in der Reihenfolge, in der sie angezeigt werden), wobei {AmazonRDSMigration} das Schema ist, in dem die Artefakte erstellt wurden. Ein Schema sollte nur mit äußerster Vorsicht gelöscht werden. Löschen Sie nie ein Schema, das in Betrieb ist, besonders kein öffentliches.

drop event trigger awsdms_intercept_ddl;

Der Ereignisauslöser gehört nicht zu einem bestimmten Schema.

drop function {AmazonRDSMigration}.awsdms_intercept_ddl() drop table {AmazonRDSMigration}.awsdms_ddl_audit drop schema {AmazonRDSMigration}

Zusätzliche Konfigurationseinstellungen bei Verwendung einer PostgreSQL-Datenbank als DMS-Quelle

Sie können zusätzliche Konfigurationseinstellungen für die Migration von Daten aus einer PostgreSQL-Datenbank auf zwei Weisen hinzufügen:

  • Sie können dem Attribut "Extra Connection" Werte hinzufügen, um DDL-Ereignisse zu erfassen und um das Schema anzugeben, in dem die betrieblichen DDL-Datenbankartefakte erstellt werden. Weitere Informationen finden Sie unter Endpunkteinstellungen und zusätzliche Verbindungsattribute (ECAs) bei Verwendung von PostgreSQL als DMS-Quelle.

  • Sie können Verbindungszeichenfolgenparameter außer Kraft setzen. Wählen Sie diese Option aus, um einen der folgenden Schritte auszuführen:

    • Geben Sie interne Parameter an. AWS DMS Solche Parameter sind selten erforderlich und werden daher nicht auf der Benutzeroberfläche angezeigt.

    • Geben Sie Pass-Through-Werte (Passthru) für den spezifischen Datenbankclient an. AWS DMS schließt Passthrough-Parameter in die Verbindungszeichenfolge ein, die an den Datenbankclient übergeben wird.

  • Mithilfe des Parameters auf Tabellenebene REPLICA IDENTITY in PostgreSQL-Versionen 9.4 und höher können Sie kontrollieren, welche Informationen in Write-Ahead-Logs () geschrieben werden. WALs Dies dient insbesondere dazu, Zeilen zu identifizieren, WALs die aktualisiert oder gelöscht werden. REPLICA IDENTITY FULLzeichnet die alten Werte aller Spalten in der Zeile auf. Gehen Sie bei jeder Tabelle REPLICA IDENTITY FULL vorsichtig FULL vor, da eine zusätzliche Anzahl WALs davon möglicherweise nicht erforderlich ist. Weitere Informationen finden Sie unter ALTER TABLE-REPLICA IDENTITY.

Verwenden der MapBooleanAsBoolean PostgreSQL-Endpunkteinstellung

Sie können PostgreSQL-Endpunkteinstellungen verwenden, um einen booleschen Wert aus Ihrer PostgreSQL-Quelle einem Amazon-Redshift-Ziel als booleschen Wert zuzuordnen. Standardmäßig wird ein BOOLEAN-Typ als varchar(5) migriert. Sie können MapBooleanAsBoolean angeben, damit PostgreSQL den booleschen Wert als booleschen Wert migriert, wie im folgenden Beispiel gezeigt.

--postgre-sql-settings '{"MapBooleanAsBoolean": true}'

Beachten Sie, dass Sie diese Einstellung sowohl am Quell- als auch am Zielendpunkt festlegen müssen, damit sie wirksam wird.

Da MySQL keinen BOOLEAN-Typ hat, sollten Sie bei der Migration von BOOLEAN-Daten nach MySQL eine Transformationsregel anstelle dieser Einstellung verwenden.

Endpunkteinstellungen und zusätzliche Verbindungsattribute (ECAs) bei Verwendung von PostgreSQL als DMS-Quelle

Sie können Endpunkteinstellungen und zusätzliche Verbindungsattribute (ECAs) verwenden, um Ihre PostgreSQL-Quelldatenbank zu konfigurieren. Sie geben Endpunkteinstellungen an, wenn Sie den Quellendpunkt mithilfe der AWS DMS Konsole oder mithilfe des create-endpoint Befehls in AWS CLI, mit der --postgre-sql-settings '{"EndpointSetting": "value", ...}' JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen ECAs , die Sie mit PostgreSQL als Quelle verwenden können.

Attributname Beschreibung

CaptureDdls

Zum Erfassen von DDL-Ereignissen werden beim Start der Aufgabe verschiedene Artefakte in der PostgreSQL-Datenbank AWS DMS erstellt. Sie können diese Artefakte zu einem späteren Zeitpunkt entfernen, wie im Abschnitt AWS DMS Artefakte aus einer PostgreSQL-Quelldatenbank entfernen beschrieben.

Wenn dieser Wert auf false gesetzt wird, müssen Sie für die Quelldatenbank keine Tabellen oder Auslöser erstellen.

Gestreamte DDL-Ereignisse werden erfasst.

Standardwert: true

Zulässige Werte: true/false

Beispiel: --postgre-sql-settings '{"CaptureDdls": true}'

ConsumeMonotonicEvents

Wird verwendet, um zu steuern, wie monolithische Transaktionen mit doppelten Protokollsequenznummern () LSNs repliziert werden. Wenn dieser Parameter aktiviert istfalse, LSNs werden Ereignisse mit Duplikaten verarbeitet und auf dem Ziel repliziert. Wenn dieser Parameter aktiviert isttrue, wird nur das erste Ereignis repliziert, während Ereignisse mit LSNs Duplikaten weder konsumiert noch auf dem Ziel repliziert werden.

Standardwert: false

Zulässige Werte: false/true

Beispiel: --postgre-sql-settings '{"ConsumeMonotonicEvents": true}'

DdlArtifactsSchema

Legt das Schema fest, in dem die operativen DDL-Datenbankartefakte erstellt werden.

Standardwert: öffentlich

Zulässige Werte: String

Beispiel: --postgre-sql-settings '{"DdlArtifactsSchema": "xyzddlschema"}'

DisableUnicodeSourceFilter

Deaktiviert den Unicode-Quellfilter mit PostgreSQL für Werte, die an den Auswahlregelfilter für Quellendpunkt-Spaltenwerte übergeben werden. Standardmäßig führt DMS Quellfiltervergleiche mithilfe einer Unicode-Zeichenfolge durch. Dies kann dazu führen, dass Suchvorgänge die Indizes in den Textspalten ignorieren und Migrationen verlangsamen.

Die Unicode-Unterstützung sollte nur deaktiviert werden, wenn ein Auswahlregelfilter für eine indizierte Textspalte in der Quelldatenbank verwendet wird.

Standardwert: false

Zulässige Werte: true/false

Beispiel: --postgre-sql-settings '{"DisableUnicodeSourceFilter": "true"}'

ExecuteTimeout

Stellt die Zeitbeschränkung der Client-Anweisung für die PostgreSQL-Instance in Sekunden ein. Der Standardwert liegt bei 60 Sekunden.

Beispiel: --postgre-sql-settings '{"ExecuteTimeout": 100}'

FailTasksOnLobTruncation

Mit der Einstellung true bewirkt dieser Wert, dass eine Aufgabe fehlschlägt, wenn die tatsächliche Größe einer LOB-Spalte größer als der angegebene LobMaxSize-Wert ist.

Wenn die Aufgabe auf den eingeschränkten LOB-Modus festgelegt ist und diese Option auf "true" festgelegt wurde, schlägt die Aufgabe fehl, anstatt LOB-Daten zu kürzen.

Standardwert: false

Zulässige Werte: Boolesch

Beispiel: --postgre-sql-settings '{"FailTasksOnLobTruncation": true}'

fetchCacheSize

Dieses zusätzliche Verbindungsattribut (ECA) legt die Anzahl der Zeilen fest, die der Cursor während des Volllastvorgangs abruft. Abhängig von den in der Replikations-Instance verfügbaren Ressourcen können Sie einen höheren oder niedrigeren Wert festlegen.

Standardwert: 10000

Zulässige Werte: Zahl

ECA-Beispiel: fetchCacheSize=10000;

HeartbeatEnable

Die WAL-Heartbeat-Funktion ahmt eine Dummy-Transaktion nach, sodass inaktive logische Replikationssteckplätze keine alten WAL-Protokolle speichern, die zu Situationen führen, in denen der Speicher auf der Quelle voll ist. Dieser Heartbeat sorgt dafür, dass restart_lsn weiter ausgeführt wird, und verhindert einen vollen Speicher.

Standardwert: false

Zulässige Werte: true/false

Beispiel: --postgre-sql-settings '{"HeartbeatEnable": true}'

HeartbeatFrequency

Stellt die WAL-Heartbeat-Frequenz ein (in Minuten).

Standardwert: 5

Zulässige Werte: Zahl

Beispiel: --postgre-sql-settings '{"HeartbeatFrequency": 1}'

HeartbeatSchema

Legt das Schema fest, in dem die Heartbeat-Artefakte erstellt werden.

Standardwert: public

Zulässige Werte: String

Beispiel: --postgre-sql-settings '{"HeartbeatSchema": "xyzheartbeatschema"}'

MapJsonbAsClob

Ordnet standardmäßig JSONB AWS DMS NCLOB zu. Sie können MapJsonbAsClob angeben, damit PostgreSQL den JSONB-Typ als CLOB migriert.

Beispiel: --postgre-sql-settings='{"MapJsonbAsClob": "true"}'

MapLongVarcharAs

Ordnet VARCHAR standardmäßig WSTRING AWS DMS zu. Sie können MapLongVarcharAs angeben, damit PostgreSQL den Typ VARCHAR(N) (wobei N größer als 16 387 ist) zu den folgenden Typen migriert:

  • WSTRING

  • CLOB

  • NCLOB

Beispiel: --postgre-sql-settings='{"MapLongVarcharAs": "CLOB"}'

MapUnboundedNumericAsString

Dieser Parameter behandelt Spalten mit unbegrenzten NUMERIC-Datentypen als STRING, um eine erfolgreiche Migration ohne Verlust der Präzision des numerischen Werts zu ermöglichen. Verwenden Sie diesen Parameter nur für die Replikation von einer PostgreSQL-Quelle zu einem PostgreSQL-Ziel oder für Datenbanken mit PostgreSQL-Kompatibilität.

Standardwert: false

Zulässige Werte: false/true

Beispiel: --postgre-sql-settings '{"MapUnboundedNumericAsString": true}'

Die Verwendung dieses Parameters kann zu einer gewissen Beeinträchtigung der Replikationsleistung führen, da eine Transformation von numerischen Werten in Zeichenfolgen und zurück in numerische Werte erfolgt. Dieser Parameter wird für DMS-Version 3.4.4 und höher unterstützt

Anmerkung

Verwenden Sie MapUnboundedNumericAsString nur in PostgreSQL-Quell- und -Zielendpunkten gemeinsam.

Bei Verwendung von MapUnboundedNumericAsString für PostgreSQL-Quellendpunkte wird die Präzision während CDC auf 28 beschränkt. Bei Verwendung von MapUnboundedNumericAsString für Zielendpunkte werden Daten mit einer Präzision von 28 und einer Skalierung von 6 migriert.

Verwenden Sie MapUnboundedNumericAsString nicht mit Nicht-PostgreSQL-Zielen.

PluginName

Gibt das Plugin an, das zum Erstellen eines Replikations-Slots verwendet werden soll.

Zulässige Werte: pglogical, test_decoding

Beispiel: --postgre-sql-settings '{"PluginName": "test_decoding"}'

SlotName

Legt den Namen eines zuvor erstellten logischen Replikations-Slots für eine CDC-Last der PostgreSQL-Quell-Instance fest.

Bei Verwendung mit dem AWS DMS CdcStartPosition API-Anforderungsparameter ermöglicht dieses Attribut auch die Verwendung systemeigener CDC-Startpunkte. Das DMS überprüft, ob der angegebene logische Replikations-Slot vorhanden ist, bevor die Aufgabe für das CDC-Laden gestartet wird. Es wird auch überprüft, ob die Aufgabe mit einer gültigen Einstellung von CdcStartPosition erstellt wurde. Wenn der angegebene Slot nicht existiert oder die Aufgabe keine gültige CdcStartPosition-Einstellung besitzt, löst DMS einen Fehler aus.

Weitere Informationen zu den Einstellungen für den CdcStartPosition-Anforderungsparameter finden Sie unter Bestimmen eines nativen CDC-Startpunkts. Weitere Informationen über CdcStartPosition finden Sie in der Dokumentation zu den API-Operationen CreateReplicationTask, StartReplicationTask und ModifyReplicationTask in der API-Referenz zum AWS Database Migration Service.

Zulässige Werte: String

Beispiel: --postgre-sql-settings '{"SlotName": "abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef"}'

unboundedVarcharMaxSize

Dieses Extra Connection Attribute (ECA) definiert die maximale Größe einer Datenspalte, die als Typ VarChar ohne Angabe der maximalen Länge definiert ist. Die Standardeinstellung ist 8000 Byte. Der Höchstwert ist 10485760 Byte.

Einschränkungen bei Verwendung einer PostgreSQL-Datenbank als DMS-Quelle

Die folgenden Einschränkungen gelten bei der Verwendung von PostgreSQL als Quelle für AWS DMS:

  • AWS DMS funktioniert nicht mit Amazon RDS for PostgreSQL 10.4 oder Amazon Aurora PostgreSQL 10.4, weder als Quelle noch als Ziel.

  • Eine erfasste Tabelle muss über einen Primärschlüssel verfügen. Wenn eine Tabelle keinen Primärschlüssel hat, werden DELETE- und UPDATE-Datensatzoperationen für diese Tabelle AWS DMS ignoriert. Informationen zur Problemumgehung finden Sie unter Aktivieren der Erfassung von Datenänderungen (CDC) mithilfe logischer Replikation.

    Hinweis: Wir raten von Migrationen ohne Primärschlüssel/eindeutigen Index ab. Andernfalls gelten zusätzliche Einschränkungen, z. B. KEINE Möglichkeit zur Stapelanwendung, vollständige LOB-Fähigkeit, Datenvalidierung und keine Möglichkeit, effizient auf das Redshift-Ziel zu replizieren.

  • AWS DMS ignoriert den Versuch, ein Primärschlüsselsegment zu aktualisieren. In diesen Fällen identifiziert die Zieldatenbank die Aktualisierung als eine, die keine Zeilen aktualisiert hat. Da die Ergebnisse der Aktualisierung eines Primärschlüssels in PostgreSQL jedoch unvorhersehbar sind, werden keine Datensätze in die Ausnahmetabelle geschrieben.

  • AWS DMS unterstützt die Ausführungsoption „Prozessänderungen anhand eines Zeitstempels starten“ nicht.

  • AWS DMS repliziert keine Änderungen, die sich aus Partitions- oder Unterpartitionsoperationen (ADDDROP, oder) ergeben. TRUNCATE

  • Die Replikation mehrerer Tabellen mit demselben Namen, wobei jeder Name eine andere Groß- und Kleinschreibung hat (z. B. Tabelle1 und Tabelle1) TABLE1, kann zu unvorhersehbarem Verhalten führen. Aufgrund dieses Problems wird diese Art der Replikation AWS DMS nicht unterstützt.

  • AWS DMS Unterstützt in den meisten Fällen die Änderungsverarbeitung der DDL-Anweisungen CREATE, ALTER und DROP für Tabellen. AWS DMS unterstützt diese Änderungsverarbeitung nicht, wenn sich die Tabellen in einem inneren Funktions- oder Prozedurtextblock oder in anderen verschachtelten Konstrukten befinden.

    Die folgende Änderung wird beispielsweise nicht erfasst:

    CREATE OR REPLACE FUNCTION attu.create_distributors1() RETURNS void LANGUAGE plpgsql AS $$ BEGIN create table attu.distributors1(did serial PRIMARY KEY,name varchar(40) NOT NULL); END; $$;
  • Derzeit werden boolean-Datentypen in einer PostgreSQL-Quelle als bit-Datentyp mit inkonsistenten Werten zu einem SQL-Server-Ziel migriert. Um dieses Problem zu umgehen, erstellen Sie die Tabelle vorab mit einem VARCHAR(1) Datentyp für die Spalte (oder lassen Sie AWS DMS die Tabelle erstellen). Dann lassen Sie die nachgeschaltete Verarbeitung ein „F“ als „False“ und ein „T“ als „True“ behandeln.

  • AWS DMS unterstützt die Änderungsverarbeitung von TRUNCATE-Vorgängen nicht.

  • Der OID LOB-Datentyp wird nicht auf das Ziel migriert.

  • AWS DMS unterstützt den PostGIS-Datentyp nur für homogene Migrationen.

  • Wenn Ihre Quelle eine PostgreSQL-Datenbank ist, die sich vor Ort oder auf einer EC2 Amazon-Instance befindet, stellen Sie sicher, dass das Ausgabe-Plugin test_decoding auf Ihrem Quellendpunkt installiert ist. Sie finden dieses Plug-in im PostgreSQL-Paket contrib. Weitere Informationen zum Test-Decodier-Plugin finden Sie in der PostgreSQL-Dokumentation.

  • AWS DMS unterstützt keine Änderungsverarbeitung zum Setzen und Löschen von Spaltenstandardwerten (unter Verwendung der ALTER COLUMN SET DEFAULT-Klausel für ALTER TABLE-Anweisungen).

  • AWS DMS unterstützt keine Änderungsverarbeitung, um die NULL-Zulässigkeit für Spalten festzulegen (unter Verwendung der ALTER COLUMN [SET|DROP] NOT NULL-Klausel für ALTER TABLE-Anweisungen).

  • Wenn die logische Replikation aktiviert ist, beträgt die maximale Anzahl von Änderungen, die pro Transaktion im Arbeitsspeicher gespeichert werden, 4 MB. Danach werden die Änderungen auf den Datenträger übertragen. Daher nimmt der Wert für ReplicationSlotDiskUsage zu und restart_lsn schreitet erst voran, wenn die Transaktion abgeschlossen oder angehalten und das Rollback beendet ist. Da es sich um eine lange Transaktion handelt, kann das Rollback lange dauern. Vermeiden Sie also lang andauernde Transaktionen oder viele Untertransaktionen, wenn die logische Replikation aktiviert ist. Teilen Sie die Transaktion stattdessen in mehrere kleinere Transaktionen auf.

    In Aurora PostgreSQL, Versionen 13 und höher, können Sie den logical_decoding_work_mem Parameter so einstellen, dass gesteuert wird, wann DMS-Daten auf die Festplatte übertragen. Weitere Informationen finden Sie unter Dateien in Aurora PostgreSQL ausgeben.

  • Eine Tabelle mit einem ARRAY-Datentyp muss über einen Primärschlüssel verfügen. Eine Tabelle mit einem ARRAY-Datentyp ohne Primärschlüssel wird während Volllastvorgängen angehalten.

  • AWS DMS unterstützt die Replikation partitionierter Tabellen nicht. Wenn eine partitionierte Tabelle erkannt wird, geschieht Folgendes:

    • Der Endpunkt meldet eine Liste von über- und untergeordneten Tabellen.

    • AWS DMS erstellt die Tabelle auf dem Ziel als reguläre Tabelle mit denselben Eigenschaften wie die ausgewählten Tabellen.

    • Wenn die übergeordnete Tabelle in der Quelldatenbank denselben Primärschlüsselwert wie ihre untergeordneten Tabellen hat, wird ein "Duplikatschlüssel" generiert.

  • Um partitionierte Tabellen aus einer PostgreSQL-Quelle auf ein PostgreSQL-Ziel zu replizieren, müssen Sie zunächst die über- und untergeordneten Tabellen im Ziel manuell erstellen. Definieren Sie anschließend eine separate Aufgabe, um auf diese Tabellen zu replizieren. Legen Sie die Aufgabenkonfiguration in solchen Fällen auf Vor dem Laden kürzen fest.

  • Der PostgreSQL-Datentyp NUMERIC verfügt über keine feste Größe. Wenn Sie Daten mit dem Datentyp NUMERIC, jedoch ohne Präzision und Skalierung übertagen, verwendet DMS standardmäßig NUMERIC(28,6) (mit 28 als Genauigkeit und 6 als Skalierung). Beispielsweise wird der Wert 0,611111104488373 von der Quelle auf dem PostgreSQL-Ziel in 0,611111 konvertiert.

  • AWS DMS unterstützt Aurora PostgreSQL Serverless V1 nur als Quelle für Volllastaufgaben. AWS DMS unterstützt Aurora PostgreSQL Serverless V2 als Quelle für Volllast-, Volllast- und CDC- und reine CDC-Aufgaben.

  • AWS DMS unterstützt nicht die Replikation einer Tabelle mit einem eindeutigen Index, der mit einer Koaleszenzfunktion erstellt wurde.

  • Wenn die Primärschlüsseldefinition für Quelle und Ziel nicht übereinstimmt, sind die Ergebnisse der Replikation möglicherweise nicht vorhersehbar.

  • Bei Verwendung des Features für paralleles Laden wird die Tabellensegmentierung nach Partitionen oder Unterpartitionen nicht unterstützt. Weitere Informationen zum parallelen Laden finden Sie unter Verwendung des parallelen Ladens für ausgewählte Tabellen und Ansichten.

  • AWS DMS unterstützt keine verzögerten Beschränkungen.

  • AWS DMS Version 3.4.7 unterstützt PostgreSQL 14.x als Quelle mit diesen Einschränkungen:

    • AWS DMS unterstützt keine Änderungsverarbeitung von zweiphasigen Commits.

    • AWS DMS unterstützt keine logische Replikation, um lange laufende Transaktionen zu streamen.

  • AWS DMS unterstützt CDC für Amazon RDS Proxy for PostgreSQL nicht als Quelle.

  • Bei der Verwendung von Quellfiltern, die keine Primärschlüsselspalte enthalten, werden DELETE-Operationen nicht erfasst.

  • Wenn Ihre Quelldatenbank auch ein Ziel für ein anderes Replikationssystem eines Drittanbieters ist, werden DDL-Änderungen während CDC möglicherweise nicht migriert. Diese Situation kann das Auslösen des Ereignisauslösers awsdms_intercept_ddl verhindern. Ändern Sie diesen Auslöser in der Quelldatenbank wie folgt, um das Problem zu umgehen:

    alter event trigger awsdms_intercept_ddl enable always;
  • AWS DMS unterstützt CDC für Amazon RDS Multi-AZ-Datenbankcluster für PostgreSQL nicht als Quelle, da RDS für PostgreSQL Multi-AZ-Datenbankcluster keine logische Replikation unterstützen.

Quelldatentypen für PostgreSQL

Die folgende Tabelle zeigt die PostgreSQL-Quelldatentypen, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuweisung zu AWS DMS Datentypen.

Weitere Informationen zum Anzeigen des Datentyps, der im Ziel zugewiesen ist, finden Sie im Abschnitt für den Zielendpunkt, den Sie verwenden.

Weitere Informationen zu AWS DMS Datentypen finden Sie unter. Datentypen für den AWS Database Migration Service

PostgreSQL-Datentypen

DMS-Datentypen

INTEGER

INT4

SMALLINT

INT2

BIGINT

INT8

NUMERIC (p,s)

Wenn die Präzision 0 bis 38 ist, verwenden Sie NUMERIC.

Wenn die Präzision 39 oder größer ist, verwenden Sie STRING.

DECIMAL(P,S)

Wenn die Präzision 0 bis 38 ist, verwenden Sie NUMERIC.

Wenn die Präzision 39 oder größer ist, verwenden Sie STRING.

REAL

REAL4

DOUBLE

REAL8

SMALLSERIAL

INT2

SERIAL

INT4

BIGSERIAL

INT8

MONEY

NUMERIC(38,4)

Der Datentyp MONEY ist in SQL Server FLOAT zugeordnet.

CHAR

WSTRING (1)

CHAR(N)

WSTRING (n)

VARCHAR(N)

WSTRING (n)

TEXT

NCLOB

ZITATEXT

NCLOB

BYTEA

BLOB

TIMESTAMP (ZEITSTEMPEL)

DATETIME

TIMESTAMP WITH TIME ZONE

DATETIME

DATUM

DATUM

TIME

TIME

TIME WITH TIME ZONE

TIME

INTERVAL

STRING (128) – 1 JAHR, 2 MONATE, 3 TAGE, 4 STUNDEN, 5 MINUTEN, 6 SEKUNDEN

BOOLEAN

CHAR (5) "false" oder "true"

ENUM

STRING (64)

CIDR

STRING (50)

INET

STRING (50)

MACADDR

STRING (18)

BIT (n)

STRING (n)

BIT VARYING (n)

STRING (n)

UUID

STRING

TSVECTOR

CLOB

TSQUERY

CLOB

XML

CLOB

POINT

STRING (255) "(x,y)"

LINE

STRING (255) "(x,y,z)"

LSEG

STRING (255) "((x1,y1),(x2,y2))"

BOX

STRING (255) "((x1,y1),(x2,y2))"

PATH

CLOB "((x1,y1),(xn,yn))"

POLYGON

CLOB "((x1,y1),(xn,yn))"

CIRCLE

STRING (255) "(x,y),r"

JSON

NCLOB

JSONB

NCLOB

ARRAY

NCLOB

COMPOSITE

NCLOB

HSTORE

NCLOB

INT4REICHWEITE

STRING (255)

INT8REICHWEITE

STRING (255)

NUMRANGE

STRING (255)

STRRANGE

STRING (255)

Arbeiten mit LOB-Quelldatentypen für PostgreSQL

PostgreSQL-Spaltengrößen wirken sich auf die Konvertierung von PostgreSQL-LOB-Datentypen in AWS DMS -Datentypen aus. Um damit zu arbeiten, führen Sie für die folgenden AWS DMS -Datentypen folgende Schritte aus:

  • BLOB – Legen Sie bei der Aufgabenerstellung für LOB-Grenze begrenzen auf den Wert Maximale LOB-Größe (KB) fest.

  • CLOB — Bei der Replikation wird jedes Zeichen als ein UTF8 Zeichen behandelt. Suchen Sie daher nach der Länge des längsten Zeichentextes in der Spalte, hier als max_num_chars_text gezeigt. Nutzen Sie diese Länge, um den Wert für LOB-Größe begrenzen auf anzugeben. Wenn die Daten 4-Byte-Zeichen enthalten, multiplizieren Sie diese mit 2, um den Wert Limit LOB size to (LOB-Größe begrenzen auf) festzulegen, da dieser in Bytes angegeben wird. In diesem Fall ist Limit LOB size to (LOB-Größe begrenzen auf) gleich max_num_chars_text, multipliziert mit 2.

  • NCLOB – Die Replikation verarbeitet jedes Zeichen als Doppelbyte-Zeichen. Suchen Sie daher nach der Länge des längsten Zeichentextes in der Spalte (max_num_chars_text) und multiplizieren ihn mit 2. Auf diese Weise geben Sie den Wert für LOB-Größe begrenzen auf an. In diesem Fall ist Limit LOB size to (LOB-Größe begrenzen auf) gleich max_num_chars_text, multipliziert mit 2. Wenn die Daten 4-Byte-Zeichen enthalten, multiplizieren Sie diese erneut mit 2. In diesem Fall ist Limit LOB size to (LOB-Größe begrenzen auf) gleich max_num_chars_text, multipliziert mit 4.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.