Hauptversionsupgrade von AlloyDB Omni-Version 15.x.x in Kubernetes durchführen

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite wird beschrieben, wie Sie ein Upgrade auf die Hauptversion von AlloyDB Omni auf Version 15.13.0 in Kubernetes durchführen.

Hinweise

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

  • Prüfen Sie, ob Sie mindestens 5 GB freien Speicherplatz haben.

  • Wenn Sie externe oder Remote-Sicherungssysteme verwenden, führen Sie eine Vollsicherung 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:

Scriptbasiertes Upgrade ausführen

Ein Script, das die manuellen Upgrade-Schritte ausführt, finden Sie in den AlloyDB Omni-Beispielen auf GitHub.

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

./MVU.sh TO_VERSION OPERATOR_VERSION NAME NAMESPACE

Ersetzen Sie die folgenden Variablen:

  • TO_VERSION: die Version, auf die Sie ein Upgrade ausführen, z. B. 16.8.0 oder 17.5.0.
  • OPERATOR_VERSION: Die Version des AlloyDB Omni-Operators, z. B. 1.5.0 oder 1.6.0.
  • NAME: der Name Ihres Datenbankclusters.
  • NAMESPACE: der Namespace für Ihren Datenbankcluster.

Manuelle Schritte für das Upgrade ausführen

Folgen Sie der Anleitung für die Hauptversion, auf die Sie ein Upgrade durchführen.

Upgrade von Version 15.x.x auf Version 16.x.x

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

  2. Entfernen Sie den Sicherungsplan.

  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 Steuerungsebenen-Agenten (Control Plane Agents, CPA) auf 1.5.0.

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

    Ersetzen Sie die folgende Variable:

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

    kubectl 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
    
    # Change to the pgsql directory before running pg_upgrade postgres@POD_NAME:~$ cd /mnt/disks/pgsql
    
    # (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
    
    # 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 nach einem erfolgreichen Upgrade die Annotation zum manuellen 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. Setzen Sie den normalen Betrieb fort und aktivieren Sie alle Sicherungen, Sicherungspläne oder Replikationsprozesse wieder, die Sie in den Schritten 1 bis 3 deaktiviert haben.

Upgrade von Version 15.x.x auf Version 17.x.x

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

  2. Entfernen Sie den Sicherungsplan.

  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 17.5.0 und Ihre Steuerungsebenen-Agenten (Control Plane Agents, CPA) auf 1.6.0.

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

    Ersetzen Sie die folgende Variable:

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

    kubectl 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
    
    # Change to the pgsql directory before running pg_upgrade postgres@POD_NAME:~$ cd /mnt/disks/pgsql
    
    # (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/17/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/17/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v
    
    # 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 nach einem erfolgreichen Upgrade die Annotation zum manuellen 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. Setzen Sie den normalen Betrieb fort und aktivieren Sie alle Sicherungen, Sicherungspläne oder Replikationsprozesse wieder, die Sie in den Schritten 1 bis 3 deaktiviert haben.