Erweiterte Migration verwalten

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 pglogical ausfü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- und DELETE-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 mit pg_ 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

  1. Wählen Sie im Hauptmenü Database Service aus.
  2. Klicken Sie auf Migration erstellen.
  3. Lesen Sie im Dialogfeld Erste Schritte die Anforderungen an die Quelle und die Konnektivität.
  4. 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.
  5. 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.
  6. Klicken Sie auf Erstellen. Das Erstellen der Migration und des Zieldatenbankclusters kann einige Minuten dauern. Der Status ändert sich von Reconciling zu Ready, wenn der Cluster bereit ist. Der Migrationsstatus ändert sich zu Unsynced, wenn die Migration erfolgreich eingerichtet wurde. Verwenden Sie die folgenden Optionen, um die Migration zu verwalten:
    1. Starten: Dadurch wird die Migration gestartet und der Migrationsstatus in Running geändert.
    2. Beenden: Dadurch wird die Migration beendet und der Migrationsstatus in Stopped geändert.
    3. Hochstufen: Dadurch wird der Zieldatenbankcluster zu einer eigenständigen Datenbank hochgestuft.
    4. Löschen: Dadurch werden die Migration und der für diese Migration erstellte Zieldatenbankcluster gelöscht.

Rotieren Sie das Passwort des Replikationsnutzers der Quelldatenbank regelmäßig mit den folgenden Schritten:

  1. Rufen Sie die Quelldatenbank auf und klicken Sie auf „Bearbeiten“ Bearbeiten.
  2. Nehmen Sie die Änderungen vor, um das Passwort des Replikationsnutzers zu rotieren.
  3. Klicken Sie auf Speichern , um die Änderungen zu übernehmen.

Nachdem die Änderung angewendet wurde, verwendet das Migrations-Backend das neue Passwort.

gdcloud

  1. Bevor Sie die Distributed Cloud CLI verwenden, installieren und initialisieren Sie sie. Authentifizieren Sie sich dann bei Ihrer Organisation.

  2. 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_PASSWORD
    

    Ersetzen 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.
  3. Migration starten:

    gdcloud database migrations start MIGRATION_NAME
    
  4. Migration beenden:

    gdcloud database migrations stop MIGRATION_NAME
    
  5. Migration hochstufen:

    gdcloud database migrations promote MIGRATION_NAME
    
  6. Vorhandene Verbindungsprofile auflisten:

    gdcloud database connection-profiles list DB_ENGINE_TYPE
    
  7. Vorhandene 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 Werte start oder stop angegeben werden. Um den Zieldatenbankcluster der Migration hochzustufen, muss promote angegeben werden.