Hinweise
Prüfen Sie, ob Ihre AlloyDB Omni Kubernetes-Operatorversion
1.6.0ist. 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:
Führen Sie das Bash-Script aus, das das Upgrade für Sie durchführt.
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
DebianundUBI9. Wenn nichts angegeben ist, wird für Datenbankversionen ab 16.9.0 standardmäßig der OperatorUBI9verwendet.
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
Sichern Sie Ihre Daten, um Datenverlust zu vermeiden.
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.
Annotieren Sie Ihren Datenbankcluster, um ein manuelles Versionsupgrade anzugeben.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=trueErsetzen Sie die folgende Variable:
- NAME: der Name Ihres Datenbankclusters.
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/dataErsetzen Sie die folgende Variable:
- POD_NAME: der Name Ihres Pods.
Patchen Sie Ihren Datenbankcluster auf Version
16.9.0und Ihre Steuerungsebenen-Agenten (Control Plane Agents, CPA) auf1.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.
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.
Ändern Sie
pg_hba.confin 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.confErsetzen Sie die folgende Variable:
- POD_NAME: der Name Ihres Pods.
Ändern Sie
pg_hba.confim 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/dataErsetzen Sie die folgende Variable:
- POD_NAME: der Name Ihres Pods.
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.
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.
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
Sichern Sie Ihre Daten, um Datenverlust zu vermeiden.
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.
Annotieren Sie Ihren Datenbankcluster, um ein manuelles Versionsupgrade anzugeben.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=trueErsetzen Sie die folgende Variable:
- NAME: der Name Ihres Datenbankclusters.
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/dataErsetzen Sie die folgende Variable:
- POD_NAME: der Name Ihres Pods.
Patchen Sie Ihren Datenbankcluster auf Version
16.9.0und Ihre Steuerungsebenen-Agenten (Control Plane Agents, CPA) auf1.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.
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.
Ändern Sie
pg_hba.confin 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.confErsetzen Sie die folgende Variable:
- POD_NAME: der Name Ihres Pods.
Ändern Sie
pg_hba.confim 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/dataErsetzen Sie die folgende Variable:
- POD_NAME: der Name Ihres Pods.
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.
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.
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.