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:
Führen Sie das Bash-Skript aus, das das Upgrade für Sie durchführt.
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
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=true
Ersetzen Sie die folgende Variable:
- NAME: Der Name Ihres Datenbankclusters.
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.
Patchen Sie Ihren Datenbankcluster auf Version
16.8.0
und Ihre CPA-Agents (Control Plane Agents) auf1.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.
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.
Ä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.
Ä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.
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.
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.
Nehmen Sie den normalen Betrieb wieder auf und aktivieren Sie alle Sicherungen, Sicherungspläne oder Replikationsprozesse wieder, die in den Schritten 1 bis 3 deaktiviert wurden.