Hauptserverversion eines Clusters aktualisieren

Auf dieser Seite wird der Prozess für die Aktualisierung von Datenbankserverversionen in AlloyDB for PostgreSQL beschrieben. Außerdem wird erläutert, wie Sie Ihre Daten zu einem Cluster migrieren, der mit einer neueren Version von PostgreSQL kompatibel ist.

Weitere Informationen zum Erstellen eines Clusters finden Sie unter Cluster und primäre Instanz erstellen.

Cluster- und PostgreSQL-Versionskompatibilität

Wenn Sie einen AlloyDB-Cluster erstellen, wählen Sie die Hauptversion von PostgreSQL aus, die mit den Instanzen im Cluster kompatibel ist. Der Standardwert ist 16.

In AlloyDB werden während der regelmäßigen Wartung automatische Upgrades von Nebenversionen der Datenbank durchgeführt. Wenn Sie beispielsweise einen Cluster mit Kompatibilität 16 erstellt haben, werden die Datenbankserver in AlloyDB auf die neueste Nebenversion von 16 aktualisiert.

Für ein Hauptversionsupgrade der PostgreSQL-Version müssen Sie das Upgrade jedoch selbst planen, testen und ausführen.

Es gibt verschiedene Methoden, um Hauptversionsupgrades Ihres Clusters durchzuführen:

  1. Ein direktes Upgrade einer Hauptversion, das wir empfehlen.
  2. Daten mit einem dateibasierten Datenexport migrieren
  3. Database Migration Service verwenden

Jede Upgrade-Lösung bietet unterschiedliche Vor- und Nachteile. In der folgenden Tabelle finden Sie einen kurzen Vergleich, der Ihnen bei der Auswahl des richtigen Ansatzes für Ihr Szenario helfen soll.

Direktes Upgrade der Hauptversion Dateibasierter Datenexport Migration mit Database Migration Service
Ihr Cluster, einschließlich der Leseinstanzen, wird auf die ausgewählte höhere Hauptversion aktualisiert. Bei dateibasierten Exporten wird eine einmalige Momentaufnahme Ihrer Datenbanken übertragen. Database Migration Service bietet Funktionen für die kontinuierliche Replikation während der Migration, wodurch die Wahrscheinlichkeit verringert wird, dass Daten in Ihrem neuen Cluster fehlen.
Sie können während der Vorbereitungsphase des Upgrades weiter an Ihrem Cluster arbeiten. Bei Ihrer Anwendung kommt es zu längeren Ausfallzeiten, die beginnen, wenn Sie die Daten exportieren. Sie können keine Datenbankschreibvorgänge in Ihrem ursprünglichen Cluster akzeptieren, bis der neue Cluster vollständig betriebsbereit ist. Die Ausfallzeit Ihrer Anwendung ist kürzer und beginnt, wenn Sie die Anwendung auf den neuen Cluster umstellen möchten.
Je nach Schema kann es während des Upgrades zu Ausfallzeiten von etwa 20 Minuten oder mehr kommen. Nach dem Upgrade können Sie mit derselben IP-Adresse auf den Cluster zugreifen. Sie haben eine detailliertere Kontrolle darüber, welche Daten in den Export aufgenommen werden sollen, und können bestimmte Tabellen oder andere Einheiten nicht migrieren. Der Database Migration Service migriert automatisch alle Datenbanken in Ihren Instanzen und alle Instanzen in Ihrem Cluster. Sie können nicht auswählen, dass bestimmte Tabellen oder Ansichten aus Ihren Migrationsdaten ausgeschlossen werden.
In Ihrem Cluster kann der SSL-Erzwingungsmodus aktiviert sein. Für die Migration müssen Sie den SSL-Erzwingungsmodus im Quellcluster deaktivieren.


Im nächsten Abschnitt wird beschrieben, wie Sie ein Hauptversions-Upgrade durchführen, einschließlich der Migration Ihrer Daten.

Direktes Upgrade der Hauptversion

So wird ein nahtloses Upgrade ermöglicht, ohne dass Sie zusätzliche Cluster einrichten müssen. Weitere Informationen finden Sie unter Direktes Upgrade der Datenbank-Hauptversion durchführen.

Mithilfe des dateibasierten Datenexports migrieren

Wenn Sie einen Datenbankserver verwenden möchten, der mit einer höheren Hauptversion von PostgreSQL kompatibel ist, müssen Sie einen funktional identischen Cluster in derselben Region erstellen und dann Ihre Daten dorthin migrieren.

Gehen Sie so vor:

  1. Erstellen Sie einen Cluster, der mit der Hauptversion der PostgreSQL-Kompatibilität konfiguriert ist, die Sie verwenden möchten. Erstellen Sie den Cluster in derselben Region wie Ihren aktuellen Cluster.

  2. Richten Sie den neuen Cluster mit der neuen Hauptversion so ein, dass er der Konfiguration des aktuellen Clusters entspricht:

    1. Erstellen Sie bei Bedarf zusätzliche Lesepoolinstanzen.

    2. Erstellen Sie bei Bedarf sekundäre Cluster.

      Wenn Sie sekundäre Cluster erstellen, müssen Sie keine PostgreSQL-Hauptversionsnummer angeben. AlloyDB wendet die PostgreSQL-Version des primären Clusters auf alle seine sekundären Cluster an.

    3. Aktualisieren Sie die Datenbank-Flags des neuen Clusters, damit sie den Flag-Einstellungen des aktuellen Clusters entsprechen.

    4. Aktivieren Sie alle Erweiterungen, die für Ihre Anwendungen erforderlich sind.

  3. Daten aus dem alten Cluster mit psql oder pg_dump in Dateien exportieren

  4. Daten aus den Dateien in den neuen Cluster importieren

Ihre Anwendungen können jetzt über die neuen IP-Adressen eine Verbindung zu den Instanzen des neuen Clusters herstellen.

Mit dem Database Migration Service migrieren

Mit Database Migration Service können Sie Daten aus PostgreSQL-Datenbanken in AlloyDB-Cluster verschieben. Database Migration Service bietet keine Konfiguration speziell für AlloyDB-Datenquellen, aber AlloyDB ist mit PostgreSQL kompatibel. Daher können Sie die Konfiguration für allgemeine PostgreSQL-Quellen verwenden.

Bei diesem Migrationspfad handelt es sich nicht um ein In-Place-Upgrade. Es wird ein neuer Cluster mit einer anderen IP-Adresse erstellt. Wir empfehlen, dass Sie zuerst Ihren Cluster klonen und eine Testmigration durchführen, um zu prüfen, ob Ihre Anwendung mit diesem Ansatz kompatibel ist.

Was Sie bedenken sollten

Bevor Sie die Migration mit Database Migration Service vorbereiten, sollten Sie die folgenden Einschränkungen sorgfältig prüfen, um sicherzustellen, dass dieser Migrationspfad für Ihr Upgradeszenario geeignet ist.

Beschränkungen
  • SSL-Verbindungen müssen in Ihrem Quellcluster deaktiviert sein.
  • AlloyDB-Instanzen, die mit Private Service Connect konfiguriert sind, werden nicht unterstützt.
  • Sie können während der Migration keine Instanzupdates oder Failover-Anfragen für den Quellcluster ausführen. Diese Vorgänge können dazu führen, dass der Migrationsjob fehlschlägt.
  • Für dieses Szenario gelten alle Standardeinschränkungen für die Migration von PostgreSQL zu AlloyDB. Eine vollständige Liste der anderen Einschränkungen finden Sie in der Database Migration Service-Dokumentation unter Bekannte Einschränkungen.
Zuverlässigkeit der Migration
Bestimmte Datentypen wie Large Objects werden nicht migriert. Eine vollständige Liste der unterstützten Daten finden Sie in der Dokumentation zu Database Migration Service unter Migration fidelity.
Sperrung und Ausfallzeiten der Quelldatenbank

Der Database Migration Service verwendet kontinuierliche Migrationen, um Daten in AlloyDB-Cluster zu verschieben. Bei dieser Art der Migration werden die Tabellen der Quelldatenbank nacheinander für kurze Zeit (weniger als 10 Sekunden) gesperrt, während der erste Daten-Dump erstellt wird.

Wenn die Migration abgeschlossen ist, müssen Sie alle Schreibvorgänge in der Quelldatenbank beenden, bevor Sie Ihre Anwendung auf den neuen Cluster umstellen können. Dieser Vorgang erfordert Ausfallzeiten. Eine detailliertere Übersicht finden Sie in der Database Migration Service-Dokumentation unter Kontinuierliche Migrationen.

Einschränkungen bei der Replikation

Nachdem der Migrationsjob in die CDC-Phase (Change Data Capture) übergegangen ist, repliziert Database Migration Service kontinuierlich neue Daten, die in Ihre Quelldatenbanken geschrieben werden.

Bei Tabellen ohne Primärschlüssel werden während der CDC-Phase nur INSERT-Anweisungen repliziert. Alle CREATE-, UPDATE- oder DELETE-Vorgänge, die während der CDC-Phase für Tabellen ohne Primärschlüssel ausgeführt werden, müssen in der Zieldatenbank manuell neu erstellt werden, um Datenverlust zu vermeiden.

Hinweise

  1. Enable the Database Migration Service API.

    Enable the API

  2. Make sure that you have the following role or roles on the project:

    • One of the following:
      • Cloud AlloyDB > Cloud AlloyDB admin
      • Basic > Owner
      • Basic > Editor
    • You must also have the compute.networks.list permission in the Google Cloud project you are using. To gain this permission while following the principle of least privilege, ask your administrator to grant you the Compute Engine > Compute Network User role (roles/compute.networkUser).
    • Database Migration admin

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Zu IAM
    2. Wählen Sie das Projekt aus.
    3. Klicken Sie auf Zugriff erlauben.
    4. Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Dies ist in der Regel die E-Mail-Adresse eines Google-Kontos.

    5. Wählen Sie in der Liste Rolle auswählen eine Rolle aus.
    6. Wenn Sie weitere Rollen hinzufügen möchten, klicken Sie auf Weitere Rolle hinzufügen und fügen Sie weitere Rollen hinzu.
    7. Klicken Sie auf Speichern.
  3. Achten Sie darauf, dass das VPC-Netzwerk im Google Cloud -Projekt, das Sie verwenden, für den Zugriff auf private Dienste für AlloyDB konfiguriert ist.
  4. Entscheiden Sie, in welcher Region Sie den Zielcluster erstellen möchten. Alle Database Migration Service-Entitäten (Verbindungsprofile, Migrationsjobs) müssen in derselben Region wie Ihr Zielcluster erstellt werden.
  5. Bereiten Sie einen Datenbanknutzer vor, mit dem Sie eine Verbindung zu Ihrem Cluster herstellen und Migrationsanweisungen für Ihre Quelldatenbanken ausführen möchten. Für diesen Datenbanknutzer sind bestimmte Berechtigungen und Rollen erforderlich. Wir empfehlen, einen neuen Datenbanknutzer zu erstellen und ihn speziell für die Migration zu verwenden.
  6. Quellinstanzen konfigurieren

    Für Database Migration Service ist eine bestimmte Konfiguration erforderlich, damit eine Verbindung zum Quellcluster hergestellt und Daten in den neuen Zielcluster kopiert werden können.

    So konfigurieren Sie Ihre AlloyDB-Quellinstanzen:

    1. Datenbank-Flags konfigurieren für jede Instanz in Ihrem Quellcluster. Verwenden Sie die folgenden Werte:
      Flag Wert
      alloydb.logical_decoding Legen Sie on fest.
      alloydb.enable_pglogical Legen Sie on fest.
      max_replication_slots Dieses Flag definiert die maximale Anzahl an Replikations-Slots, die von der Quellinstanz unterstützt werden können. Der Mindestwert für dieses Flag ist 50.

      Berechnen Sie den Mindestwert mit der folgenden Formel:

      (the number of databases in your instance) * (the number of simultaneous migration jobs you want to perform) + (slots reserved for table synchronization) + (the number of replication slots you currently use for your read replicas)

      Betrachten Sie ein Beispiel, in dem Folgendes zutrifft:

      • Sie haben keine Lesereplikate in Ihrer Quelle.
      • Sie haben 30 Datenbanken in der primären Quellinstanz.
      • Sie möchten zwei Migrationsjobs für den Quellcluster erstellen.
      • Sie möchten 10 Slots für die Tabellenreplikation verwenden.
      In diesem Fall muss die Anzahl der max_replication_slots mindestens 70 betragen, berechnet als 30 * 2 + 10 + 0.
      max_wal_senders Legen Sie dieses Flag auf mindestens 10 mehr als den Wert max_replication_slots plus die Anzahl der Absender fest, die bereits auf Ihrer Instanz verwendet werden.

      Wenn Sie beispielsweise max_replication_slots flag auf 70 festlegen und bereits 2 Absender verwenden, sollte max_wal_senders mindestens 82 sein (berechnet als 70 + 10 + 2 = 82).

      max_worker_processes Legen Sie dieses Flag auf mindestens die Anzahl der Datenbanken in Ihrer Instanz plus die Anzahl der max_worker_processes fest, die Sie bereits verwenden.

      Wenn Sie beispielsweise 30 Datenbanken in Ihrer Quellinstanz haben und keine Workerprozesse verwenden, legen Sie dieses Flag auf 30 fest.

    2. Deaktivieren Sie den SSL-Erzwingungsmodus für jede Instanz in Ihrem Quellcluster.

    Quelldatenbanken konfigurieren

    Sie müssen die Erweiterung pglogical installieren und dem Datenbanknutzer, den Sie als Migrationsnutzer festlegen, in jeder Datenbank Ihrer Instanzen die erforderlichen Berechtigungen erteilen.

    So konfigurieren Sie Ihre Datenbanken:

    1. Stellen Sie mit dem psql-Client eine Verbindung zur Standarddatenbank postgres her.
    2. Installieren Sie die pglogical-Erweiterung mit dem folgenden Befehl:

      CREATE EXTENSION IF NOT EXISTS pglogical;
      
    3. Erteilen Sie dem Migrationsdatenbanknutzer Berechtigungen für alle Schemas mit Ausnahme des Schemas information und der Schemas, deren Namen mit dem Präfix pg_ beginnen. Führen Sie die folgenden Anweisungen aus:

      GRANT USAGE on SCHEMA SCHEMA_NAME to USER_NAME;
      GRANT SELECT on ALL TABLES in SCHEMA SCHEMA_NAME to USER_NAME;
      GRANT SELECT on ALL SEQUENCES in SCHEMA SCHEMA_NAME to USER_NAME;
      

      Ersetzen Sie Folgendes:

      • SCHEMA_NAME: der Name eines Schemas in Ihrer Datenbank
      • USER_NAME: der Name des Datenbanknutzers, den Sie im Abschnitt Vorbereitung vorbereitet haben

      Wiederholen Sie diesen Schritt für jedes Schema in Ihrer Datenbank mit Ausnahme des Schemas information und der Schemas, deren Namen mit dem Präfix pg_ beginnen. Mit dem Meta-Befehl \dn können Sie alle Datenbankschemata auflisten.

    4. Erteilen Sie die verbleibenden erforderlichen Berechtigungen. Führen Sie die folgenden Anweisungen aus:

      GRANT USAGE on SCHEMA pglogical to PUBLIC;
      GRANT SELECT on ALL TABLES in SCHEMA pglogical to USER_NAME;
      ALTER USER USER_NAME with REPLICATION;
      

      Ersetzen Sie USER_NAME durch den Namen des Datenbanknutzers, den Sie im Abschnitt Vorbereitung vorbereitet haben.

    5. Stellen Sie eine Verbindung zu jeder anderen Datenbank in Ihrer Instanz her und wiederholen Sie die Schritte 2, 3 und 4.

      • Mit dem Meta-Befehl \list können Sie alle Datenbanken in Ihrer Instanz auflisten.

      • Sie können zu einer anderen Datenbank wechseln, ohne die psql-Clientverbindung zurückzusetzen. Verwenden Sie dazu den Befehl \connect {database_name_here}.

    6. Wiederholen Sie diesen Vorgang für jede Instanz in Ihrem AlloyDB-Quellcluster.

    Migration in Database Migration Service ausführen

    Gehen Sie so vor:

    1. Quellverbindungsprofil für Ihren AlloyDB-Cluster erstellen Verwenden Sie die folgenden Werte:

      • Datenbankmodul: Wählen Sie PostgreSQL aus.
      • Hostname/IP: Verwenden Sie die IP-Adresse der primären Instanz in Ihrem Cluster.
      • Nutzername/Passwort: Geben Sie die Anmeldedaten für den Datenbanknutzer ein, den Sie im Abschnitt Vorbereitung vorbereitet haben.
      • Port: Geben Sie 5432 ein.
      • Region: Wählen Sie die Region aus, in der sich der Zielcluster befindet.
      • Verschlüsselungstyp: Wählen Sie Keine aus.
    2. Migrationsjob erstellen und ausführen

      Sie können den neuen AlloyDB-Cluster vorab erstellen oder ihn während der Konfiguration des Migrationsjobs von Database Migration Service erstellen lassen. Weitere Informationen finden Sie in der Dokumentation zu Database Migration Service unter Übersicht über Migrationsjobs.

      Wenn Database Migration Service den Zielcluster für Sie während der Konfiguration des Migrationsjobs erstellen soll, folgen Sie der Anleitung unter Migrationsjob zu einer neuen Zielinstanz erstellen.

      Wenn Sie den Zielcluster außerhalb von Database Migration Service erstellen möchten, folgen Sie der Anleitung unter Migrationsjob zu einer vorhandenen Zielinstanz erstellen.

    3. Wenn sich der Status des Migrationsjobs in CDC ändert, stufen Sie den Migrationsjob hoch. Sie können den Status des Migrationsjobs auf der Seite „Migrationsübersicht“ einsehen. Weitere Informationen finden Sie in der Database Migration Service-Dokumentation unter Migrationsjob prüfen.

      Durch diese Aktion wird der Bootstrap-Modus des Zielclusters beendet. Das bedeutet, dass sich der AlloyDB-Zielcluster nicht mehr im schreibgeschützten Zustand befindet.

    4. (Optional) Prüfen Sie, ob in Tabellen ohne Primärschlüssel Anweisungen fehlen.

      Wenn Ihre AlloyDB-Quelldatenbanken Tabellen ohne Primärschlüssel enthalten, müssen Sie möglicherweise alle fehlenden UPDATE- oder DELETE-Anweisungen manuell migrieren. Weitere Informationen finden Sie in der Database Migration Service-Dokumentation unter UPDATE- und DELETE-Vorgänge für Tabellen ohne Primärschlüssel migrieren.

    5. Stellen Sie Ihre Anwendung auf den neuen Cluster um. Ihre Anwendungen können jetzt über die neuen IP-Adressen eine Verbindung zu den Instanzen des neuen Clusters herstellen.