Die erweiterte Migration ist eine Lösung zum Migrieren von Daten für große Datenbanken mit weniger Ausfallzeiten. Diese Funktion ist nur für PostgreSQL verfügbar.
Anforderungen an die Migrationsquelle
Zum Konfigurieren Ihrer Migrationsquelle müssen Sie sowohl die Quellinstanz als auch die zugrunde liegenden Quelldatenbanken konfigurieren.
Unterstützte Versionen
Die unterstützten selbstverwalteten PostgreSQL-Versionen sind:
- PostgreSQL: 9.4, 9.5, 9.6, 10, 11, 12, 13, 14 und 15
- AlloyDB Omni: 15
Quellinstanzkonfiguration
Die Quellinstanz muss die Postgres-Standarddatenbank enthalten. Wenn sie nicht vorhanden ist, müssen Sie sie erstellen.
Die pglogical-Bibliothek muss in der Quelle installiert und in der Konfigurationsvariablen shared_preload_libraries enthalten sein.
Konfiguration der Quelldatenbank
Bei der Migration werden alle Datenbanken unter der Quellinstanz migriert, mit Ausnahme von Vorlagendatenbanken (template0 und template1 für lokale Quellen). Für jede Datenbank, die migriert werden soll, müssen Sie die folgenden Schritte ausführen:
- Erweiterung installieren: Sie müssen
CREATE EXTENSION IF NOT EXISTS pglogicalausführen, um die Erweiterung in der Datenbank zu installieren. - Primärschlüsselbeschränkung: Daten werden nur für Tabellen mit Primärschlüsseln migriert. Bei Tabellen ohne Primärschlüssel wird bei der Migration nur das Tabellenschema kopiert, nicht die Daten. Außerdem werden bei Tabellen ohne Primärschlüssel bei dieser Migration nur der erste Snapshot und
INSERT-Anweisungen während der CDC-Phase (Change Data Capture) unterstützt.UPDATE- undDELETE-Anweisungen müssen manuell verarbeitet werden. Nutzerberechtigungen: Der Datenbanknutzer, mit dem Sie die Verbindung zur Quellinstanz herstellen, muss ausreichende Berechtigungen für die Postgres-Standarddatenbank, das
pglogical-Schema und alle Migrationsschemata haben (mit Ausnahme von Informationsschemata und Schemata, die mitpg_beginnen). Für PostgreSQL müssen Sie insbesondere die folgenden Berechtigungen gewähren:GRANT USAGE on SCHEMA <SCHEMA> to <USER>; GRANT SELECT on ALL TABLES in SCHEMA pglogical to <USER>; GRANT SELECT on ALL TABLES in SCHEMA <SCHEMA> to <USER>; GRANT SELECT on ALL SEQUENCES in SCHEMA <SCHEMA> to <USER>; ALTER USER <USER> with REPLICATION role;
DDL-Unterstützung
Während der Migration werden nur Änderungen an der Datenbearbeitungssprache (Data Manipulation Language, DML) automatisch synchronisiert. Die Datendefinitionssprache (Data Definition Language, DDL) muss manuell verwaltet werden, damit die Quell- und Zieldatenbanken während der Migration kompatibel bleiben. Wir empfehlen, pglogical.replicate_ddl_command zu verwenden, um DDL an der Quelle und am Ziel an einem konsistenten Punkt auszuführen.
Konnektivität und Autorisierung
Sie müssen die Netzwerkfirewall öffnen und die Datei pg_hba.conf so konfigurieren, dass eingehende Verbindungen von der ausgehenden IP-Adresse des Ziels (dem Migrationsendpunkt) akzeptiert werden. Diese wird in der GDC Console angegeben.
Migration verwalten
Ein Nutzer mit der Rolle „DB-Administrator für Projekt“ muss die folgenden Schritte ausführen. Verwenden Sie die GDC Console oder die Distributed Cloud CLI, um Migrationen zu verwalten:
Console
- Wählen Sie im Hauptmenü Database Service aus.
- Klicken Sie auf Migration erstellen.
- Lesen Sie im Dialogfeld Erste Schritte die Anforderungen an die Quelle und die Konnektivität.
- Geben Sie im Dialogfeld Quelldatenbank angeben den Hostnamen oder die IP-Adresse der Quelldatenbank, den Nutzernamen, das Passwort, den Verschlüsselungstyp und das Zertifikat an.
- Geben Sie im Dialogfeld Cluster konfigurieren die Cluster-ID, das Passwort, die Datenbankversion, die CPU, den Arbeitsspeicher und die Speicherkapazität des Zieldatenbankclusters an. Achten Sie darauf, dass Sie genügend Arbeitsspeicher für Ihre größte Tabelle auswählen.
- Klicken Sie auf Erstellen. Das Erstellen der Migration und des Zieldatenbankclusters kann einige Minuten dauern.
Der Status ändert sich von
ReconcilingzuReady, wenn der Cluster bereit ist. Der Migrationsstatus ändert sich zuUnsynced, wenn die Migration erfolgreich eingerichtet wurde. Verwenden Sie die folgenden Optionen, um die Migration zu verwalten:- Starten: Dadurch wird die Migration gestartet und der Migrationsstatus in
Runninggeändert. - Beenden: Dadurch wird die Migration beendet und der Migrationsstatus in
Stoppedgeändert. - Hochstufen: Dadurch wird der Zieldatenbankcluster zu einer eigenständigen Datenbank hochgestuft.
- Löschen: Dadurch werden die Migration und der für diese Migration erstellte Zieldatenbankcluster gelöscht.
- Starten: Dadurch wird die Migration gestartet und der Migrationsstatus in
Rotieren Sie das Passwort des Replikationsnutzers der Quelldatenbank regelmäßig mit den folgenden Schritten:
- Rufen Sie die Quelldatenbank auf und klicken Sie auf „Bearbeiten“ Bearbeiten.
- Nehmen Sie die Änderungen vor, um das Passwort des Replikationsnutzers zu rotieren.
- Klicken Sie auf Speichern , um die Änderungen zu übernehmen.
Nachdem die Änderung angewendet wurde, verwendet das Migrations-Backend das neue Passwort.
gdcloud
Bevor Sie die Distributed Cloud CLI verwenden, installieren und initialisieren Sie sie. Authentifizieren Sie sich dann bei Ihrer Organisation.
Migration erstellen:
gdcloud database connection-profiles create DB_ENGINE_TYPE SOURCE_CONNECTION_PROFILE \ --username REPLICATION_USERNAME \ --password REPLICATION_PASSWORD \ --ca-certificate CA_CERT_FILE_PATH gdcloud database migrations create MIGRATION_NAME \ --source SOURCE_CONNECTION_PROFILE \ --destination DESTINATION_DBCLUSTER gdcloud database clusters create DESTINATION_DBCLUSTER \ --database-version DB_VERSION \ --admin-password ADMIN_PASSWORDErsetzen Sie die folgenden Variablen:
DB_ENGINE_TYPE: Der Typ der Datenbank-Engine für die Migration. Unterstützte Werte sind:postgresql.SOURCE_CONNECTION_PROFILE: Der Name für das neue Verbindungsprofil.REPLICATION_USERNAME: Der Name für den Replikationsnutzer der Quelldatenbank.REPLICATION_PASSWORD: Das Passwort für den Replikationsnutzer der Quelldatenbank.CA_CERT_FILE_PATH: Der Pfad zum CA-Zertifikat der Quelldatenbank.MIGRATION_NAME: Der Name für die neue Migration.DESTINATION_DBCLUSTER: Der Name für den Zieldatenbankcluster.DB_VERSION: Der Versionsstring für den neuen Cluster. Beispiel:POSTGRESQL_13.ADMIN_PASSWORD: Das Passwort des Administratornutzers für den neuen Cluster.
Migration starten:
gdcloud database migrations start MIGRATION_NAMEMigration beenden:
gdcloud database migrations stop MIGRATION_NAMEMigration hochstufen:
gdcloud database migrations promote MIGRATION_NAMEVorhandene Verbindungsprofile auflisten:
gdcloud database connection-profiles list DB_ENGINE_TYPEVorhandene Migration auflisten:
gdcloud database migrations list --destination DESTINATION_DBCLUSTER
API
Für PostgreSQL-Quelldatenbanken:
Secret zum Speichern des CA-Zertifikats der Quelldatenbank erstellen:
apiVersion: v1
data:
ca.crt: SOURCE_DB_CA_CERT
kind: Secret
metadata:
annotations:
propagation.gdch.gke.io/target-namespace: USER_PROJECT
name: es-crt-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
type: Opaque
Secret zum Speichern des Passworts des Migrationsnutzers der Quelldatenbank erstellen:
apiVersion: v1
data:
password: SOURCE_DB_USER_PASSWORD
kind: Secret
metadata:
annotations:
propagation.gdch.gke.io/target-namespace: USER_PROJECT
name: es-pw-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
type: Opaque
Externalserver erstellen:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: ExternalServer
metadata:
name: EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
spec:
host: SOURCE_DB_HOST
port: 5432
username: SOURCE_DB_USERNAME
password:
name: es-pw-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
certRef:
name: es-crt-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
Migration erstellen:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: Migration
metadata:
name: MIGRATION_NAME
namespace: USER_PROJECT
spec:
source:
reference:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: ExternalServer
name: EXTERNAL_SERVER_NAME
target:
reference:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: DBCluster
name: DBCLUSTER_NAME
control: MIGRATION_CONTROL
Ersetzen Sie die folgenden Variablen:
EXTERNAL_SERVER_NAME: Der Name des Externalservers, der die Quelldatenbank darstellt.USER_PROJECT: Der Name des Nutzerprojekts, in dem der Externalserver erstellt wird.DBENGINE_NAME: Der Name der Datenbank-Engine. Unterstützte Werte sind:postgresql.SOURCE_DB_CA_CERT: Das CA-Zertifikat der Quelldatenbank.SOURCE_DB_USER_PASSWORD: Das Passwort des Migrationsnutzers der Quelldatenbank.SOURCE_DB_USERNAME: Der Migrationsnutzername der Quelldatenbank.SOURCE_DB_HOST: Die Migrationshostadresse der Quelldatenbank.MIGRATION_NAME: Der Name des Migrationsvorgangs.DBCLUSTER_NAME: Der Name des Zieldatenbankclusters der Migration.MIGRATION_CONTROL: Die Steuerelemente des Migrationsvorgangs. Bei der Erstellung der Migration muss einer der Wertestartoderstopangegeben werden. Um den Zieldatenbankcluster der Migration hochzustufen, musspromoteangegeben werden.