Para actualizar entre versiones principales de PostgreSQL, consulta Actualiza AlloyDB Omni en una VM.
Las instrucciones de esta página se aplican a las implementaciones independientes de un solo nodo y a los nodos de bases de datos individuales en topologías de varios nodos, como las implementaciones con réplicas de lectura o nodos en espera de alta disponibilidad. Revisa las siguientes consideraciones según tu configuración:
- Directorio de datos externo: Antes de detener y quitar un contenedor, confirma
que los datos de tu base de datos estén almacenados en un directorio de host persistente activado
en el contenedor (por ejemplo,
-v DATA_DIR:/var/lib/postgresql/data). Si quitas un contenedor que almacena datos solo dentro del sistema de archivos del contenedor, se borrarán los datos de tu base de datos. Para obtener más información, consulta Instala AlloyDB Omni con contenedores. - Topologías de varios nodos: Siempre actualiza todos los nodos de réplica y en espera antes de actualizar el nodo principal. En una configuración de alta disponibilidad, pausa la conmutación por error automática o la detección de fallas antes de detener los contenedores y realiza un cambio a un nodo en espera actualizado antes de actualizar el nodo principal anterior.
- Imágenes de contenedor personalizadas con extensiones: Si compilaste una imagen de contenedor personalizada con extensiones de terceros, como PostGIS u Orafce, vuelve a compilar la imagen de contenedor personalizada con la imagen base de la versión secundaria actualizada antes de volver a crear el contenedor.
Antes de comenzar
Antes de actualizar AlloyDB Omni, completa los siguientes pasos:
- Planifica un período de mantenimiento o un breve tiempo de inactividad del servicio, ya que reemplazar el contenedor requiere detener temporalmente el servicio de base de datos.
- Realiza una copia de seguridad completa de la base de datos antes de comenzar la actualización. Para obtener más información, consulta Descripción general de la copia de seguridad y el restablecimiento.
- Si actualizas una topología de varios nodos, identifica el nodo principal actual y todos los nodos en espera o de réplica para que puedas actualizar primero los nodos en espera y de réplica.
Inspecciona el contenedor en ejecución para registrar su imagen actual, la activación del directorio de datos del host, las asignaciones de puertos, las variables de entorno y las marcas de entorno de ejecución para que puedas volver a crear el contenedor con la misma configuración:
Docker
docker inspect CONTAINER_NAMEPodman
podman inspect CONTAINER_NAMEReemplaza
CONTAINER_NAMEpor el nombre de tu contenedor de AlloyDB Omni, por ejemplo,my-omni.Verifica la versión actual de tu base de datos de AlloyDB Omni antes de actualizar:
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();"
Extrae la imagen de contenedor actualizada
Extrae la imagen de contenedor de la versión secundaria de destino en tu máquina anfitrión:
Docker
docker pull IMAGE_URIPodman
podman pull IMAGE_URIReemplaza IMAGE_URI por el URI de la imagen de contenedor y la etiqueta de versión secundaria a la que deseas actualizar, por ejemplo, google/alloydbomni:18.4.0 para la imagen de Debian o google/alloydbomni:18.4.0-ubi9 para la imagen base universal (UBI) de Red Hat.
Si tu implementación usa una imagen de contenedor personalizada con extensiones como
PostGIS u
Orafce, actualiza la instrucción FROM o el
argumento de compilación OMNI_VERSION en tu Dockerfile para hacer referencia a la etiqueta de versión secundaria
actualizada y, luego, compila la imagen personalizada actualizada antes de continuar.
Actualiza AlloyDB Omni
Para actualizar tu instalación de AlloyDB Omni a una versión secundaria posterior, completa los siguientes pasos en cada nodo. En una topología de varios nodos, completa estos pasos en cada nodo en espera o de réplica antes de actualizar el nodo principal:
Detén y quita el contenedor de AlloyDB Omni existente:
Docker
docker container stop CONTAINER_NAME docker container rm CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME podman container rm CONTAINER_NAMEDetener y quitar el contenedor no afecta los archivos de la base de datos en el directorio de datos del host activado.
Vuelve a crear y, luego, inicia el contenedor de AlloyDB Omni con la imagen de la versión secundaria actualizada y activa el directorio de datos del host existente:
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_URIReemplaza lo siguiente:
CONTAINER_NAME: Es el nombre de tu contenedor de AlloyDB Omni, por ejemplo,my-omni.PASSWORD: Es la contraseña del usuariopostgresdel contenedor. Cuando activas un directorio de datos inicializado existente, el contenedor conserva la contraseña existente configurada en tu base de datos.DATA_DIR: Es la ruta de acceso del directorio del host en la que se almacenan los datos de la base de datos existente.HOST_PORT: Es el puerto TCP en la máquina anfitrión que publica el puerto del contenedor5432, por ejemplo,5432.IMAGE_URI: Es el URI de la imagen de contenedor de la versión secundaria actualizada (o el URI de la imagen personalizada que volviste a compilar), por ejemplo,google/alloydbomni:18.4.0.
Usa la misma variante de imagen de SO base (Debian o UBI) que tu contenedor anterior para que la propiedad de los archivos en el directorio de datos del host coincida con el usuario
postgresdel contenedor. Si tu contenedor anterior usaba marcas de entorno de ejecución adicionales, como--ulimit,--log-driver,--shm-sizeo-v /dev/shm:/dev/shm, inclúyelas cuando vuelvas a crear el contenedor. Para obtener más información, consulta Configura AlloyDB Omni para producción.
Verifica la actualización
Después de volver a crear y de iniciar el contenedor, confirma que el servicio de base de datos ejecute la versión secundaria actualizada:
Verifica el estado del contenedor de AlloyDB Omni y confirma que su estado sea
Up:Docker
docker ps --filter "name=CONTAINER_NAME"Podman
podman ps --filter "name=CONTAINER_NAME"Conéctate a la base de datos y confirma que la versión actualizada esté activa:
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();"
Revierte la actualización
Si necesitas revertir la instalación de AlloyDB Omni a la versión secundaria anterior, detén y quita el contenedor actualizado, y, luego, inicia un contenedor que use la imagen de la versión secundaria anterior:
Detén y quita el contenedor de AlloyDB Omni actualizado:
Docker
docker container stop CONTAINER_NAME docker container rm CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME podman container rm CONTAINER_NAMEVuelve a crear y, luego, inicia el contenedor con la imagen de la versión secundaria anterior y activa el mismo directorio de datos del host:
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_URIReemplaza lo siguiente:
CONTAINER_NAME: Es el nombre de tu contenedor de AlloyDB Omni, por ejemplo,my-omni.PASSWORD: Es la contraseña del usuariopostgresdel contenedor. Cuando activas un directorio de datos inicializado existente, el contenedor conserva la contraseña existente configurada en tu base de datos.DATA_DIR: Es la ruta de acceso del directorio del host en la que se almacenan los datos de la base de datos existente.HOST_PORT: Es el puerto TCP en la máquina anfitrión que publica el puerto del contenedor5432, por ejemplo,5432.ROLLBACK_IMAGE_URI: Es el URI de la imagen de contenedor y la etiqueta de versión secundaria de tu instalación anterior (o el URI de la imagen personalizada anterior), por ejemplo,google/alloydbomni:18.1.0.
Confirma que el contenedor se esté ejecutando y que la versión anterior de la base de datos esté activa:
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();"
¿Qué sigue?
- Actualiza AlloyDB Omni en una VM
- Configura AlloyDB Omni para producción
- Personaliza tu instalación de AlloyDB Omni
- Administra y supervisa AlloyDB Omni
- Descripción general de la copia de seguridad y el restablecimiento