Übersicht
Database Migration Service unterstützt kontinuierliche Migrationen von Quelldatenbanken zu Cloud SQL-Zieldatenbanken.
Zu den unterstützten Quelldatenbanken für PostgreSQL gehören:
- Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13, 14, 15, 16, 17, 18.
- Amazon Aurora 10.11+, 11.6+, 12.4+, 13.3+, 14.6+, 15.2+, 16, 17, 18.
- Selbstverwaltetes PostgreSQL 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15, 16, 17, 18 (lokal oder auf einer vollständig von Ihnen verwalteten Cloud-VM)
- Cloud SQL for PostgreSQL 9.6, 10, 11, 12, 13, 14, 15, 16, 17, 18.
- Microsoft Azure Database for PostgreSQL Flexible Server: 11+
Zum Konfigurieren Ihrer Quelle müssen Sie sowohl die Quellinstanz als auch die zugrunde liegenden Quelldatenbanken konfigurieren.
Quellinstanz konfigurieren
So konfigurieren Sie Ihre Quellinstanz:
- Für Cloud SQL-Quellen: Wenn Sie von einer Cloud SQL-Instanz migrieren, die eine private IP-Verbindung verwendet, zu einer Cloud SQL-Instanz, die einen IP-Adressbereich außerhalb von RFC 1918 verwendet, fügen Sie den Bereich außerhalb von RFC 1918 der Netzwerkkonfiguration Ihrer Cloud SQL-Quellinstanz hinzu. Weitere Informationen finden Sie in der Cloud SQL-Dokumentation unter Autorisierte Netzwerke konfigurieren.
- Die Quellinstanz muss die Datenbank
postgresenthalten. Wenn Sie diese Datenbank nicht haben, erstellen Sie sie. Installieren Sie das Paket
pglogicalauf der Quellinstanz und stellen Sie sicher, dass es in der Variablenshared_preload_librariesenthalten ist. Weitere Informationen finden Sie unter Installieren Sie daspglogicalPaket auf der Quell Instanz für Ihre Umgebung.Prüfen Sie die Erweiterungen in Ihrer Quellinstanz. Database Migration Service migriert keine Erweiterungen, die von Cloud SQL nicht unterstützt werden. Das Vorhandensein dieser Erweiterungen blockiert die Migration nicht. Um jedoch einen reibungslosen Migrationsprozess zu gewährleisten, prüfen Sie, ob Ihre Objekte oder Anwendungen auf nicht unterstützte Erweiterungen verweisen. Wir empfehlen, diese Erweiterungen und Verweise vor dem Fortfahren aus der Quelldatenbank zu entfernen.
Für Quellen, die die
pg_cronErweiterung: Diepg_cronErweiterung (oder allecronEinstellungen, die mit der Erweiterung verknüpft sind) wird nicht von Database Migration Service migriert, wird aber in Cloud SQL for PostgreSQL-Zielen unterstützt. Wenn Sie die Erweiterungpg_cronin Ihren Quelldatenbanken verwenden, können Sie sie nach Abschluss der Migration auf der Zielinstanz neu installieren.
Quelldatenbanken konfigurieren
Database Migration Service migriert alle Datenbanken unter Ihrer Quellinstanz außer den folgenden Datenbanken:
- Für lokale PostgreSQL-Quellen: Vorlagendatenbanken
template0undtemplate1 - Für Amazon RDS-Quellen:
template0,template1undrdsadmin - Für Cloud SQL-Quellen: Vorlagendatenbanken
template0undtemplate1 - Für Microsoft Azure-Quellen:
azure_maintenance,azure_sys,template0,template1
Führen Sie die folgenden Schritte für jede Datenbank in Ihrer Quellinstanz aus, die oben nicht aufgeführt ist:
Nur für PostgreSQL-Version 9.4-Quellen: Installieren Sie die folgenden
pglogicalErweiterungen in jeder Datenbank Ihrer Quellinstanz:CREATE EXTENSION IF NOT EXISTS pglogical;CREATE EXTENSION IF NOT EXISTS pglogical_origin;
Für alle anderen Versionen: Installieren Sie nur die
pglogical-Erweiterung in jeder Datenbank Ihrer Quellinstanz:CREATE EXTENSION IF NOT EXISTS pglogical.Bei Tabellen ohne Primärschlüssel unterstützt Database Migration Service die Migration des ersten Snapshots und der
INSERTAnweisungen während der CDC-Phase. Sie solltenUPDATE- undDELETE-Anweisungen manuell migrieren.Der USER mit dem Sie die Verbindung zur Quellinstanz (diese wird als Nutzer auf der Seite Verbindungsprofile konfiguriert) herstellen, muss bestimmte Berechtigungen für jede migrierte Datenbank sowie für die Standarddatenbank
postgreshaben. Sie können einen neuen Nutzer erstellen oder einen vorhandenen verwenden. Stellen Sie eine Verbindung zur Instanz her und führen Sie die folgenden Befehle aus, um diese Berechtigungen festzulegen:GRANT USAGE on SCHEMA SCHEMA to USERfür alle Schemas (ausgenommen das Informationsschema und die Schemas, die mit „pg_“ beginnen) in jeder zu migrierenden Datenbank.GRANT USAGE on SCHEMA pglogical to PUBLIC;für jede zu migrierende Datenbank.GRANT SELECT on ALL TABLES in SCHEMA pglogical to USERfür alle Datenbanken, um Replikationsinformationen aus Quelldatenbanken abzurufen.GRANT SELECT on ALL TABLES in SCHEMA SCHEMA to USERfür alle Schemas (ausgenommen das Informationsschema und die Schemas, die mit „pg_“ beginnen) in jeder zu migrierenden Datenbank.GRANT SELECT on ALL SEQUENCES in SCHEMA SCHEMA to USERfür alle Schemas (ausgenommen das Informationsschema und die Schemas, die mit „pg_“ beginnen) in jeder zu migrierenden Datenbank.- Wenn die Quelle Amazon RDS ist, führen Sie den folgenden Befehl aus:
GRANT rds_replication to USER
- Wenn die Quelle nicht Amazon RDS ist, führen Sie den folgenden Befehl aus:
ALTER USER USER with REPLICATIONRolle
pglogical-Paket auf der Quellinstanz installieren
In diesem Abschnitt wird beschrieben, wie Sie das Paket pglogical und die entsprechenden Parameter je nach Quellinstanz konfigurieren.
Lokales oder selbstverwaltetes PostgreSQL
- Installieren Sie das Paket „pglogical“ auf dem Server.
- Stellen Sie eine Verbindung zur Instanz her und legen Sie nach Bedarf die folgenden Parameter fest:
shared_preload_librariesmusspglogicalenthalten.Führen Sie den Befehl
ALTER SYSTEM SET shared_preload_libraries = 'pglogical,[any other libraries in your instance]';aus, um diesen Parameter festzulegen.- Legen Sie für
wal_levelden Wertlogicalfest.Führen Sie den Befehl
ALTER SYSTEM SET wal_level = 'logical';aus, um diesen Parameter festzulegen. Legen Sie für
wal_sender_timeoutden Wert0fest.Führen Sie den Befehl
ALTER SYSTEM SET wal_sender_timeout = 0;aus, um diesen Parameter festzulegen. Der Wert0deaktiviert das Zeitlimit, das zum Beenden inaktiver Replikationsverbindungen verwendet wird.max_replication_slots definiert die maximale Anzahl an Replikations-Slots, die von der Quellinstanz unterstützt werden können. Er muss mindestens auf die Anzahl der Abos festgelegt werden, für die eine Verbindung erwartet wird, zuzüglich einiger Reserven für die Tabelle Synchronisierung.
Database Migration Service benötigt einen Slot für jede migrierte Datenbank (also alle Datenbanken unter der Quellinstanz).
Wenn es beispielsweise 5 Datenbanken auf der Quellinstanz gibt und 2 Migrationsjobs für die Quelle erstellt werden, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 betragen, zuzüglich der Anzahl der Replikations-Slots, die Sie bereits verwenden. Wenn Sie angepasste Einstellungen für die Parallelisierung des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Replikations-Slots und prüfen Sie Ihre Konfiguration, indem Sie einen Migrationsjobtest ausführen, wenn Sie den Migrationsjob erstellen.
Führen Sie den Befehl
ALTER SYSTEM SET max_replication_slots = #;aus, um diesen Parameter festzulegen. Dabei steht # für die maximale Anzahl an Replikations-Slots.max_wal_senders sollte auf mindestens denselben Wert wie
max_replication_slotsplus die Anzahl der bereits auf Ihrer Instanz verwendeten Absender eingestellt werden.Wenn für den Parameter
Führen Sie den Befehlmax_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 Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Absender und prüfen Sie Ihre Konfiguration, indem Sie einen Migrationsjobtest ausführen wenn Sie den Migrationsjob erstellen.ALTER SYSTEM SET max_wal_senders = #;aus, um diesen Parameter festzulegen. Dabei steht # für die Anzahl der gleichzeitig ausgeführten WAL-Senderprozesse.- Für max_worker_processes sollte ein Wert festgelegt werden, der mindestens der Anzahl an Datenbanken entspricht, die von Database Migration Service migriert werden (also alle Datenbanken unter der Quellinstanz), zuzüglich der Anzahl der
max_worker_processes, die bereits auf Ihrer Instanz verwendet werden.Wenn Sie angepasste Einstellungen für die Parallelität des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Worker-Prozesse und prüfen Sie Ihre Konfiguration, indem Sie einen Migrationsjobtest ausführen, wenn Sie den Migrationsjob erstellen.
Führen Sie den Befehl
ALTER SYSTEM SET max_worker_processes = #;aus, um diesen Parameter festzulegen. Dabei steht # für die Anzahl der zu migrierenden Datenbanken.
- Starten Sie die Quellinstanz neu, um die Konfigurationsänderungen zu übernehmen.
Microsoft Azure Database for PostgreSQL
So konfigurieren Sie Ihre Microsoft Azure Database for PostgreSQL-Quelle:
- Installieren Sie das Paket „pglogical“ auf Ihrem Server.
Nur für PostgreSQL-Version 9.4-Quellen: Installieren Sie die folgenden
pglogicalErweiterungen in jeder Datenbank Ihrer Quellinstanz:CREATE EXTENSION IF NOT EXISTS pglogical;CREATE EXTENSION IF NOT EXISTS pglogical_origin;
Für alle anderen Versionen: Installieren Sie die
pglogical-Erweiterung in jeder Datenbank Ihrer Quellinstanz:CREATE EXTENSION IF NOT EXISTS pglogical.Konfigurieren Sie die erforderlichen Serverparameter in Ihrer Quelle über das Microsoft Azure-Portal. Weitere Informationen finden Sie in der Microsoft-Dokumentation unter Serverparameter in Azure Database for PostgreSQL konfigurieren und Serverparameter in Azure Database for PostgreSQL.
Konfigurieren Sie die folgenden Parameter:
- Legen Sie für
shared_preload_librariesfest, dasspglogicalenthalten sein muss. - Legen Sie für
azure.extensionsfest, dasspglogicalenthalten sein muss. - Legen Sie für
wal_levelden Wertlogicalfest. Legen Sie
max_replication_slotsauf mindestens die Anzahl der Abonnenten fest, für die eine Verbindung erwartet wird, zuzüglich einiger Reserven für die Tabellensynchronisierung.Der Parameter
max_replication_slotsdefiniert die maximale Anzahl an Replikations-Slots, die von der Quellinstanz unterstützt werden können.Database Migration Service benötigt einen Slot für jede migrierte Datenbank (also alle Datenbanken unter der Quellinstanz).
Wenn es beispielsweise 5 Datenbanken auf der Quellinstanz gibt und 2 Migrationsjobs für die Quelle erstellt werden, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 betragen, zuzüglich der Anzahl der Replikations-Slots, die Sie bereits verwenden. Wenn Sie angepasste Einstellungen für die Parallelisierung des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Replikations-Slots und prüfen Sie Ihre Konfiguration, indem Sie einen Migrationsjobtest ausführen, wenn Sie den Migrationsjob erstellen.
Legen Sie für
max_wal_senderseinen Wert fest, der mindestensmax_replication_slotsplus die Anzahl der Absender beträgt, 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 Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Absender und prüfen Sie Ihre Konfiguration, indem Sie einen Migrationsjobtest ausführen wenn Sie den Migrationsjob erstellen.
Legen Sie für
max_worker_processeseinen Wert fest, der mindestens der Anzahl an Datenbanken entspricht, die von Database Migration Service migriert werden (also alle Datenbanken unter der Quellinstanz), zuzüglich der Anzahl dermax_worker_processes, die bereits auf Ihrer Instanz verwendet werden.Wenn Sie angepasste Einstellungen für die Parallelität des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Worker-Prozesse und prüfen Sie Ihre Konfiguration, indem Sie einen Migrationsjobtest ausführen, wenn Sie den Migrationsjob erstellen.
- Legen Sie für
Prüfen Sie den Wert der Einstellung
require_secure_transport.Standardmäßig erfordern Microsoft Azure-Datenbanken eine SSL/TLS-Verschlüsselung für alle eingehenden Verbindungen. Verwenden Sie je nach Wert von
require_secure_transporteine der folgenden Verschlüsselungseinstellungen, wenn Sie das Verbindungsprofil der Quelle erstellen:- Wenn
require_secure_transportaufongesetzt ist, wählen Sie Basic, TLS oder mTLS aus. - Wenn
require_secure_transportaufoffgesetzt ist, wählen Sie None aus.
- Wenn
- Starten Sie die Quellinstanz neu, um die Konfigurationsänderungen zu übernehmen.
Amazon RDS PostgreSQL
Installieren Sie die Erweiterung
pglogicalin Ihrer Quelldatenbank.Weitere Informationen finden Sie in der Amazon RDS-Dokumentation unter PostgreSQL-Erweiterungen mit Amazon RDS for PostgreSQL verwenden.
Konfigurieren Sie die Quellinstanz mit Parametergruppen.
- Erstellen Sie eine neue Parametergruppe. In der Parametergruppe:
- Prüfen Sie, ob der Parameter
shared_preload_librariespglogicalenthält. - Setzen Sie den Parameter
rds.logical_replicationauf 1. Dadurch werden WAL-Logs auf der Ebene „logical“ aktiviert. - Setzen Sie den Parameter
wal_sender_timeoutauf 0. Dadurch wird das Zeitlimit deaktiviert, das zum Beenden inaktiver Replikationsverbindungen verwendet wird. Legen Sie den max_replication_slots Parameter fest. Dieser Parameter definiert die maximale Anzahl an Replikations-Slots, die von der Quellinstanz unterstützt werden können. Er muss mindestens auf die Anzahl der Abonnenten festgelegt werden, für die eine Verbindung erwartet wird, zuzüglich einiger Reserven für die Tabellensynchronisierung.
Database Migration Service benötigt einen Slot für jede migrierte Datenbank (also alle Datenbanken unter der Quellinstanz).
Wenn es beispielsweise 5 Datenbanken auf der Quellinstanz gibt und 2 Migrationsjobs für die Quelle erstellt werden, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 betragen, zuzüglich der Anzahl der Replikations-Slots, die Sie bereits verwenden. Wenn Sie angepasste Einstellungen für die Parallelisierung des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Replikations-Slots und prüfen Sie Ihre Konfiguration, indem Sie beim Erstellen des Migrationsjobs einen Migrationsjobtest ausführen.
Der Standardwert für diesen Parameter ist 10.
Legen Sie für den max_wal_senders Parameter einen Wert fest, der mindestens
max_replication_slotsplus die Anzahl der Absender beträgt, 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 Parallelisierung des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Absender und prüfen Sie Ihre Konfiguration, indem Sie einen Migrationsjobtest ausführen beim Erstellen des Migrationsjobs.Der Standardwert für diesen Parameter ist 10.
Legen Sie für den Quellparameter max_worker_processes einen Wert fest, der mindestens der Anzahl an Datenbanken entspricht, die von Database Migration Service migriert werden (also alle Datenbanken unter der Quellinstanz), zuzüglich der Anzahl der
max_worker_processes, die bereits auf Ihrer Instanz verwendet werden. Wenn Sie angepasste Einstellungen für die Parallelität des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Worker-Prozesse und prüfen Sie Ihre Konfiguration, indem Sie beim Erstellen des Migrationsjobs einen Migrationsjobtest ausführen.Der Standardwert für diesen Parameter ist 8.
Hängen Sie die Parametergruppe an die Instanz an. Wenn Sie eine neue Instanz erstellen, finden Sie diese Option unter Zusätzliche Konfiguration.
Ändern Sie andernfalls die Instanz, um die Parametergruppe anzuhängen.
Starten Sie die Quellinstanz neu, um die Konfigurationsänderungen zu übernehmen.
Cloud SQL for PostgreSQL
Aktivieren Sie die logische Replikation und Decodierung für die Quelldatenbank, indem Sie die folgenden Flags konfigurieren:
- Setzen Sie die
cloudsql.logical_decodingundcloudsql.enable_pglogicalFlags aufon. Legen Sie das max_replication_slots Flag fest. Dieses Flag definiert die maximale Anzahl an Replikations-Slots, die von der Quellinstanz unterstützt werden können. Es muss mindestens auf die Anzahl der Abos festgelegt werden, für die eine Verbindung erwartet wird, zuzüglich einiger Reserven für die Tabellen synchronisierung.
Database Migration Service benötigt einen Slot für jede migrierte Datenbank (also alle Datenbanken unter der Quellinstanz).
Wenn es beispielsweise 5 Datenbanken auf der Quellinstanz gibt und 2 Migrationsjobs für die Quelle erstellt werden, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 betragen, zuzüglich der Anzahl der Replikations-Slots, die Sie bereits verwenden. Wenn Sie angepasste Einstellungen für die Parallelisierung des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Replikations-Slots und prüfen Sie Ihre Konfiguration, indem Sie einen Migrationsjobtest ausführen, wenn Sie den Migrationsjob erstellen.
Der Standardwert für dieses Flag ist 10.
Legen Sie für das Flag max_wal_senders einen Wert fest, der mindestens
max_replication_slotsplus die Anzahl der Absender beträgt, 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 Parallelisierung des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Absender und prüfen Sie Ihre Konfiguration, indem Sie beim Erstellen des Migrationsjobs einen Migrationsjobtest ausführen.Der Standardwert für dieses Flag ist 10.
Legen Sie für das Quellflag max_worker_processes einen Wert fest, der mindestens der Anzahl an Datenbanken entspricht, die von Database Migration Service migriert werden (also alle Datenbanken unter der Quellinstanz), zuzüglich der Anzahl der
max_worker_processes, die bereits auf Ihrer Instanz verwendet werden. Wenn Sie angepasste Einstellungen für die Parallelität des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Worker-Prozesse und prüfen Sie Ihre Konfiguration, indem Sie beim Erstellen des Migrationsjobs einen Migrationsjobtest ausführen.Der Standardwert für dieses Flag ist 8.
Legen Sie für den
wal_sender_timeoutParameter den Wert0fest. Der Wert0deaktiviert das Zeitlimit, das zum Beenden inaktiver Replikationsverbindungen verwendet wird.- Starten Sie die Quellinstanz neu , damit die Konfigurationsänderungen, die Sie an den Flags vorgenommen haben, wirksam werden können.
Replikationsverzögerungsmonitoring für PostgreSQL-Versionen vor 9.6 aktivieren
Wenn Sie von einer PostgreSQL-Version vor 9.6 migrieren, ist der Messwert für die Replikationsverzögerung standardmäßig nicht verfügbar. Mit den folgenden Alternativen können Sie diesen Messwert verfolgen, um beim Hochstufen der Datenbank die Ausfallzeit zu minimieren:
Option 1: Aktivieren Sie Database Migration Service, um die Replikations verzögerung zu verfolgen, indem Sie Zugriff auf eine bestimmte Abfrage gewähren. Führen Sie einen Nutzer mit der Berechtigung
SUPERUSERaus:Definieren Sie die folgende Funktion, damit Database Migration Service die Replikationsverzögerung abfragen kann.
CREATE OR REPLACE FUNCTION pg_stat_replication_user() RETURNS TABLE ( pid integer , usesysid oid , username name , application_name text , client_addr inet , client_hostname text , client_port integer , backend_start timestamp with time zone , backend_xmin xid , state text , sent_location pg_lsn , write_location pg_lsn , flush_location pg_lsn , replay_location pg_lsn , sync_priority integer , sync_state text ) LANGUAGE SQL SECURITY DEFINER AS $$ SELECT * FROM pg_catalog.pg_stat_replication; $$;Erteilen Sie dem USER die Berechtigung
EXECUTE, indem Sie die folgenden Befehle ausführen:REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
Option 2: Erteilen Sie die
SUPERUSERBerechtigung direkt dem USER, mit dem eine Verbindung zur Quellinstanz hergestellt wurde. Dadurch kann Database Migration Service die Replikationsverzögerung direkt lesen.Option 3: Verfolgen Sie die Replikationsverzögerung unabhängig mit der folgenden Abfrage:
SELECT current_timestamp, application_name, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag FROM pg_stat_replication WHERE application_name like 'cloudsql%';
Bei dieser Option spiegelt Database Migration Service den Messwert für die Replikationsverzögerung in den Grafiken oder API-Antworten nicht wider.