Effectuer une mise à niveau de version mineure pour AlloyDB Omni à l'aide de conteneurs

Sélectionnez une version de la documentation :

Pour appliquer des corrections de bugs, des correctifs de sécurité et des améliorations mineures sans migrer vos données, effectuez une mise à niveau de la version mineure de la base de données pour AlloyDB Omni en remplaçant l'image de conteneur par une image de version mineure ultérieure dans la même version majeure. Les mises à niveau de version mineure préservent le répertoire de données et les fichiers de configuration de l'hôte existants, et vous permettent de vérifier l'installation mise à niveau ou d'effectuer un rollback vers une version mineure antérieure si nécessaire.

Pour passer d'une version majeure de PostgreSQL à une autre, consultez Mettre à niveau AlloyDB Omni sur une VM.

Les instructions de cette page s'appliquent aux déploiements autonomes à nœud unique et aux nœuds de base de données individuels dans des topologies multinœuds, telles que les déploiements avec des instances répliquées avec accès en lecture ou des nœuds de secours à haute disponibilité. Examinez les points suivants en fonction de votre configuration :

  • Répertoire de données externe : avant d'arrêter et de supprimer un conteneur, vérifiez que les données de votre base de données sont stockées dans un répertoire hôte persistant installé dans le conteneur (par exemple, -v DATA_DIR:/var/lib/postgresql/data). La suppression d'un conteneur qui stocke des données uniquement dans le système de fichiers du conteneur supprime les données de votre base de données. Pour en savoir plus, consultez Installer AlloyDB Omni à l'aide de conteneurs.
  • Topologies multinœuds : mettez toujours à niveau tous les nœuds d'instance répliquée et de secours avant de mettre à niveau le nœud principal. Dans une configuration à haute disponibilité, suspendez le basculement automatique ou la détection des défaillances avant d'arrêter les conteneurs, et effectuez un basculement vers un nœud de secours mis à niveau avant de mettre à niveau l'ancien nœud principal.
  • Images de conteneurs personnalisées avec des extensions : si vous avez créé une image de conteneur personnalisée avec des extensions tierces telles que PostGIS ou Orafce, recréez votre image de conteneur personnalisée en utilisant l'image de base de la version mineure mise à jour avant de recréer le conteneur.

Avant de commencer

Avant de mettre à niveau AlloyDB Omni, procédez comme suit :

  1. Planifiez un intervalle de maintenance ou un bref temps d'arrêt du service, car le remplacement du conteneur nécessite l'arrêt temporaire du service de base de données.
  2. Effectuez une sauvegarde complète de votre base de données avant de commencer la mise à niveau. Pour en savoir plus, consultez Présentation de la sauvegarde et de la restauration.
  3. Si vous mettez à niveau une topologie multinœud, identifiez le nœud principal actuel et tous les nœuds de secours ou instances répliquées afin de pouvoir mettre à niveau les nœuds de secours et les instances répliquées en premier.
  4. Inspectez votre conteneur en cours d'exécution pour enregistrer son image actuelle, l'installation du répertoire de données de l'hôte, les mappages de ports, les variables d'environnement et les options d'exécution afin de pouvoir recréer le conteneur avec la même configuration :

    Docker

    docker inspect CONTAINER_NAME

    Podman

    podman inspect CONTAINER_NAME

    Remplacez CONTAINER_NAME par le nom de votre conteneur AlloyDB Omni (par exemple, my-omni).

  5. Vérifiez la version actuelle de votre base de données AlloyDB Omni avant de procéder à la mise à niveau :

    Docker

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

Extraire l'image de conteneur mise à jour

Récupérez l'image de conteneur de la version mineure cible sur votre machine hôte :

Docker

docker pull IMAGE_URI

Podman

podman pull IMAGE_URI

Remplacez IMAGE_URI par l'URI de l'image de conteneur et le tag de version mineure vers lesquels vous souhaitez effectuer la mise à niveau (par exemple, google/alloydbomni:18.4.0 pour l'image Debian ou google/alloydbomni:18.4.0-ubi9 pour l'image de base universelle Red Hat (UBI)).

Si votre déploiement utilise une image de conteneur personnalisée avec des extensions telles que PostGIS ou Orafce, mettez à jour l'instruction FROM ou l'argument de compilation OMNI_VERSION dans votre Dockerfile pour référencer le tag de version mineure mis à jour, puis compilez l'image personnalisée mise à jour avant de continuer.

Mettre à niveau AlloyDB Omni

Pour mettre à niveau votre installation AlloyDB Omni vers une version mineure ultérieure, procédez comme suit sur chaque nœud. Dans une topologie multinœud, effectuez ces étapes sur chaque nœud de secours ou instance répliquée avant de mettre à niveau le nœud principal :

  1. Arrêtez et supprimez le conteneur AlloyDB Omni existant :

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME

    L'arrêt et la suppression du conteneur n'affectent pas les fichiers de base de données du répertoire de données de l'hôte installé.

  2. Recréez et démarrez le conteneur AlloyDB Omni en utilisant l'image de la version mineure mise à jour et en installant votre répertoire de données hôte existant :

    Docker

    docker run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      IMAGE_URI

    Podman

    podman run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      IMAGE_URI

    Remplacez les éléments suivants :

    • CONTAINER_NAME : nom de votre conteneur AlloyDB Omni (par exemple, my-omni).
    • PASSWORD : mot de passe de l'utilisateur postgres du conteneur. Lorsque vous installez un répertoire de données initialisé existant, le conteneur conserve le mot de passe existant configuré dans votre base de données.
    • DATA_DIR : chemin d'accès au répertoire hôte dans lequel les données de votre base de données existante sont stockées.
    • HOST_PORT : port TCP sur la machine hôte qui publie le port de conteneur 5432 (par exemple, 5432).
    • IMAGE_URI : URI de l'image de conteneur de la version mineure mise à jour (ou URI de votre image personnalisée recompilée), par exemple google/alloydbomni:18.4.0.

    Utilisez la même variante d'image d'OS de base (Debian ou UBI) que votre conteneur précédent afin que la propriété des fichiers dans le répertoire de données de votre hôte corresponde à l'utilisateur postgres du conteneur. Si votre conteneur précédent utilisait des options d'exécution supplémentaires, telles que --ulimit, --log-driver, --shm-size ou -v /dev/shm:/dev/shm, incluez-les lorsque vous recréez le conteneur. Pour en savoir plus, consultez Configurer AlloyDB Omni pour la production.

Vérifier la mise à niveau

Après avoir recréé et démarré le conteneur, vérifiez que le service de base de données exécute la version mineure mise à jour :

  1. Vérifiez l'état du conteneur AlloyDB Omni et confirmez qu'il est défini sur Up :

    Docker

    docker ps --filter "name=CONTAINER_NAME"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
  2. Connectez-vous à la base de données et vérifiez que la version mise à niveau est active :

    Docker

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

Effectuer un rollback de la mise à niveau

Si vous devez rétablir la version mineure précédente de votre installation AlloyDB Omni, arrêtez et supprimez le conteneur mis à niveau, puis démarrez un conteneur qui utilise l'image de votre version mineure précédente :

  1. Arrêtez et supprimez le conteneur AlloyDB Omni mis à niveau :

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME
  2. Recréez et démarrez le conteneur à l'aide de l'image de votre version mineure précédente et en installant le même répertoire de données hôte :

    Docker

    docker run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      ROLLBACK_IMAGE_URI

    Podman

    podman run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      ROLLBACK_IMAGE_URI

    Remplacez les éléments suivants :

    • CONTAINER_NAME : nom de votre conteneur AlloyDB Omni (par exemple, my-omni).
    • PASSWORD : mot de passe de l'utilisateur postgres du conteneur. Lorsque vous installez un répertoire de données initialisé existant, le conteneur conserve le mot de passe existant configuré dans votre base de données.
    • DATA_DIR : chemin d'accès au répertoire hôte dans lequel les données de votre base de données existante sont stockées.
    • HOST_PORT : port TCP sur la machine hôte qui publie le port de conteneur 5432 (par exemple, 5432).
    • ROLLBACK_IMAGE_URI : URI de l'image de conteneur et tag de version mineure de votre installation précédente (ou URI de votre image personnalisée précédente), par exemple google/alloydbomni:18.1.0.
  3. Vérifiez que le conteneur est en cours d'exécution et que la version précédente de la base de données est active :

    Docker

    docker ps --filter "name=CONTAINER_NAME"
    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

Étapes suivantes