Übersicht
Der Database Migration Service unterstützt kontinuierliche Migrationen von Quelldatenbanken zu AlloyDB-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
- Amazon Aurora 10.11+, 11.6+, 12.4+, 13.3+, 14, 15, 16, 17
- Selbstverwaltetes PostgreSQL (lokal oder auf einer beliebigen Cloud-VM, die Sie vollständig kontrollieren) 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15, 16, 17
- Cloud SQL 9.6, 10, 11, 12, 13, 14, 15, 16, 17
Zum Konfigurieren Ihrer Quelle müssen Sie sowohl die Quellinstanz als auch die zugrunde liegenden Quelldatenbanken konfigurieren.
Quellinstanz konfigurieren
So konfigurieren Sie Ihre Quellinstanz:
- Die Quellinstanz muss die Datenbank
postgresenthalten. Wenn Sie diese Datenbank noch nicht haben, erstellen Sie sie. - Installieren Sie das Paket
pglogicalauf der Quellinstanz und prüfen Sie, ob es in der Variablenshared_preload_librariesenthalten ist.- Informationen zum Installieren des Pakets
pglogicalauf der Quellinstanz für Ihre Umgebung finden Sie unter Paket auf der Quellinstanz installieren.
- Informationen zum Installieren des Pakets
Quelldatenbanken konfigurieren
Der Database Migration Service migriert alle Datenbanken unter der Quellinstanz außer den folgenden Datenbanken:
- Für lokale Quellen: Vorlagendatenbanken
template0undtemplate1 - Für Amazon RDS-Quellen:
template0,template1undrdsadmin - Für Cloud SQL-Quellen: Vorlagendatenbanken
template0undtemplate1
Führen Sie die folgenden Schritte für jede Datenbank in Ihrer Quellinstanz aus, die oben nicht erwähnt wird:
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 der 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 Ihre Quelle Amazon RDS ist, führen Sie den folgenden Befehl aus:
GRANT rds_replication to USER
- Wenn Ihre 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 konfigurieren, einschließlich der Konfiguration für die Parameter max_replication_slots, max_wal_senders und max_worker_processes.
Sie können die richtigen Werte für diese Parameter auch abrufen, indem Sie
einen Test des Migrationsjobs ausführen, wenn Sie den Migrationsjob erstellen.
Während dieses Tests kann der Database Migration Service Ihre Einstellungen überprüfen und die richtigen Werte vorschlagen.
Lokales oder selbstverwaltetes PostgreSQL
- Installieren Sie das pglogical-Paket auf dem Server.
- Stellen Sie eine Verbindung zur Instanz her und legen Sie die folgenden Parameter nach Bedarf 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. Dabei deaktiviert0den Timeout-Mechanismus, der zum Beenden inaktiver Replikationsverbindungen verwendet wird.max_replication_slots definiert die maximale Anzahl von Replikations-Slots, die von der Quellinstanz unterstützt werden können. Er muss mindestens auf die Anzahl der Abos gesetzt werden, für die eine Verbindung erwartet wird, plus einige Reservierungen für die Tabelle Synchronisierung.
Der Database Migration Service benötigt einen Slot für jede migrierte Datenbank (also alle Datenbanken unter der Quellinstanz).
Wenn es beispielsweise fünf Datenbanken auf der Quellinstanz gibt und zwei Migrationsjobs für die Quelle erstellt werden, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 plus die Anzahl der bereits von Ihnen verwendeten Replikations-Slots betragen. 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 den Test des Migrationsjobs ausführen beim Erstellen des Migrationsjobs.
Führen Sie den Befehl
ALTER SYSTEM SET max_replication_slots = #;aus, um diesen Parameter festzulegen. Dabei steht # für die maximale Anzahl von 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 Test des Migrationsjobs 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 vom Database Migration Service migriert werden (also alle Datenbanken unter der Quellinstanz), plus die 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 Test des Migrationsjobs 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.
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_replicationauf1. Dadurch werden WAL-Logs auf logischer Ebene aktiviert. - Setzen Sie den Parameter
wal_sender_timeoutauf 0. Dadurch wird der Timeout-Mechanismus deaktiviert, der zum Beenden inaktiver Replikationsverbindungen verwendet wird. Legen Sie den max_replication_slots Parameter fest. Dieser Parameter definiert die maximale Anzahl von Replikations-Slots, die von der Quellinstanz unterstützt werden können. Er muss mindestens auf die Anzahl der Abos gesetzt werden, für die eine Verbindung erwartet wird, plus einige Reservierungen für die Tabellensynchronisierung.
Der Database Migration Service benötigt einen Slot für jede migrierte Datenbank (also alle Datenbanken unter der Quellinstanz).
Wenn es beispielsweise fünf Datenbanken auf der Quellinstanz gibt und zwei Migrationsjobs für die Quelle erstellt werden, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 plus die Anzahl der bereits von Ihnen verwendeten Replikations-Slots betragen. 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 den Test des Migrationsjobs ausführen.
Der Standardwert für diesen Parameter ist 10.
Setzen Sie den max_wal_senders Parameter auf mindestens
max_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 Parallelisierung des Daten-Dumps verwenden möchten, erhöhen Sie die Anzahl der Absender und prüfen Sie Ihre Konfiguration, indem Sie den Test des Migrationsjobs ausführen beim Erstellen des Migrationsjobs.Der Standardwert für diesen Parameter ist 10.
Setzen Sie den Quellparameter max_worker_processes auf mindestens die Anzahl der Datenbanken, die vom Database Migration Service migriert werden (also alle Datenbanken unter der Quellinstanz), plus die 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 Test des Migrationsjobs 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. Andernfalls ändern Sie 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 von Replikations-Slots, die von der Quellinstanz unterstützt werden können. Es muss mindestens auf die Anzahl der Abos gesetzt werden, für die eine Verbindung erwartet wird, plus einige Reservierungen für die Tabelle synchronisierung.
Der Database Migration Service benötigt einen Slot für jede migrierte Datenbank (also alle Datenbanken unter der Quellinstanz).
Wenn es beispielsweise fünf Datenbanken auf der Quellinstanz gibt und zwei Migrationsjobs für die Quelle erstellt werden, muss die Anzahl der Replikations-Slots mindestens 5 * 2 = 10 plus die Anzahl der bereits von Ihnen verwendeten Replikations-Slots betragen. 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 den Test des Migrationsjobs ausführen beim Erstellen des Migrationsjobs.
Der Standardwert für dieses Flag ist 10.
Setzen Sie das Flag max_wal_senders auf mindestens dasselbe wie
max_replication_slots, plus 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 Test des Migrationsjobs ausführen wenn Sie den Migrationsjob erstellen.Der Standardwert für dieses Flag ist 10.
Setzen Sie das Quellflag max_worker_processes auf mindestens die Anzahl der Datenbanken , die vom Database Migration Service migriert werden (also alle Datenbanken unter der Quellinstanz), plus die Anzahl der
max_worker_processesbereits auf Ihrer Instanz verwendeten. Wenn Sie angepasste Einstellungen für die Parallelität des Daten-Dumps verwenden möchten, berücksichtigen Sie zwei zusätzliche Worker-Prozesse pro Verbindung (maximal 20 Worker).Der Standardwert für dieses Flag ist 8.
- 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. Sie können diesen Messwert auf drei Arten verfolgen, um beim Hochstufen der Datenbank die Ausfallzeit zu minimieren:
Option 1: Aktivieren Sie den Database Migration Service, um die Replikationsverzögerung zu verfolgen, indem Sie Zugriff auf eine bestimmte Abfrage gewähren. Führen Sie mit einem Nutzer mit der Berechtigung
SUPERUSERdie folgenden Schritte aus:Definieren Sie die folgende Funktion, damit der 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; $$;Gewähren 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: Gewähren Sie die Berechtigung
SUPERUSERdirekt dem USER, mit dem eine Verbindung zur Quellinstanz hergestellt wurde. So kann der 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 der Database Migration Service den Messwert für die Replikationsverzögerung in den Grafiken oder API-Antworten nicht wider.