Ü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, die eine private IP-Verbindung verwendet, zu einer Cloud SQL-Instanz migrieren, 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 Ihrer 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 Ihrer 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 Erweiterung
pglogicalin 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.UPDATE- undDELETE-Anweisungen sollten Sie 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 (mit Ausnahme des Informationsschemas und der Schemas, die mit „pg_“ beginnen) in jeder Datenbank, die Sie migrieren möchten.GRANT USAGE on SCHEMA pglogical to PUBLIC;für jede Datenbank, die Sie migrieren möchten.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 (mit Ausnahme des Informationsschemas und der Schemas, die mit „pg_“ beginnen) in jeder Datenbank, die Sie migrieren möchten.GRANT SELECT on ALL SEQUENCES in SCHEMA SCHEMA to USERfür alle Schemas (mit Ausnahme des Informationsschemas und der Schemas, die mit „pg_“ beginnen) in jeder Datenbank, die Sie migrieren möchten.- 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.- Setzen Sie
wal_levelauflogical.Führen Sie den Befehl
ALTER SYSTEM SET wal_level = 'logical';aus, um diesen Parameter festzulegen. Setzen Sie
wal_sender_timeoutauf0.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 fünf Datenbanken in der Quellinstanz gibt und zwei Migrationsjobs für die Quelle erstellt werden, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 zuzüglich der Anzahl der bereits von Ihnen verwendeten Replikations-Slots betragen. Wenn Sie angepasste Einstellungen für die Parallelität des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Replikations-Slots und prüfen Sie Ihre Konfiguration, indem Sie den 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 den 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 mindestens die Anzahl der Datenbanken festgelegt sein, die von Database Migration Service migriert werden (also alle Datenbanken unter der Quellinstanz), zuzüglich der Anzahl der bereits auf Ihrer Instanz verwendeten
max_worker_processes.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 den 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 Erweiterung
pglogicalin 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:
- Setzen Sie
shared_preload_librariesso, dasspglogicalenthalten ist. - Setzen Sie
azure.extensionsso, dasspglogicalenthalten ist. - Setzen Sie
wal_levelauflogical. Setzen Sie
max_replication_slotsmindestens auf die Anzahl der Abos, 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 fünf Datenbanken in der Quellinstanz gibt und zwei Migrationsjobs für die Quelle erstellt werden, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 zuzüglich der Anzahl der bereits von Ihnen verwendeten Replikations-Slots betragen. Wenn Sie angepasste Einstellungen für die Parallelität des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Replikations-Slots und prüfen Sie Ihre Konfiguration, indem Sie den Migrationsjobtest ausführen wenn Sie den Migrationsjob erstellen.
Setzen Sie
max_wal_sendersmindestens aufmax_replication_slotsplus die Anzahl der bereits auf Ihrer Instanz verwendeten Absender.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 den Migrationsjobtest ausführen, wenn Sie den Migrationsjob erstellen.
Setzen Sie
max_worker_processesmindestens auf die Anzahl der Datenbanken, die von Database Migration Service migriert werden (also alle Datenbanken unter der Quellinstanz), zuzüglich der Anzahl der bereits auf Ihrer Instanz verwendetenmax_worker_processes.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 den Migrationsjobtest ausführen, wenn Sie den Migrationsjob erstellen.
- Setzen Sie
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 Abos 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 fünf Datenbanken in der Quellinstanz gibt und zwei Migrationsjobs für die Quelle erstellt werden, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 zuzüglich der Anzahl der bereits von Ihnen verwendeten Replikations-Slots betragen. Wenn Sie angepasste Einstellungen für die Parallelität des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Replikations-Slots und prüfen Sie Ihre Konfiguration, indem Sie den Migrationsjobtest ausführen beim Erstellen des Migrationsjobs.
Der Standardwert für diesen Parameter ist 10.
Setzen Sie den max_wal_senders Parameter mindestens auf
max_replication_slots, plus die Anzahl der bereits auf Ihrer Instanz verwendeten Absender.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 beim Erstellen des Migrationsjobs den Migrationsjobtest ausführen.Der Standardwert für diesen Parameter ist 10.
Setzen Sie den Quellparameter „max_worker_processes“ mindestens auf die Anzahl der Datenbanken, die von Database Migration Service migriert werden (also alle Datenbanken unter der Quellinstanz), zuzüglich der Anzahl der
max_worker_processesbereits auf Ihrer Instanz verwendeten. 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 den 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. 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 fünf Datenbanken in der Quellinstanz gibt und zwei Migrationsjobs für die Quelle erstellt werden, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 zuzüglich der Anzahl der bereits von Ihnen verwendeten Replikations-Slots betragen. Wenn Sie angepasste Einstellungen für die Parallelität des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Replikations-Slots und prüfen Sie Ihre Konfiguration, indem Sie den Migrationsjobtest ausführen wenn Sie den Migrationsjob erstellen.
Der Standardwert für dieses Flag ist 10.
Setzen Sie das Flag „max_wal_senders“ mindestens auf denselben Wert wie
max_replication_slotsplus die Anzahl der bereits auf Ihrer Instanz verwendeten Absender.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 Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Absender und prüfen Sie Ihre Konfiguration, indem Sie den Migrationsjobtest ausführen, wenn Sie den Migrationsjob erstellen.Der Standardwert für dieses Flag ist 10.
Setzen Sie das Quellflag „ max_worker_processes“ mindestens auf die Anzahl der Datenbanken , die von Database Migration Service migriert werden (also alle Datenbanken unter der Quellinstanz), zuzüglich der Anzahl der
max_worker_processesbereits auf Ihrer Instanz verwendeten. 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 den Migrationsjobtest ausführen.Der Standardwert für dieses Flag ist 8.
Setzen Sie den
wal_sender_timeoutParameter auf0. 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.