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 :
- 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.
- 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.
- 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.
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_NAMEPodman
podman inspect CONTAINER_NAMERemplacez
CONTAINER_NAMEpar le nom de votre conteneur AlloyDB Omni (par exemple,my-omni).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_URIPodman
podman pull IMAGE_URIRemplacez 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 :
Arrêtez et supprimez le conteneur AlloyDB Omni existant :
Docker
docker container stop CONTAINER_NAME docker container rm CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME podman container rm CONTAINER_NAMEL'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é.
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_URIPodman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -p HOST_PORT:5432 \ --restart=always \ IMAGE_URIRemplacez les éléments suivants :
CONTAINER_NAME: nom de votre conteneur AlloyDB Omni (par exemple,my-omni).PASSWORD: mot de passe de l'utilisateurpostgresdu 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 conteneur5432(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 exemplegoogle/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
postgresdu conteneur. Si votre conteneur précédent utilisait des options d'exécution supplémentaires, telles que--ulimit,--log-driver,--shm-sizeou-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 :
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"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 :
Arrêtez et supprimez le conteneur AlloyDB Omni mis à niveau :
Docker
docker container stop CONTAINER_NAME docker container rm CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME podman container rm CONTAINER_NAMERecré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_URIPodman
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_URIRemplacez les éléments suivants :
CONTAINER_NAME: nom de votre conteneur AlloyDB Omni (par exemple,my-omni).PASSWORD: mot de passe de l'utilisateurpostgresdu 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 conteneur5432(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 exemplegoogle/alloydbomni:18.1.0.
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
- Mettre à niveau AlloyDB Omni sur une VM
- Configurer AlloyDB Omni pour la production
- Personnaliser votre installation AlloyDB Omni
- Gérer et surveiller AlloyDB Omni
- Présentation de la sauvegarde et de la restauration