Upgrade auf AlloyDB Omni-Version 16.9.0 auf 1.6.0

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite wird beschrieben, wie Sie ein Hauptversions-Upgrade auf AlloyDB Omni-Version 16.9.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 16.9.0 1.6.0 NAME NAMESPACE OS_TYPE

Ersetzen Sie die folgenden Variablen:

  • NAME: der Name Ihres Datenbankclusters.
  • NAMESPACE: der Namespace für Ihren Datenbankcluster.
  • OS_TYPE: Das Basisbetriebssystem für das Datenbank-Image. Gültige Werte sind Debian und UBI9. Wenn nichts angegeben ist, wird für Datenbankversionen ab 16.9.0 standardmäßig der Operator UBI9 verwendet.

Manuelle Schritte für das Upgrade ausführen

Folgen Sie der Anleitung für die Hauptversion, von der Sie das Upgrade ausführen.

Upgrade von Version 16.x.x auf Version 17.5.0

  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 und verschieben Sie die Daten für das Upgrade.

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

    Ersetzen Sie die folgende Variable:

    • POD_NAME: der Name Ihres Pods.
  6. Patchen Sie Ihren Datenbankcluster auf Version 16.9.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":"16.9.0","controlPlaneAgentsVersion":"1.6.0","databaseImageOSType":"UBI9"}}'
    

    Ersetzen Sie die folgende Variable:

    • NAME: der Name Ihres Datenbankclusters.
    festlegen.
  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 pg16 cluster
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/16/data/pg_hba.conf /mnt/disks/pgsql/16/data/pg_hba.conf.bak
    
    # Update pg16 configurations
    postgres@POD_NAME:~$ echo "local      all           all                      trust" >> /mnt/disks/pgsql/16/data/pg_hba.conf; echo "host       all           all      127.0.0.1/32    trust" >> /mnt/disks/pgsql/16/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/16/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/16/bin -B /usr/lib/postgresql/17/bin -d /mnt/disks/pgsql/16/data -D /mnt/disks/pgsql/data --link -v
    
    postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin -b /mnt/disks/pgsql/16/bin -B /usr/lib/postgresql/17/bin -d /mnt/disks/pgsql/16/data -D /mnt/disks/pgsql/data --link -v
    
    # Recover pg16 configurations
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/16/data/pg_hba.conf.bak /mnt/disks/pgsql/data/pg_hba.conf; cp -r /mnt/disks/pgsql/16/data/postgresql.conf /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/16/data/postgresql.conf.d /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/16/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/16/
    

    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.5.0

  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 und verschieben Sie die Daten für das Upgrade.

    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.9.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":"16.9.0","controlPlaneAgentsVersion":"1.6.0","databaseImageOSType":"UBI9"}}'
    

    Ersetzen Sie die folgende Variable:

    • NAME: der Name Ihres Datenbankclusters.
    fest.
  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
    
    # (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 pg16 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/16/
    

    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.