Avant de commencer
Vérifiez que la version de votre opérateur Kubernetes AlloyDB Omni est
1.6.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 de disposer d'au moins 5 Go d'espace disque libre.
Si vous exécutez des systèmes de sauvegarde externes ou distants, effectuez une sauvegarde complète et mettez en veille toutes les sauvegardes planifiées pour éviter de sauvegarder pendant le processus de mise à niveau.
Pour les environnements de haute disponibilité (HA) et de résilience des données (DR), dissociez vos clusters de bases de données avant de les mettre à niveau.
Mettre à niveau votre version d'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 automatiquement.
Effectuer une mise à niveau scriptée
Vous trouverez un script qui permet d'effectuer 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 17.5.0 1.6.0 NAME NAMESPACE OS_TYPE
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.
- OS_TYPE : système d'exploitation de base pour l'image de la base de données. Les valeurs valides sont
DebianetUBI9. S'il n'est pas spécifié, l'opérateur est défini par défaut surUBI9pour les versions de base de données 16.9.0 et ultérieures.
Effectuer les étapes de mise à niveau manuelle
Suivez les instructions correspondant à la version majeure à partir de laquelle vous effectuez la mise à niveau.
Mettre à niveau de la version 16.x.x vers la version 17.5.0
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=trueRemplacez la variable suivante :
- NAME : nom de votre cluster de bases de données.
Arrêtez le processus PostgreSQL et déplacez les donné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/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/dataRemplacez la variable suivante :
- POD_NAME : nom de votre pod.
Corrigez votre cluster de bases de données pour qu'il utilise la version
17.5.0et vos agents du plan de contrôle (CPA) pour qu'ils utilisent la version1.6.0.kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"17.5.0","controlPlaneAgentsVersion":"1.6.0","databaseImageOSType":"UBI9"}}'Remplacez la variable suivante :
- NAME : nom de votre cluster de bases de données.
Créez un cluster de bases de données vide pour la version mise à niveau d'AlloyDB Omni.
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 ~Remplacez la variable suivante :
- POD_NAME : nom de votre pod.
Modifiez
pg_hba.confdans votre cluster de bases 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 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.confRemplacez la variable suivante :
- POD_NAME : nom de votre pod.
Modifiez
pg_hba.confdans 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/16/dataRemplacez 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/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/Remplacez la variable suivante :
- POD_NAME : nom de votre pod.
Une fois la mise à niveau effectuée, 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 que vous avez désactivés lors des étapes 1 à 3.
Mettre à niveau la version 15.x.x vers la version 17.5.0
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=trueRemplacez la variable suivante :
- NAME : nom de votre cluster de bases de données.
Arrêtez le processus PostgreSQL et déplacez les donné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/dataRemplacez la variable suivante :
- POD_NAME : nom de votre pod.
Corrigez votre cluster de bases de données pour qu'il utilise la version
17.5.0et vos agents du plan de contrôle (CPA) pour qu'ils utilisent la version1.6.0.kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"17.5.0","controlPlaneAgentsVersion":"1.6.0","databaseImageOSType":"UBI9"}}'Remplacez la variable suivante :
- NAME : nom de votre cluster de bases de données.
Créez un cluster de bases de données vide pour la version mise à niveau d'AlloyDB Omni.
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 ~Remplacez la variable suivante :
- POD_NAME : nom de votre pod.
Modifiez
pg_hba.confdans votre cluster de bases 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.confRemplacez la variable suivante :
- POD_NAME : nom de votre pod.
Modifiez
pg_hba.confdans 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/dataRemplacez 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/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/Remplacez la variable suivante :
- POD_NAME : nom de votre pod.
Une fois la mise à niveau effectuée, 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 que vous avez désactivés lors des étapes 1 à 3.