Avant de commencer
Assurez-vous que la version de votre opérateur Kubernetes AlloyDB Omni est
1.4.0
. Pour mettre à niveau la version de votre opérateur AlloyDB Omni, consultez Migrer vers la dernière version de l'opérateur Kubernetes AlloyDB Omni.Assurez-vous d'avoir au moins 5 Go d'espace disque libre.
Si vous exécutez des systèmes de sauvegarde externes ou à distance, effectuez une sauvegarde complète et suspendez toutes les sauvegardes planifiées pour éviter de sauvegarder pendant le processus de mise à niveau.
Pour les environnements haute disponibilité (HA) et reprise après sinistre (DR), dissociez vos clusters de bases de données avant de les mettre à niveau.
Mettre à niveau votre version AlloyDB Omni
Pour mettre à niveau votre version d'AlloyDB Omni à l'aide de pg_upgrade
, procédez de l'une des manières suivantes :
Exécutez le script Bash qui effectue la mise à niveau pour vous.
Script de mise à niveau
Vous trouverez un script qui effectue les étapes de mise à niveau manuelle dans les exemples AlloyDB Omni sur GitHub.
Pour utiliser le script de mise à niveau, téléchargez-le et exécutez la commande suivante :
./MVU.sh 16.3.0 1.4.0 NAME NAMESPACE
Remplacez les variables suivantes :
- NAME : nom de votre cluster de bases de données.
- NAMESPACE : espace de noms de votre cluster de bases de données.
Étapes de mise à niveau manuelle
Sauvegardez vos données pour éviter de les perdre.
Arrêtez tous les processus de réplication. Cela inclut la réplication physique utilisée pour la haute disponibilité (HA) et la résilience des données (DR), ainsi que tous les flux de réplication logique.
Annotez votre cluster de bases de données pour spécifier une mise à niveau manuelle de la version.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=true
Remplacez la variable suivante :
- NAME : nom de votre cluster de bases de données.
Arrêtez le processus PostgreSQL pour que les données puissent être déplacées pour la mise à niveau.
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
Remplacez la variable suivante :
- POD_NAME : nom de votre pod.
Corrigez votre cluster de bases de données pour qu'il utilise la version
16.3.0
et vos agents du plan de contrôle (CPA) pour qu'ils utilisent la version1.4.0
.kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"16.3.0","controlPlaneAgentsVersion":"omni_control_plane_agents_version"}}'
Remplacez la variable suivante :
- NAME : nom de votre cluster de bases de données.
Créez un cluster de base de données vide pour la nouvelle version AlloyDB Omni.
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 ~
Remplacez la variable suivante :
- POD_NAME : nom de votre pod.
Modifiez
pg_hba.conf
dans votre cluster de base de données existant pour fournir au processus de mise à niveau les autorisations et les connexions dont il a besoin.# 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
Remplacez la variable suivante :
- POD_NAME : nom de votre pod.
Modifiez
pg_hba.conf
dans le nouveau cluster de bases de données pour fournir au processus de mise à niveau les autorisations et les connexions dont il a besoin.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
Remplacez la variable suivante :
- POD_NAME : nom de votre pod.
Mettez à niveau votre cluster de bases de données.
# (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/
Remplacez la variable suivante :
- POD_NAME : nom de votre pod.
Supprimez l'annotation de mise à niveau manuelle de la version de votre cluster de bases de données.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-
Remplacez la variable suivante :
- NAME : nom de votre cluster de bases de données.
Reprenez les opérations normales et réactivez les sauvegardes, les plans de sauvegarde ou les processus de réplication désactivés lors des étapes 1 à 3.