Übersicht
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 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15, 16, 17 (lokal oder auf einer vollständig von Ihnen verwalteten Cloud-VM)
- 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
postgres
enthalten. Wenn Sie diese Datenbank noch nicht haben, erstellen Sie sie. - Installieren Sie das Paket
pglogical
auf der Quellinstanz und achten Sie darauf, dass es in der Variablenshared_preload_libraries
enthalten ist.- Informationen zur Installation des
pglogical
-Pakets auf der Quellinstanz für Ihre Umgebung finden Sie unterpglogical
-Paket auf der Quellinstanz installieren.
- Informationen zur Installation des
Quelldatenbanken konfigurieren
Der Database Migration Service migriert alle Datenbanken unter Ihrer Quellinstanz außer den folgenden Datenbanken:
- Für lokale Quellen: Vorlagendatenbanken
template0
undtemplate1
- Für Amazon RDS-Quellen:
template0
,template1
undrdsadmin
- Für Cloud SQL-Quellen: Vorlagendatenbanken
template0
undtemplate1
Führen Sie in jeder Datenbank der Quellinstanz, die oben nicht aufgeführt wird, Folgendes aus:
Nur für Quellen mit PostgreSQL-Version 9.4: Installieren Sie die folgenden
pglogical
-Erweiterungen in jeder Datenbank in Ihrer Quellinstanz:CREATE EXTENSION IF NOT EXISTS pglogical;
CREATE EXTENSION IF NOT EXISTS pglogical_origin;
Bei allen anderen Versionen installieren Sie nur die Erweiterung
pglogical
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
INSERT
-Anweisungen während der CDC-Phase. Sie sollten die AnweisungenUPDATE
undDELETE
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
postgres
haben. 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 USER
für alle Schemas (mit Ausnahme des Informationsschemas und der Schemas, die mit „pg_“ beginnen) in jeder Datenbank, die migriert werden soll.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 USER
für alle Datenbanken, um Replikationsinformationen aus Quelldatenbanken abzurufen.GRANT SELECT on ALL TABLES in SCHEMA SCHEMA to USER
für alle Schemas (mit Ausnahme des Informationsschemas und der Schemas, die mit „pg_“ beginnen) in jeder Datenbank, die migriert werden soll.GRANT SELECT on ALL SEQUENCES in SCHEMA SCHEMA to USER
für alle Schemas (mit Ausnahme des Informationsschemas und der Schemas, die mit „pg_“ beginnen) in jeder Datenbank, die migriert werden soll.- 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:
- Rolle
ALTER USER USER with REPLICATION
- Rolle
pglogical
-Paket auf der Quellinstanz installieren
In diesem Abschnitt wird beschrieben, wie Sie das pglogical
-Paket 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 beim Erstellen des Migrationsjobs einen
Test des Migrationsjobs ausführen.
Während dieses Tests kann Database Migration Service Ihre Einstellungen überprüfen und die richtigen Werte vorschlagen.
Lokale oder selbstverwaltete PostgreSQL-Datenbank
- Installieren Sie das pglogical-Paket auf dem Server.
- Stellen Sie eine Verbindung zur Instanz her und legen Sie nach Bedarf die folgenden Parameter fest:
shared_preload_libraries
musspglogical
enthalten.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_level
auflogical
.Führen Sie den Befehl
ALTER SYSTEM SET wal_level = 'logical';
aus, um diesen Parameter festzulegen.Setzen Sie
wal_sender_timeout
auf0
.Führen Sie zum Festlegen dieses Parameters den Befehl
ALTER SYSTEM SET wal_sender_timeout = 0;
aus. Dabei deaktiviert0
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. Sie muss mindestens der Anzahl der Abos entsprechen, für die eine Verbindung erwartet wird, zuzüglich einiger Reservierungen für die Tabellensynchronisierung.
Database Migration Service erfordert für jede migrierte Datenbank einen Slot. Das sind 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 die Parallelitätseinstellungen für den angepassten Datenexport verwenden möchten, müssen Sie die Anzahl der Replikations-Slots erhöhen und Ihre Konfiguration überprüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjob testen.
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.Für max_wal_senders sollte ein Wert festgelegt werden, der mindestens
max_replication_slots
plus die Anzahl der bereits auf Ihrer Instanz verwendeten Absender beträgt.Wenn für den Parameter
Führen Sie den Befehlmax_replication_slots
beispielsweise der Wert10
festgelegt ist und Sie bereits zwei Absender verwenden, beträgt die Anzahl der gleichzeitig ausgeführten WAL-Senderprozesse 10 + 2 = 12. Wenn Sie die Parallelitätseinstellungen für den angepassten Datenexport verwenden möchten, müssen Sie die Anzahl der Absender erhöhen und Ihre Konfiguration überprüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjobtest ausführen.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 (alle Datenbanken unter der Quellinstanz), plus die Anzahl der
max_worker_processes
, die bereits auf Ihrer Instanz verwendet werden.Wenn Sie die Parallelitätseinstellungen für den angepassten Datenexport verwenden möchten, müssen Sie die Anzahl der Worker-Prozesse erhöhen und Ihre Konfiguration beim Erstellen des Migrationsjobs testen.
Um diesen Parameter festzulegen, führen Sie den Befehl
ALTER SYSTEM SET max_worker_processes = #;
aus. Dabei steht # für die Anzahl der Datenbanken, die migriert werden.
- Starten Sie die Quellinstanz neu, um die Konfigurationsänderungen zu übernehmen.
Amazon RDS PostgreSQL
- Installieren Sie die Erweiterung
pglogical
in 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.
- Neue Parametergruppe erstellen In der Parametergruppe:
- Achten Sie darauf, dass der Parameter
shared_preload_libraries
pglogical
enthält. - Setzen Sie den Parameter
rds.logical_replication
auf1
. Dadurch werden WAL-Logs auf der logischen Ebene aktiviert. - Setzen Sie den Parameter
wal_sender_timeout
auf 0. Dadurch wird das Zeitlimit deaktiviert, das zum Beenden inaktiver Replikationsverbindungen verwendet wird. Legen Sie den Parameter max_replication_slots fest. Dieser Parameter definiert die maximale Anzahl an Replikations-Slots, die von der Quellinstanz unterstützt werden können. Sie muss mindestens auf die Anzahl der Abos festgelegt werden, für die eine Verbindung erwartet wird, zuzüglich einiger Reservierungen für die Tabellensynchronisierung.
Database Migration Service erfordert für jede migrierte Datenbank einen Slot. Das sind alle Datenbanken unter der Quellinstanz.
Wenn es beispielsweise 5 Datenbanken für die 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 die Parallelitätseinstellungen für den angepassten Datenexport verwenden möchten, müssen Sie die Anzahl der Replikations-Slots erhöhen und Ihre Konfiguration überprüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjob testen.
Der Standardwert für diesen Parameter ist 10.
Legen Sie den Parameter max_wal_senders auf mindestens
max_replication_slots
plus die Anzahl der Absender fest, die bereits auf Ihrer Instanz verwendet werden.Wenn für den Parameter
max_replication_slots
beispielsweise der Wert10
festgelegt ist und Sie bereits zwei Absender verwenden, beträgt die Anzahl der gleichzeitig ausgeführten WAL-Senderprozesse 10 + 2 = 12. Wenn Sie die Parallelitätseinstellungen für den angepassten Datenexport verwenden möchten, müssen Sie die Anzahl der Absender erhöhen und Ihre Konfiguration überprüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjob testen.Der Standardwert für diesen Parameter ist 10.
Legen Sie den Quellparameter max_worker_processes auf mindestens die Anzahl der Datenbanken fest, die von Database Migration Service migriert werden (alle Datenbanken unter der Quellinstanz), plus die Anzahl der
max_worker_processes
, die bereits auf Ihrer Instanz verwendet werden. Wenn Sie die Parallelitätseinstellungen für den bereinigten Datenexport verwenden möchten, müssen Sie die Anzahl der Worker-Prozesse erhöhen und Ihre Konfiguration überprüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjob testen.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 müssen Sie die Instanz ändern, 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.
- Legen Sie die Flags
cloudsql.logical_decoding
undcloudsql.enable_pglogical
aufon
fest. Legen Sie das Flag max_replication_slots fest. Dieses Flag definiert die maximale Anzahl an Replikations-Slots, die von der Quellinstanz unterstützt werden können. Sie muss mindestens der Anzahl der Abos entsprechen, für die eine Verbindung erwartet wird, zuzüglich einiger Reservierungen für die Tabellensynchronisierung.
Database Migration Service erfordert für jede migrierte Datenbank einen Slot. Das sind alle Datenbanken unter der Quellinstanz.
Wenn es beispielsweise 5 Datenbanken in 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 die Parallelitätseinstellungen für den angepassten Datenexport verwenden möchten, müssen Sie die Anzahl der Replikations-Slots erhöhen und Ihre Konfiguration überprüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjob testen.
Der Standardwert für dieses Flag ist 10.
Legen Sie das Flag max_wal_senders auf mindestens
max_replication_slots
plus die Anzahl der Absender fest, die bereits auf Ihrer Instanz verwendet werden.Wenn das Flag
max_replication_slots
beispielsweise auf10
festgelegt ist und Sie bereits zwei Absender verwenden, beträgt die Anzahl der gleichzeitig ausgeführten WAL-Senderprozesse 10 + 2 = 12. Wenn Sie die Parallelitätseinstellungen für den angepassten Datenexport verwenden möchten, müssen Sie die Anzahl der Absender erhöhen und Ihre Konfiguration überprüfen, indem Sie beim Erstellen des Migrationsjobs den Migrationsjob testen.Der Standardwert für dieses Flag ist 10.
Legen Sie das Quellflag max_worker_processes auf mindestens die Anzahl der Datenbanken fest, die von Database Migration Service migriert werden (alle Datenbanken unter der Quellinstanz), plus die Anzahl der
max_worker_processes
, die bereits auf Ihrer Instanz verwendet werden. Wenn Sie die Parallelitätseinstellungen für angepasste Datenexporte verwenden möchten, müssen Sie zwei zusätzliche Worker-Prozesse pro Verbindung berücksichtigen (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 Database Migration Service, um die Replikationsverzögerung zu verfolgen, indem Sie Zugriff auf eine bestimmte Abfrage gewähren. Führen Sie einen Nutzer mit der Berechtigung
SUPERUSER
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; $$;
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 Berechtigung
SUPERUSER
direkt dem USER, mit dem eine Verbindung zur Quellinstanz hergestellt wurde. Dadurch kann Database Migration Service die Replikationsverzögerung direkt lesen.Option 3: Replikationsverzögerung unabhängig mit der folgenden Abfrage verfolgen:
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.