Mettre à niveau vers AlloyDB Omni version 16.8.0 sur Kubernetes

Sélectionnez une version de la documentation :

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

Avant de commencer

  • Vérifiez que la version de votre opérateur Kubernetes AlloyDB Omni est 1.5.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.

  • Vérifiez que vous disposez d'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 mettez en veille 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 :

Effectuer une mise à niveau scriptée

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.8.0 1.5.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.

Effectuer les étapes de mise à niveau manuelle

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

  2. Supprimez votre forfait 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":"omni_control_plane_agents_version"}}'
    

    Remplacez la variable suivante :

    • NAME : nom de votre cluster de bases de données.
  7. Créez un cluster de base de données vide pour la version AlloyDB Omni mise à niveau.

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