Mettre à niveau vers AlloyDB Omni version 17.5.0 sur la version 1.6.0

Sélectionnez une version de la documentation :

Cette page explique comment effectuer une mise à niveau de version majeure vers AlloyDB Omni version 17.5.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 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 Debian et UBI9. S'il n'est pas spécifié, l'opérateur est défini par défaut sur UBI9 pour 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

  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 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/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","databaseImageOSType":"UBI9"}}'
    

    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 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.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/16/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
    
    # (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.
  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 la version 15.x.x vers la version 17.5.0

  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 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/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","databaseImageOSType":"UBI9"}}'
    

    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
    
    # (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.
  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.