Upgrade auf AlloyDB Omni-Version 16.8.0 unter Kubernetes

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite wird beschrieben, wie Sie auf Kubernetes auf AlloyDB Omni-Version 16.8.0 aktualisieren.

Hinweise

  • Prüfen Sie, ob die Version Ihres AlloyDB Omni Kubernetes-Operators 1.5.0 ist. Informationen zum Aktualisieren der AlloyDB Omni-Operatorversion finden Sie unter Zur neuesten Version des AlloyDB Omni Kubernetes-Operators migrieren.

  • Achten Sie darauf, dass mindestens 5 GB freier Speicherplatz verfügbar sind.

  • Wenn Sie externe oder Remote-Sicherungssysteme verwenden, führen Sie eine vollständige Sicherung durch und pausieren Sie alle geplanten Sicherungen, um Sicherungen während des Upgrades zu vermeiden.

  • In Umgebungen mit Hochverfügbarkeit (HA) und Datenresilienz (DR) sollten Sie Ihre Datenbankcluster entkoppeln, bevor Sie sie aktualisieren.

AlloyDB Omni-Version aktualisieren

Wenn Sie Ihre AlloyDB Omni-Version mit pg_upgrade aktualisieren möchten, haben Sie folgende Möglichkeiten:

Upgrade-Script

Ein Skript, das die manuellen Upgradeschritte ausführt, finden Sie in den AlloyDB Omni-Beispielen auf GitHub.

Laden Sie das Upgrade-Skript herunter und führen Sie den folgenden Befehl aus, um es zu verwenden:

./MVU.sh 16.8.0 1.5.0 NAME NAMESPACE

Ersetzen Sie die folgenden Variablen:

  • NAME: Der Name Ihres Datenbankclusters.
  • NAMESPACE: der Namespace für Ihren Datenbankcluster.

Manuelle Upgrade-Schritte

  1. Sichern Sie Ihre Daten, um Datenverlust zu vermeiden.

  2. Sicherungsplan entfernen

  3. Beenden Sie alle Replikationsprozesse. Dazu gehören die physische Replikation für Hochverfügbarkeit (HA) und Datenresilienz (DR) sowie alle Streams für die logische Replikation.

  4. Annotieren Sie Ihren Datenbankcluster, um ein manuelles Versionsupgrade anzugeben.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=true
    

    Ersetzen Sie die folgende Variable:

    • NAME: Der Name Ihres Datenbankclusters.
  5. Beenden Sie den PostgreSQL-Prozess, damit Daten für das Upgrade verschoben werden können.

    k exec -ti POD_NAME -- /bin/Bash
    # Shut down postgres
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    postgres@POD_NAME:~$ mkdir /mnt/disks/pgsql/15; mv /mnt/disks/pgsql/data /mnt/disks/pgsql/15/data; cp -r /usr/lib/postgresql/15/bin /mnt/disks/pgsql/15/.; cp -r /usr/lib/postgresql/15/lib /mnt/disks/pgsql/15/.; cp -r /usr/share/postgresql/15 /mnt/disks/pgsql/15/share; rm /mnt/disks/pgsql/15/share/postgresql.conf.sample; cp /usr/share/postgresql/postgresql.conf.sample /mnt/disks/pgsql/15/share/postgresql.conf.sample; chmod 2740 /mnt/disks/pgsql/15/data
    

    Ersetzen Sie die folgende Variable:

    • POD_NAME: der Name Ihres Pods.
  6. Patchen Sie Ihren Datenbankcluster auf Version 16.8.0 und Ihre CPA-Agents (Control Plane Agents) auf 1.5.0.

    kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"16.8.0","controlPlaneAgentsVersion":"omni_control_plane_agents_version"}}'
    

    Ersetzen Sie die folgende Variable:

    • NAME: Der Name Ihres Datenbankclusters.
  7. Erstellen Sie einen leeren Datenbankcluster für die neue AlloyDB Omni-Version.

    k exec -ti POD_NAME -- /bin/Bash
    
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    # Initialize a new, empty database cluster for the new version.
    postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/data; initdb -D /mnt/disks/pgsql/data -U alloydbadmin --data-checksums --encoding=UTF8 --locale=C --locale-provider=icu --icu-locale=und-x-icu --auth-host=trust --auth-local=reject; cd ~
    

    Ersetzen Sie die folgende Variable:

    • POD_NAME: der Name Ihres Pods.
  8. Ändern Sie pg_hba.conf in Ihrem vorhandenen Datenbankcluster, um dem Upgrade-Prozess die erforderlichen Berechtigungen und Verbindungen zu gewähren.

    # Backup pg_hba.conf of the pg15 cluster
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/15/data/pg_hba.conf /mnt/disks/pgsql/15/data/pg_hba.conf.bak
    
    # Update pg15 configurations
    postgres@POD_NAME:~$ echo "local      all           all                      trust" >> /mnt/disks/pgsql/15/data/pg_hba.conf; echo "host       all           all      127.0.0.1/32    trust" >> /mnt/disks/pgsql/15/data/pg_hba.conf
    

    Ersetzen Sie die folgende Variable:

    • POD_NAME: der Name Ihres Pods.
  9. Ändern Sie pg_hba.conf im neuen Datenbankcluster, um dem Upgrade-Prozess die erforderlichen Berechtigungen und Verbindungen zu gewähren.

    postgres@POD_NAME:~$ rm /mnt/disks/pgsql/data/pg_hba.conf; echo "local      all           all                      trust" >> /mnt/disks/pgsql/data/pg_hba.conf; echo "host       all           all      127.0.0.1/32    trust" >> /mnt/disks/pgsql/data/pg_hba.conf; chmod 2740 /mnt/disks/pgsql/15/data
    

    Ersetzen Sie die folgende Variable:

    • POD_NAME: der Name Ihres Pods.
  10. Führen Sie ein Upgrade Ihres Datenbankclusters durch.

    # (optional) Make sure postgres is stopped
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    # (optional) Check to verify that data can be upgraded.
    postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin --check -b /mnt/disks/pgsql/15/bin -B /usr/lib/postgresql/16/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v
    
    postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin -b /mnt/disks/pgsql/15/bin -B /usr/lib/postgresql/16/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v
    
    # Need to recover pg15 configurations
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/15/data/pg_hba.conf.bak /mnt/disks/pgsql/data/pg_hba.conf; cp -r /mnt/disks/pgsql/15/data/postgresql.conf /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/15/data/postgresql.conf.d /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/15/data/parambackup /mnt/disks/pgsql/data/.
    
    # Start postgres
    postgres@POD_NAME:~$ supervisorctl.par start postgres
    
    # Clean up backup data
    postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/15/
    

    Ersetzen Sie die folgende Variable:

    • POD_NAME: der Name Ihres Pods.
  11. Entfernen Sie die Annotation für das manuelle Versionsupgrade aus Ihrem Datenbankcluster.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-
    

    Ersetzen Sie die folgende Variable:

    • NAME: Der Name Ihres Datenbankclusters.
  12. Nehmen Sie den normalen Betrieb wieder auf und aktivieren Sie alle Sicherungen, Sicherungspläne oder Replikationsprozesse, die in den Schritten 1 bis 3 deaktiviert wurden.