Auf dieser Seite wird beschrieben, wie Sie Ihre Quelldatenbankinstanzen für standardmäßige homogene PostgreSQL-Migrationen konfigurieren. Wenn Sie Schnellstart-Migrationen verwenden möchten, folgen Sie der Anleitung unter
Schnellstart-Migrationen verwenden.
Schnellstartmigrationen bieten einen vereinfachten Migrationsablauf, der die pgnative-Replikation und eine spezielle Verbindung auf Basis von Private Service Connect-Schnittstellen verwendet. Weitere Informationen finden Sie in der Hauptdokumentation zu Database Migration Service unter
Informationen zu Schnellstart-Migrationen.
Diese Seite enthält Abschnitte für jede unterstützte Quelle:
- Selbstverwaltetes PostgreSQL (lokal oder auf einer Compute Engine-VM)
- Amazon RDS for PostgreSQL
- Amazon Aurora for PostgreSQL
- Microsoft Azure Database for PostgreSQL Flexible Server
- Cloud SQL for PostgreSQL
Selbstverwaltete PostgreSQL-Quelle konfigurieren
So konfigurieren Sie eine selbstverwaltete PostgreSQL-Quellinstanz (lokal oder auf einer Compute Engine-VM gehostet) für den Migrationsprozess:
- Bei selbstverwalteten PostgreSQL-Quellen migriert Database Migration Service alle Datenbanken unter Ihrer Quellinstanz, mit Ausnahme der Vorlagendatenbanken
template0undtemplate1. - Achten Sie darauf, dass die Quellinstanz die Standarddatenbank
postgresenthält. Wenn diese Datenbank nicht vorhanden ist, erstellen Sie sie, bevor Sie die Migration konfigurieren. - Konfigurieren Sie die Netzwerkclient-Authentifizierung in der Datei
pg_hba.conf. Fügen Sie Einträge hinzu, die Replikationsverbindungen und Datenbankzugriff von der ausgehenden IP-Adresse, dem VPC-CIDR-Bereich oder dem Reverse-SSH-Bastion-Host der Cloud SQL-Zielinstanz zulassen:# Allow replication connections host replication MIGRATION_USER_ACCOUNT_NAME DESTINATION_IP_OR_CIDR md5 # Allow database access host all MIGRATION_USER_ACCOUNT_NAME DESTINATION_IP_OR_CIDR md5
Laden Sie die PostgreSQL-Konfiguration neu, um die
pg_hba.conf-Regeln anzuwenden:SELECT pg_reload_conf();
- Prüfen Sie die PostgreSQL-Erweiterungen, die in Ihren Quelldatenbanken installiert sind.
Der Database Migration Service migriert keine Erweiterungen, die von Cloud SQL nicht unterstützt werden.
Prüfen Sie, ob Ihre Quelldatenbankobjekte und Anwendungsabfragen auf nicht unterstützte Erweiterungen verweisen.
Entfernen Sie nicht unterstützte Erweiterungen und Verweise aus Ihren Quelldatenbanken, bevor Sie fortfahren.
Die
pg_cron-Erweiterung wird nicht automatisch vom Database Migration Service migriert, wird aber in Cloud SQL for PostgreSQL-Zielen unterstützt. Wenn Siepg_cronin Ihrer Quelldatenbank verwenden, installieren Sie es nach dem Hochstufen der Migration auf der Zielinstanz neu und konfigurieren Sie es. - Erstellen Sie in Ihrer Quellinstanz ein dediziertes Nutzerkonto für die Migration und gewähren Sie ihm die erforderlichen Berechtigungen:
- Stellen Sie über ein Administratorkonto eine Verbindung zur Quellinstanz her, erstellen Sie den Nutzer und weisen Sie die Replikationsrolle zu:
CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH REPLICATION;
- Gewähren Sie dem Migrationsnutzerkonto die erforderlichen Berechtigungen für die Standarddatenbank
postgressowie für jede Datenbank, die Sie migrieren möchten. Führen Sie die folgenden Befehle in jeder Datenbank für jedes Schema aus (mit Ausnahme des Informationsschemas und der Schemas, die mitpg_beginnen):GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Stellen Sie über ein Administratorkonto eine Verbindung zur Quellinstanz her, erstellen Sie den Nutzer und weisen Sie die Replikationsrolle zu:
- Installieren Sie die Erweiterung
pglogicalin jeder Datenbank, die Sie migrieren möchten, mit Ausnahme vontemplate0undtemplate1:- Für PostgreSQL-Version 9.4: Führen Sie den folgenden Befehl aus:
CREATE EXTENSION IF NOT EXISTS pglogical; CREATE EXTENSION IF NOT EXISTS pglogical_origin;
- Für PostgreSQL-Version 9.5 und höher: Führen Sie den folgenden Befehl aus:
CREATE EXTENSION IF NOT EXISTS pglogical;
- Für PostgreSQL-Version 9.4: Führen Sie den folgenden Befehl aus:
- Prüfen Sie, ob Ihre Tabellen Primärschlüssel haben. Für kontinuierliche Migrationen erfordert die logische PostgreSQL-Replikation, dass Tabellen Primärschlüssel haben, um
UPDATE- undDELETE-Vorgänge während der Change Data Capture-Phase (CDC) zu replizieren:- Tabellen mit einem Primärschlüssel replizieren alle
INSERT-,UPDATE- undDELETE-Vorgänge automatisch. - Bei Tabellen ohne Primärschlüssel unterstützt Database Migration Service nur die Migration des ersten Snapshots und der nachfolgenden
INSERT-Anweisungen während der CDC-Phase. Sie müssen die AnweisungenUPDATEundDELETEmanuell migrieren.Wir empfehlen, Tabellen ohne Primärschlüssel vor Beginn der Migration Primärschlüssel hinzuzufügen. Informationen zum Generieren einer Abfrage zum Auflisten von Tabellen in einer PostgreSQL-Datenbank ohne Primärschlüssel oder zum manuellen Migrieren von
UPDATE- undDELETE-Vorgängen finden Sie unter Debugging und andere Tools.Alternativ können Sie den Schnellstart-Migrationsablauf verwenden: ein vereinfachtes Migrationsszenario, bei dem Sie
REPLICA IDENTITYverwenden können, um Tabellen ohne Primärschlüssel zu migrieren. Weitere Informationen finden Sie im Leitfaden Schnellstart-Migrationen verwenden.
- Tabellen mit einem Primärschlüssel replizieren alle
- Quellen mit PostgreSQL-Version 9.5 und niedriger: Der Messwert für die Replikationsverzögerung ist für Quellinstanzen mit PostgreSQL-Versionen vor 9.6 nicht verfügbar. Wenn Sie diesen Messwert verwenden möchten, um den Migrationsfortschritt zu verfolgen, lesen Sie den Abschnitt Replikationsverzögerung aktivieren.
- Installieren Sie das Paket
pglogicalund konfigurieren Sie die WAL- und Replikationsparameter auf Ihrem PostgreSQL-Server:- Installieren Sie das Paket
pglogicalauf dem Hostbetriebssystem Ihres Datenbankservers. Pakete und Installationsanleitungen für Ihre Distribution finden Sie im pglogical-GitHub-Repository. - Stellen Sie mit einem Administratorkonto eine Verbindung zu Ihrer PostgreSQL-Instanz her und legen Sie die folgenden Parameter fest:
- Legen Sie
shared_preload_librariesso fest, dass'pglogical'enthalten ist:ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
- Setzen Sie
wal_levelauf'logical':ALTER SYSTEM SET wal_level = 'logical';
Weitere Informationen finden Sie in der PostgreSQL-Dokumentation unter
wal_level. - Setzen Sie
wal_sender_timeoutauf0:ALTER SYSTEM SET wal_sender_timeout = 0;
Der Wert
0deaktiviert das Zeitlimit, das zum Beenden inaktiver Replikationsverbindungen verwendet wird. Weitere Informationen finden Sie unterwal_sender_timeout. - Legen Sie für
max_replication_slotsmindestens die Anzahl der zu migrierenden Datenbanken multipliziert mit der Anzahl der Migrationsjobs fest, zuzüglich Reserven für die Tabellensynchronisierung:Wenn die Quellinstanz beispielsweise 5 Datenbanken hat und Sie 2 Migrationsjobs für diese Quelle erstellen, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 betragen, zuzüglich der Anzahl der Replikations-Slots, die bereits von anderen Aufgaben in der Quelle verwendet werden. Wenn Sie angepasste Einstellungen für die Parallelität von Datendumps verwenden möchten, müssen Sie die Anzahl der Replikationsslots erhöhen und Ihre Konfiguration prüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjobtest ausführen.
ALTER SYSTEM SET max_replication_slots = MAX_REPLICATION_SLOTS;
Der Standardwert für diesen Parameter ist 10. Siehe
max_replication_slots. - Setzen Sie
max_wal_sendersauf mindestens den Wert vonmax_replication_slotsplus die Anzahl der Absender, die bereits auf Ihrer Instanz verwendet werden:Wenn für den Parameter
max_replication_slotsbeispielsweise der Wert10festgelegt ist und Sie bereits zwei Absender verwenden, beträgt die Anzahl der gleichzeitig ausgeführten WAL-Senderprozesse 10 + 2 = 12. Wenn Sie angepasste Einstellungen für die Parallelität des Datendumps verwenden möchten, müssen Sie die Anzahl der Absender erhöhen und Ihre Konfiguration prüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjobtest ausführen.ALTER SYSTEM SET max_wal_senders = MAX_WAL_SENDERS;
Der Standardwert für diesen Parameter ist 10. Siehe
max_wal_senders. - Setzen Sie
max_worker_processesauf mindestens die Anzahl der zu migrierenden Datenbanken plus die Anzahl der vorhandenen Worker-Prozesse auf Ihrer Instanz. Wenn Sie angepasste Einstellungen für die Parallelität des Daten-Dumps verwenden möchten, müssen Sie zwei zusätzliche Worker-Prozesse pro Verbindung berücksichtigen (bis zu maximal 20 Worker):ALTER SYSTEM SET max_worker_processes = MAX_WORKER_PROCESSES;
Der Standardwert für diesen Parameter ist 8. Siehe
max_worker_processes.
- Legen Sie
- Installieren Sie das Paket
- Starten Sie den PostgreSQL-Server neu, damit die Konfigurationsänderungen wirksam werden.
Amazon RDS for PostgreSQL-Quelle konfigurieren
So konfigurieren Sie eine Amazon RDS for PostgreSQL-Quellinstanz für den Migrationsprozess:
- Bei Amazon RDS for PostgreSQL-Quellen migriert Database Migration Service alle Datenbanken unter Ihrer Quellinstanz, mit Ausnahme der Vorlagendatenbanken
template0,template1und der internen AWS-Datenbankrdsadmin. - Achten Sie darauf, dass die Quellinstanz die Standarddatenbank
postgresenthält. Wenn diese Datenbank nicht vorhanden ist, erstellen Sie sie, bevor Sie die Migration konfigurieren. - Konfigurieren Sie die Regeln für eingehenden Traffic der Amazon RDS-VPC-Sicherheitsgruppe.
Lassen Sie eingehende TCP-Verbindungen an Port
5432von der ausgehenden IP-Adresse der Cloud SQL-Zieldatenbank, dem VPC-CIDR-Bereich oder der Reverse-SSH-Bastion-Host-VM zu. - Prüfen Sie die PostgreSQL-Erweiterungen, die in Ihren Quelldatenbanken installiert sind.
Der Database Migration Service migriert keine Erweiterungen, die von Cloud SQL nicht unterstützt werden.
Prüfen Sie, ob Ihre Quelldatenbankobjekte und Anwendungsabfragen auf nicht unterstützte Erweiterungen verweisen.
Entfernen Sie nicht unterstützte Erweiterungen und Verweise aus Ihren Quelldatenbanken, bevor Sie fortfahren.
Die
pg_cron-Erweiterung wird nicht automatisch vom Database Migration Service migriert, wird aber in Cloud SQL for PostgreSQL-Zielen unterstützt. Wenn Siepg_cronin Ihrer Quelldatenbank verwenden, installieren Sie es nach dem Hochstufen der Migration auf der Zielinstanz neu und konfigurieren Sie es. - Erstellen Sie in Ihrer Quellinstanz ein dediziertes Nutzerkonto für die Migration und gewähren Sie ihm die erforderlichen Berechtigungen:
- Stellen Sie mit einem Administratorkonto eine Verbindung zur Quellinstanz her, erstellen Sie den Nutzer und weisen Sie die von AWS verwaltete Rolle
rds_replicationzu:CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
- Gewähren Sie dem Migrationsnutzerkonto die erforderlichen Berechtigungen für die Standarddatenbank
postgressowie für jede Datenbank, die Sie migrieren möchten. Führen Sie die folgenden Befehle in jeder Datenbank für jedes Schema aus (mit Ausnahme des Informationsschemas und der Schemas, die mitpg_beginnen):GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Stellen Sie mit einem Administratorkonto eine Verbindung zur Quellinstanz her, erstellen Sie den Nutzer und weisen Sie die von AWS verwaltete Rolle
- Installieren Sie die Erweiterung
pglogicalin jeder Datenbank, die Sie migrieren möchten, mit Ausnahme vontemplate0,template1undrdsadmin:- Für PostgreSQL-Version 9.4: Führen Sie den folgenden Befehl aus:
CREATE EXTENSION IF NOT EXISTS pglogical; CREATE EXTENSION IF NOT EXISTS pglogical_origin;
- Für PostgreSQL-Version 9.5 und höher: Führen Sie den folgenden Befehl aus:
CREATE EXTENSION IF NOT EXISTS pglogical;
Weitere Informationen zu den Anforderungen finden Sie in der AWS-Dokumentation unter PostgreSQL-Erweiterungen mit Amazon RDS for PostgreSQL verwenden.
- Für PostgreSQL-Version 9.4: Führen Sie den folgenden Befehl aus:
- Prüfen Sie, ob Ihre Tabellen Primärschlüssel haben. Für kontinuierliche Migrationen erfordert die logische PostgreSQL-Replikation, dass Tabellen Primärschlüssel haben, um
UPDATE- undDELETE-Vorgänge während der Change Data Capture-Phase (CDC) zu replizieren:- Tabellen mit einem Primärschlüssel replizieren alle
INSERT-,UPDATE- undDELETE-Vorgänge automatisch. - Bei Tabellen ohne Primärschlüssel unterstützt Database Migration Service nur die Migration des ersten Snapshots und der nachfolgenden
INSERT-Anweisungen während der CDC-Phase. Sie müssen die AnweisungenUPDATEundDELETEmanuell migrieren.Wir empfehlen, Tabellen ohne Primärschlüssel vor Beginn der Migration Primärschlüssel hinzuzufügen. Informationen zum Generieren einer Abfrage zum Auflisten von Tabellen in einer PostgreSQL-Datenbank ohne Primärschlüssel oder zum manuellen Migrieren von
UPDATE- undDELETE-Vorgängen finden Sie unter Debugging und andere Tools.Alternativ können Sie den Schnellstart-Migrationsablauf verwenden: ein vereinfachtes Migrationsszenario, bei dem Sie
REPLICA IDENTITYverwenden können, um Tabellen ohne Primärschlüssel zu migrieren. Weitere Informationen finden Sie im Leitfaden Schnellstart-Migrationen verwenden.
- Tabellen mit einem Primärschlüssel replizieren alle
- Quellen mit PostgreSQL-Version 9.5 und niedriger: Der Messwert für die Replikationsverzögerung ist für Quellinstanzen mit PostgreSQL-Versionen vor 9.6 nicht verfügbar. Wenn Sie diesen Messwert verwenden möchten, um den Migrationsfortschritt zu verfolgen, lesen Sie den Abschnitt Replikationsverzögerung aktivieren.
- Konfigurieren Sie eine benutzerdefinierte DB-Parametergruppe und hängen Sie sie an Ihre Instanz an:
- Erstellen Sie eine benutzerdefinierte Parametergruppe (siehe
Mit DB-Parametergruppen arbeiten in der AWS-Dokumentation) und konfigurieren Sie die folgenden Parameter:
- Legen Sie
shared_preload_librariesso fest, dasspglogicalenthalten ist. - Setzen Sie
rds.logical_replicationauf1. Mit diesem Parameter wird das logische WAL-Logging in Amazon RDS aktiviert. Weitere Informationen finden Sie unter Logische Replikation für Amazon RDS for PostgreSQL. - Setzen Sie
wal_sender_timeoutauf0. Der Wert0deaktiviert das Zeitlimit, das zum Beenden inaktiver Replikationsverbindungen verwendet wird. - Legen Sie für
max_replication_slotsmindestens die Anzahl der zu migrierenden Datenbanken multipliziert mit der Anzahl der Migrationsjobs fest, zuzüglich Reserven für die Tabellensynchronisierung:Wenn die Quellinstanz beispielsweise 5 Datenbanken hat und Sie 2 Migrationsjobs für diese Quelle erstellen, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 betragen, zuzüglich der Anzahl der Replikations-Slots, die bereits von anderen Aufgaben in der Quelle verwendet werden. Wenn Sie angepasste Einstellungen für die Parallelität von Datendumps verwenden möchten, müssen Sie die Anzahl der Replikationsslots erhöhen und Ihre Konfiguration prüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjobtest ausführen.
Der Standardwert für diesen Parameter ist 10.
- Setzen Sie
max_wal_sendersauf mindestens den Wert vonmax_replication_slotsplus die Anzahl der Absender, die bereits auf Ihrer Instanz verwendet werden:Wenn für den Parameter
max_replication_slotsbeispielsweise der Wert10festgelegt ist und Sie bereits zwei Absender verwenden, beträgt die Anzahl der gleichzeitig ausgeführten WAL-Senderprozesse 10 + 2 = 12. Wenn Sie angepasste Einstellungen für die Parallelität des Datendumps verwenden möchten, müssen Sie die Anzahl der Absender erhöhen und Ihre Konfiguration prüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjobtest ausführen.Der Standardwert für diesen Parameter ist 10.
- Setzen Sie
max_worker_processesauf mindestens die Anzahl der zu migrierenden Datenbanken plus die Anzahl der vorhandenen Worker-Prozesse auf Ihrer Instanz. Wenn Sie angepasste Einstellungen für die Parallelität des Daten-Dumps verwenden möchten, müssen Sie zwei zusätzliche Worker-Prozesse pro Verbindung berücksichtigen (bis zu maximal 20 Worker):Der Standardwert für diesen Parameter ist 8.
- Legen Sie
- Hängen Sie die Parametergruppe an Ihre RDS-Datenbankinstanz an. Wenn Sie eine neue Instanz erstellen, finden Sie diese Option unter Zusätzliche Konfiguration. Andernfalls ändern Sie die Instanz, um die Parametergruppe anzuhängen.
- Erstellen Sie eine benutzerdefinierte Parametergruppe (siehe
Mit DB-Parametergruppen arbeiten in der AWS-Dokumentation) und konfigurieren Sie die folgenden Parameter:
- Starten Sie die Amazon RDS-Instanz neu, damit die Änderungen an der Parametergruppe wirksam werden.
Amazon Aurora for PostgreSQL-Quelle konfigurieren
So konfigurieren Sie einen Amazon Aurora PostgreSQL-Quellcluster für den Migrationsprozess:
- Bei Amazon Aurora for PostgreSQL-Quellen migriert der Database Migration Service alle Datenbanken in Ihrem Quellcluster mit Ausnahme der Vorlagendatenbanken
template0,template1und der internen AWS-Datenbankrdsadmin. - Achten Sie darauf, dass Ihr Quellcluster die Standarddatenbank
postgresenthält. Wenn diese Datenbank nicht vorhanden ist, erstellen Sie sie, bevor Sie die Migration konfigurieren. - Konfigurieren Sie die Regeln für eingehenden Traffic der VPC-Sicherheitsgruppe Ihres Amazon Aurora-Clusters.
Lassen Sie eingehende TCP-Verbindungen an Port
5432von der ausgehenden IP-Adresse der Cloud SQL-Zieldatenbank, dem VPC-CIDR-Bereich oder der Reverse-SSH-Bastion-Host-VM zu. - Prüfen Sie die PostgreSQL-Erweiterungen, die in Ihren Quelldatenbanken installiert sind.
Der Database Migration Service migriert keine Erweiterungen, die von Cloud SQL nicht unterstützt werden.
Prüfen Sie, ob Ihre Quelldatenbankobjekte und Anwendungsabfragen auf nicht unterstützte Erweiterungen verweisen.
Entfernen Sie nicht unterstützte Erweiterungen und Verweise aus Ihren Quelldatenbanken, bevor Sie fortfahren.
Die
pg_cron-Erweiterung wird nicht automatisch vom Database Migration Service migriert, wird aber in Cloud SQL for PostgreSQL-Zielen unterstützt. Wenn Siepg_cronin Ihrer Quelldatenbank verwenden, installieren Sie es nach dem Hochstufen der Migration auf der Zielinstanz neu und konfigurieren Sie es. - Erstellen Sie in Ihrem Quellcluster ein dediziertes Nutzerkonto für die Migration und gewähren Sie ihm die erforderlichen Berechtigungen:
- Stellen Sie mit einem Administratorkonto eine Verbindung zum Quellcluster her, erstellen Sie den Nutzer und weisen Sie die von AWS verwaltete Rolle
rds_replicationzu:CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
- Gewähren Sie dem Migrationsnutzerkonto die erforderlichen Berechtigungen für die Standarddatenbank
postgressowie für jede Datenbank, die Sie migrieren möchten. Führen Sie die folgenden Befehle in jeder Datenbank für jedes Schema aus (mit Ausnahme des Informationsschemas und der Schemas, die mitpg_beginnen):GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Stellen Sie mit einem Administratorkonto eine Verbindung zum Quellcluster her, erstellen Sie den Nutzer und weisen Sie die von AWS verwaltete Rolle
- Installieren Sie die Erweiterung
pglogicalin jeder Datenbank, die Sie migrieren möchten, mit Ausnahme vontemplate0,template1undrdsadmin:CREATE EXTENSION IF NOT EXISTS pglogical;
- Prüfen Sie, ob Ihre Tabellen Primärschlüssel haben. Für kontinuierliche Migrationen erfordert die logische PostgreSQL-Replikation, dass Tabellen Primärschlüssel haben, um
UPDATE- undDELETE-Vorgänge während der Change Data Capture-Phase (CDC) zu replizieren:- Tabellen mit einem Primärschlüssel replizieren alle
INSERT-,UPDATE- undDELETE-Vorgänge automatisch. - Bei Tabellen ohne Primärschlüssel unterstützt Database Migration Service nur die Migration des ersten Snapshots und der nachfolgenden
INSERT-Anweisungen während der CDC-Phase. Sie müssen die AnweisungenUPDATEundDELETEmanuell migrieren.Wir empfehlen, Tabellen ohne Primärschlüssel vor Beginn der Migration Primärschlüssel hinzuzufügen. Informationen zum Generieren einer Abfrage zum Auflisten von Tabellen in einer PostgreSQL-Datenbank ohne Primärschlüssel oder zum manuellen Migrieren von
UPDATE- undDELETE-Vorgängen finden Sie unter Debugging und andere Tools.Alternativ können Sie den Schnellstart-Migrationsablauf verwenden: ein vereinfachtes Migrationsszenario, bei dem Sie
REPLICA IDENTITYverwenden können, um Tabellen ohne Primärschlüssel zu migrieren. Weitere Informationen finden Sie im Leitfaden Schnellstart-Migrationen verwenden.
- Tabellen mit einem Primärschlüssel replizieren alle
- Konfigurieren Sie eine benutzerdefinierte DB-Cluster-Parametergruppe und hängen Sie sie an Ihren Cluster an:
- Erstellen Sie eine benutzerdefinierte DB-Cluster-Parametergruppe und konfigurieren Sie die folgenden Parameter:
- Legen Sie
shared_preload_librariesso fest, dasspglogicalenthalten ist. - Setzen Sie
rds.logical_replicationauf1. Mit diesem Parameter wird das logische WAL-Logging aktiviert. - Setzen Sie
wal_sender_timeoutauf0. Der Wert0deaktiviert das Zeitlimit, das zum Beenden inaktiver Replikationsverbindungen verwendet wird. - Legen Sie für
max_replication_slotsmindestens die Anzahl der zu migrierenden Datenbanken multipliziert mit der Anzahl der Migrationsjobs fest, zuzüglich Reserven für die Tabellensynchronisierung:Wenn die Quellinstanz beispielsweise 5 Datenbanken hat und Sie 2 Migrationsjobs für diese Quelle erstellen, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 sein, zuzüglich der Anzahl der Replikations-Slots, die bereits von anderen Aufgaben in der Quelle verwendet werden. Wenn Sie angepasste Einstellungen für die Parallelität von Datendumps verwenden möchten, müssen Sie die Anzahl der Replikationsslots erhöhen und Ihre Konfiguration prüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjobtest ausführen.
Der Standardwert für diesen Parameter ist 10.
- Setzen Sie
max_wal_sendersauf mindestens den Wert vonmax_replication_slotsplus die Anzahl der Absender, die bereits auf Ihrer Instanz verwendet werden:Wenn für den Parameter
max_replication_slotsbeispielsweise der Wert10festgelegt ist und Sie bereits zwei Absender verwenden, beträgt die Anzahl der gleichzeitig ausgeführten WAL-Senderprozesse 10 + 2 = 12. Wenn Sie angepasste Einstellungen für die Parallelität des Datendumps verwenden möchten, müssen Sie die Anzahl der Absender erhöhen und Ihre Konfiguration prüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjobtest ausführen.Der Standardwert für diesen Parameter ist 10.
- Setzen Sie
max_worker_processesauf mindestens die Anzahl der zu migrierenden Datenbanken plus die Anzahl der vorhandenen Worker-Prozesse auf Ihrer Instanz. Wenn Sie angepasste Einstellungen für die Parallelität des Daten-Dumps verwenden möchten, müssen Sie zwei zusätzliche Worker-Prozesse pro Verbindung berücksichtigen (bis zu maximal 20 Worker):Der Standardwert für diesen Parameter ist 8.
- Legen Sie
- Hängen Sie die Parametergruppe des DB-Clusters an den Aurora-DB-Cluster an.
- Erstellen Sie eine benutzerdefinierte DB-Cluster-Parametergruppe und konfigurieren Sie die folgenden Parameter:
- Starten Sie den Amazon Aurora-DB-Cluster neu, damit die Änderungen an der Parametergruppe wirksam werden.
Microsoft Azure Database for PostgreSQL Flexible Server-Quelle konfigurieren
So konfigurieren Sie eine Microsoft Azure Database for PostgreSQL Flexible Server-Quellinstanz für den Migrationsprozess:
- Bei Microsoft Azure Database for PostgreSQL Flexible Server-Quellen migriert der Database Migration Service alle Datenbanken unter Ihrer Quellinstanz mit Ausnahme der Azure-System- und Vorlagendatenbanken:
azure_maintenance,azure_sys,template0undtemplate1. - Achten Sie darauf, dass die Quellinstanz die Standarddatenbank
postgresenthält. Wenn diese Datenbank nicht vorhanden ist, erstellen Sie sie, bevor Sie die Migration konfigurieren. - Konfigurieren Sie die Azure-Firewall- und SSL/TLS-Einstellungen:
- Fügen Sie in den Azure-Netzwerkeinstellungen Firewallregeln hinzu, die eingehende TCP-Verbindungen auf Port
5432von der ausgehenden IP-Adresse des Cloud SQL-Ziels, dem VPC-CIDR-Bereich oder der Bastion-Host-VM für Reverse-SSH zulassen. - Prüfe den Wert des Serverparameters
require_secure_transport. Standardmäßig erfordern Azure-Datenbanken eine SSL/TLS-Verschlüsselung für eingehende Verbindungen. Wählen Sie je nach Einstellung fürrequire_secure_transporteine der folgenden Verschlüsselungseinstellungen aus, wenn Sie das Quellverbindungsprofil erstellen:- Wenn
require_secure_transportaufongesetzt ist, wählen Sie Basic, TLS oder mTLS aus. - Wenn
require_secure_transportaufoffgesetzt ist, wählen Sie Keine aus.
- Wenn
- Fügen Sie in den Azure-Netzwerkeinstellungen Firewallregeln hinzu, die eingehende TCP-Verbindungen auf Port
- Prüfen Sie die PostgreSQL-Erweiterungen, die in Ihren Quelldatenbanken installiert sind.
Der Database Migration Service migriert keine Erweiterungen, die von Cloud SQL nicht unterstützt werden.
Prüfen Sie, ob Ihre Quelldatenbankobjekte und Anwendungsabfragen auf nicht unterstützte Erweiterungen verweisen.
Entfernen Sie nicht unterstützte Erweiterungen und Verweise aus Ihren Quelldatenbanken, bevor Sie fortfahren.
Die
pg_cron-Erweiterung wird nicht automatisch vom Database Migration Service migriert, wird aber in Cloud SQL for PostgreSQL-Zielen unterstützt. Wenn Siepg_cronin Ihrer Quelldatenbank verwenden, installieren Sie es nach dem Hochstufen der Migration auf der Zielinstanz neu und konfigurieren Sie es. - Erstellen Sie in Ihrer Quellinstanz ein dediziertes Nutzerkonto für die Migration und gewähren Sie ihm die erforderlichen Berechtigungen:
- Stellen Sie über ein Administratorkonto eine Verbindung zur Quellinstanz her, erstellen Sie den Nutzer und weisen Sie die Replikationsrolle zu:
CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH REPLICATION;
- Gewähren Sie dem Migrationsnutzerkonto die erforderlichen Berechtigungen für die Standarddatenbank
postgressowie für jede Datenbank, die Sie migrieren möchten. Führen Sie die folgenden Befehle in jeder Datenbank für jedes Schema aus (mit Ausnahme des Informationsschemas und der Schemas, die mitpg_beginnen):GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Stellen Sie über ein Administratorkonto eine Verbindung zur Quellinstanz her, erstellen Sie den Nutzer und weisen Sie die Replikationsrolle zu:
- Installieren Sie die Erweiterung
pglogicalin jeder Datenbank, die Sie migrieren möchten, mit Ausnahme vonazure_maintenance,azure_sys,template0undtemplate1:- Für PostgreSQL-Version 9.4: Führen Sie den folgenden Befehl aus:
CREATE EXTENSION IF NOT EXISTS pglogical; CREATE EXTENSION IF NOT EXISTS pglogical_origin;
- Für PostgreSQL-Version 9.5 und höher: Führen Sie den folgenden Befehl aus:
CREATE EXTENSION IF NOT EXISTS pglogical;
- Für PostgreSQL-Version 9.4: Führen Sie den folgenden Befehl aus:
- Prüfen Sie, ob Ihre Tabellen Primärschlüssel haben. Für kontinuierliche Migrationen erfordert die logische PostgreSQL-Replikation, dass Tabellen Primärschlüssel haben, um
UPDATE- undDELETE-Vorgänge während der Change Data Capture-Phase (CDC) zu replizieren:- Tabellen mit einem Primärschlüssel replizieren alle
INSERT-,UPDATE- undDELETE-Vorgänge automatisch. - Bei Tabellen ohne Primärschlüssel unterstützt Database Migration Service nur die Migration des ersten Snapshots und der nachfolgenden
INSERT-Anweisungen während der CDC-Phase. Sie müssen die AnweisungenUPDATEundDELETEmanuell migrieren.Wir empfehlen, Tabellen ohne Primärschlüssel vor Beginn der Migration Primärschlüssel hinzuzufügen. Informationen zum Generieren einer Abfrage zum Auflisten von Tabellen in einer PostgreSQL-Datenbank ohne Primärschlüssel oder zum manuellen Migrieren von
UPDATE- undDELETE-Vorgängen finden Sie unter Debugging und andere Tools.Alternativ können Sie den Schnellstart-Migrationsablauf verwenden: ein vereinfachtes Migrationsszenario, bei dem Sie
REPLICA IDENTITYverwenden können, um Tabellen ohne Primärschlüssel zu migrieren. Weitere Informationen finden Sie im Leitfaden Schnellstart-Migrationen verwenden.
- Tabellen mit einem Primärschlüssel replizieren alle
- Quellen mit PostgreSQL-Version 9.5 und niedriger: Der Messwert für die Replikationsverzögerung ist für Quellinstanzen mit PostgreSQL-Versionen vor 9.6 nicht verfügbar. Wenn Sie diesen Messwert verwenden möchten, um den Migrationsfortschritt zu verfolgen, lesen Sie den Abschnitt Replikationsverzögerung aktivieren.
- Konfigurieren Sie die folgenden Serverparameter in Azure. Weitere Informationen finden Sie unter Serverparameter in Azure Database for PostgreSQL konfigurieren.
- Legen Sie
shared_preload_librariesso fest, dasspglogicalenthalten ist. - Legen Sie
azure.extensionsso fest, dasspglogicalenthalten ist. - Setzen Sie
wal_levelauflogical. - Setzen Sie
wal_sender_timeoutauf0. Der Wert0deaktiviert das Zeitlimit, das zum Beenden inaktiver Replikationsverbindungen verwendet wird. - Legen Sie für
max_replication_slotsmindestens die Anzahl der zu migrierenden Datenbanken multipliziert mit der Anzahl der Migrationsjobs fest, zuzüglich Reserven für die Tabellensynchronisierung:Wenn die Quellinstanz beispielsweise 5 Datenbanken hat und Sie 2 Migrationsjobs für diese Quelle erstellen, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 betragen, zuzüglich der Anzahl der Replikations-Slots, die bereits von anderen Aufgaben in der Quelle verwendet werden. Wenn Sie angepasste Einstellungen für die Parallelität des Datendumps verwenden möchten, müssen Sie die Anzahl der Replikationsslots erhöhen und Ihre Konfiguration prüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjobtest ausführen.
Der Standardwert für diesen Parameter ist 10.
- Setzen Sie
max_wal_sendersauf mindestens den Wert vonmax_replication_slotsplus die Anzahl der Absender, die bereits auf Ihrer Instanz verwendet werden:Wenn für den Parameter
max_replication_slotsbeispielsweise der Wert10festgelegt ist und Sie bereits zwei Absender verwenden, beträgt die Anzahl der gleichzeitig ausgeführten WAL-Senderprozesse 10 + 2 = 12. Wenn Sie angepasste Einstellungen für die Parallelität des Datendumps verwenden möchten, müssen Sie die Anzahl der Sender erhöhen und Ihre Konfiguration überprüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjobtest ausführen.Der Standardwert für diesen Parameter ist 10.
- Legen Sie für
max_worker_processesmindestens die Anzahl der zu migrierenden Datenbanken plus die vorhandenen Worker-Prozesse auf Ihrer Instanz fest. Wenn Sie angepasste Einstellungen für die Parallelität des Datendumps verwenden möchten, müssen Sie zwei zusätzliche Worker-Prozesse pro Verbindung berücksichtigen (bis zu maximal 20 Worker):Der Standardwert für diesen Parameter ist 8.
Weitere Informationen zu den Parametern finden Sie in der Liste aller Serverparameter in Azure Database for PostgreSQL in der Microsoft-Dokumentation.
- Legen Sie
- Starten Sie die Microsoft Azure Database for PostgreSQL Flexible Server-Instanz neu, damit die Änderungen der Serverparameter wirksam werden.
Cloud SQL for PostgreSQL-Quelle konfigurieren
So konfigurieren Sie eine Cloud SQL for PostgreSQL-Quellinstanz für den Migrationsprozess:
- Bei Cloud SQL for PostgreSQL-Quellen migriert Database Migration Service alle Datenbanken unter Ihrer Quellinstanz mit Ausnahme der Vorlagendatenbanken
template0undtemplate1. - Achten Sie darauf, dass die Quellinstanz die Standarddatenbank
postgresenthält. Wenn diese Datenbank nicht vorhanden ist, erstellen Sie sie, bevor Sie die Migration konfigurieren. - Wenn Sie von einer Cloud SQL-Quellinstanz, die mit einer privaten IP-Adresse konfiguriert ist, zu einer Cloud SQL-Zielinstanz migrieren, die einen IP-Adressbereich außerhalb des RFC 1918-Bereichs verwendet, fügen Sie den Bereich außerhalb des RFC 1918-Bereichs den autorisierten Netzwerken Ihrer Quellinstanz hinzu. Weitere Informationen finden Sie unter Autorisierte Netzwerke konfigurieren.
- Prüfen Sie die PostgreSQL-Erweiterungen, die in Ihren Quelldatenbanken installiert sind.
Der Database Migration Service migriert keine
Erweiterungen, die von Cloud SQL nicht unterstützt werden.
Prüfen Sie, ob Ihre Quelldatenbankobjekte und Anwendungsabfragen nicht auf nicht unterstützte Erweiterungen verweisen. Entfernen Sie nicht unterstützte Erweiterungen und Verweise aus Ihren Quelldatenbanken, bevor Sie fortfahren.
Die Erweiterung
pg_cronwird nicht automatisch vom Database Migration Service migriert, wird aber in Cloud SQL for PostgreSQL-Zielen unterstützt. Wenn Siepg_cronin Ihrer Quelldatenbank verwenden, installieren Sie es nach dem Hochstufen der Migration auf der Zielinstanz neu und konfigurieren Sie es. - Erstellen Sie in Ihrer Quellinstanz ein dediziertes Nutzerkonto für die Migration und gewähren Sie ihm die erforderlichen Berechtigungen:
- Folgen Sie der Anleitung auf der Seite Nutzer erstellen in der Cloud SQL-Dokumentation.
- Gewähren Sie dem Migrationsnutzerkonto die erforderlichen Berechtigungen für die Standarddatenbank
postgressowie für jede Datenbank, die Sie migrieren möchten. Führen Sie die folgenden Befehle in jeder Datenbank für jedes Schema aus (mit Ausnahme des Informationsschemas und der Schemas, die mitpg_beginnen):GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Installieren Sie die Erweiterung
pglogicalin jeder Datenbank, die Sie migrieren möchten, mit Ausnahme vontemplate0undtemplate1:- Für PostgreSQL-Version 9.4: Führen Sie den folgenden Befehl aus:
CREATE EXTENSION IF NOT EXISTS pglogical; CREATE EXTENSION IF NOT EXISTS pglogical_origin;
- Für PostgreSQL-Version 9.5 und höher: Führen Sie den folgenden Befehl aus:
CREATE EXTENSION IF NOT EXISTS pglogical;
- Für PostgreSQL-Version 9.4: Führen Sie den folgenden Befehl aus:
- Prüfen Sie, ob Ihre Tabellen Primärschlüssel haben. Für kontinuierliche Migrationen erfordert die logische Replikation von PostgreSQL, dass Tabellen Primärschlüssel haben, um
UPDATE- undDELETE-Vorgänge während der Change Data Capture-Phase (CDC) zu replizieren:- Tabellen mit einem Primärschlüssel replizieren alle
INSERT-,UPDATE- undDELETE-Vorgänge automatisch. - Bei Tabellen ohne Primärschlüssel migriert Database Migration Service den ersten Snapshot und nachfolgende
INSERT-Anweisungen während der CDC-Phase. Sie müssen die AnweisungenUPDATEundDELETEmanuell migrieren.Wir empfehlen, Tabellen ohne Primärschlüssel vor Beginn der Migration Primärschlüssel hinzuzufügen. Informationen zum Generieren einer Abfrage zum Auflisten von Tabellen in einer PostgreSQL-Datenbank ohne Primärschlüssel oder zum manuellen Migrieren von
UPDATE- undDELETE-Vorgängen finden Sie unter Debugging und andere Tools.Alternativ können Sie den Schnellstart-Migrationsablauf verwenden: ein vereinfachtes Migrationsszenario, bei dem Sie
REPLICA IDENTITYverwenden können, um Tabellen ohne Primärschlüssel zu migrieren. Weitere Informationen finden Sie im Leitfaden Schnellstart-Migrationen verwenden.
- Tabellen mit einem Primärschlüssel replizieren alle
- Quellen mit PostgreSQL-Version 9.5 und niedriger: Der Messwert für die Replikationsverzögerung ist für Quellinstanzen mit PostgreSQL-Versionen vor 9.6 nicht verfügbar. Wenn Sie diesen Messwert verwenden möchten, um den Migrationsfortschritt zu verfolgen, lesen Sie den Abschnitt Replikationsverzögerung aktivieren.
- Konfigurieren Sie die folgenden Datenbank-Flags auf Ihrer Cloud SQL-Quellinstanz:
- Setzen Sie
cloudsql.logical_decodingaufon. - Setzen Sie
cloudsql.enable_pglogicalaufon. - Setzen Sie
wal_sender_timeoutauf0. Der Wert0deaktiviert das Zeitlimit, das zum Beenden inaktiver Replikationsverbindungen verwendet wird. - Legen Sie für
max_replication_slotsmindestens die Anzahl der zu migrierenden Datenbanken multipliziert mit der Anzahl der Migrationsjobs fest, zuzüglich Reserven für die Tabellensynchronisierung.Wenn die Quellinstanz beispielsweise 5 Datenbanken hat und Sie 2 Migrationsjobs für diese Quelle erstellen, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 betragen, zuzüglich der Anzahl der Replikations-Slots, die bereits von anderen Aufgaben in der Quelle verwendet werden. Wenn Sie angepasste Einstellungen für die Parallelität des Datendumps verwenden möchten, müssen Sie die Anzahl der Replikationsslots erhöhen und Ihre Konfiguration prüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjobtest ausführen.
Der Standardwert für dieses Flag ist 10.
- Setzen Sie
max_wal_sendersauf mindestens den Wert vonmax_replication_slotsplus die Anzahl der Absender, die bereits auf Ihrer Instanz verwendet werden.Wenn für das Flag
max_replication_slotsbeispielsweise der Wert10festgelegt ist und Sie bereits zwei Absender verwenden, beträgt die Anzahl der gleichzeitig ausgeführten WAL-Senderprozesse 10 + 2 = 12. Wenn Sie angepasste Einstellungen für die Parallelität des Datendumps verwenden möchten, müssen Sie die Anzahl der Sender erhöhen und Ihre Konfiguration überprüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjobtest ausführen.Der Standardwert für dieses Flag ist 10.
- Legen Sie für
max_worker_processesmindestens die Anzahl der zu migrierenden Datenbanken plus die vorhandenen Worker-Prozesse auf Ihrer Instanz fest. Wenn Sie angepasste Einstellungen für die Parallelität von Datendumps verwenden möchten, müssen Sie zwei zusätzliche Worker-Prozesse pro Verbindung berücksichtigen (bis zu maximal 20 Worker).Der Standardwert für dieses Flag ist 8.
Weitere Informationen zum Ändern von Flags finden Sie in der Cloud SQL-Dokumentation unter Datenbank-Flags konfigurieren.
- Setzen Sie
- Starten Sie die Cloud SQL-Quellinstanz neu, damit die Änderungen am Datenbank-Flag wirksam werden.
Nächste Schritte
Eine vollständige Schritt-für-Schritt-Anleitung für die Migration finden Sie unter Erste Schritte mit Cloud SQL for PostgreSQL-Migrationen.
Informationen zum Planen der Netzwerkverbindung zwischen Ihren Quell- und Zielinstanzen finden Sie unter Netzwerkübersicht.