Effectuer une mise à niveau de version majeure à partir d'AlloyDB Omni version 15.x.x sur Kubernetes

Sélectionnez une version de la documentation :

Cette page explique comment effectuer une mise à niveau de version majeure vers AlloyDB Omni version 15.13.0 sur Kubernetes.

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 :

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 TO_VERSION OPERATOR_VERSION NAME NAMESPACE

Remplacez les variables suivantes :

  • TO_VERSION : version vers laquelle vous effectuez la mise à niveau, par exemple 16.8.0 ou 17.5.0.
  • OPERATOR_VERSION : version de l'opérateur AlloyDB Omni (par exemple, 1.5.0 ou 1.6.0).
  • NAME : nom de votre cluster de bases de données.
  • NAMESPACE : espace de noms de votre cluster de bases de données.

Effectuer les étapes de mise à niveau manuelle

Suivez les instructions correspondant à la version majeure vers laquelle vous effectuez la mise à niveau.

Mettre à niveau de la version 15.x.x vers la version 16.x.x

  1. Sauvegardez vos données pour éviter de les perdre.

  2. Supprimez votre plan de sauvegarde.

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

  4. 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.
  5. 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.
  6. Corrigez votre cluster de bases de données pour qu'il utilise la version 16.8.0 et vos agents du plan de contrôle (CPA) pour qu'ils utilisent la version 1.5.0.

    kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"16.8.0","controlPlaneAgentsVersion":"1.5.0"}}'
    

    Remplacez la variable suivante :

    • NAME : nom de votre cluster de bases de données.
  7. 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.
  8. Modifiez pg_hba.conf dans 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.conf
    

    Remplacez la variable suivante :

    • POD_NAME : nom de votre pod.
  9. 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.
  10. Mettez à niveau votre cluster de bases de données.

    # (optional) Make sure postgres is stopped
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    # Change to the pgsql directory before running pg_upgrade postgres@POD_NAME:~$ cd /mnt/disks/pgsql
    
    # (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
    
    # 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.
  11. 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.
  12. 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 de la version 15.x.x vers la version 17.x.x

  1. Sauvegardez vos données pour éviter de les perdre.

  2. Supprimez votre plan de sauvegarde.

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

  4. 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.
  5. 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.
  6. Corrigez votre cluster de bases de données pour qu'il utilise la version 17.5.0 et vos agents du plan de contrôle (CPA) pour qu'ils utilisent la version 1.6.0.

    kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"17.5.0","controlPlaneAgentsVersion":"1.6.0"}}'
    

    Remplacez la variable suivante :

    • NAME : nom de votre cluster de bases de données.
  7. 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.
  8. Modifiez pg_hba.conf dans 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.conf
    

    Remplacez la variable suivante :

    • POD_NAME : nom de votre pod.
  9. 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.
  10. Mettez à niveau votre cluster de bases de données.

    # (optional) Make sure postgres is stopped
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    # Change to the pgsql directory before running pg_upgrade postgres@POD_NAME:~$ cd /mnt/disks/pgsql
    
    # (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 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.
  11. 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.
  12. 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.