Fazer upgrade de uma versão secundária do AlloyDB Omni usando contêineres

Selecione uma versão da documentação:

Para aplicar correções de bugs, patches de segurança e pequenas melhorias sem migrar seus dados, faça um upgrade da versão secundária do banco de dados do AlloyDB Omni substituindo a imagem do contêiner por uma imagem de versão secundária posterior na mesma faixa de versão principal. Os upgrades de versão secundária preservam o diretório de dados do host e os arquivos de configuração atuais, além de permitir que você verifique a instalação atualizada ou reverta para uma versão secundária anterior, se necessário.

Para fazer upgrade entre as principais versões do PostgreSQL, consulte Fazer upgrade do AlloyDB Omni em uma VM.

As instruções nesta página se aplicam a implantações independentes de nó único e a nós de banco de dados individuais em topologias de vários nós, como implantações com réplicas de leitura ou nós de espera de alta disponibilidade. Analise as seguintes considerações com base na sua configuração:

  • Diretório de dados externo: antes de interromper e remover um contêiner, confirme se os dados do banco de dados estão armazenados em um diretório de host permanente montado no contêiner (por exemplo, -v DATA_DIR:/var/lib/postgresql/data). A remoção de um contêiner que armazena dados apenas no sistema de arquivos do contêiner exclui os dados do banco de dados. Para mais informações, consulte Instalar o AlloyDB Omni usando contêineres.
  • Topologias de vários nós: sempre faça upgrade de todos os nós de réplica e de espera antes de fazer upgrade do nó principal. Em uma configuração de alta disponibilidade, pause o failover automático ou a detecção de falhas antes de interromper os contêineres e faça uma troca para um nó de espera atualizado antes de fazer upgrade do nó principal anterior.
  • Imagens de contêiner personalizadas com extensões: se você criou uma imagem de contêiner personalizada com extensões de terceiros, como PostGIS ou Orafce, recrie a imagem do contêiner personalizada usando a imagem de base da versão secundária atualizada antes de recriar o contêiner.

Antes de começar

Antes de fazer upgrade do AlloyDB Omni, siga estas etapas:

  1. Planeje uma janela de manutenção ou um breve tempo de inatividade do serviço, porque a substituição do contêiner exige a interrupção temporária do serviço de banco de dados.
  2. Faça um backup completo do banco de dados antes de iniciar o upgrade. Para mais informações, consulte Visão geral de backup e restauração.
  3. Se você estiver fazendo upgrade de uma topologia de vários nós, identifique o nó principal atual e todos os nós de espera ou de réplica para que possa fazer upgrade dos nós de espera e de réplica primeiro.
  4. Inspecione o contêiner em execução para registrar a imagem atual, a montagem do diretório de dados do host, os mapeamentos de porta, as variáveis de ambiente e as flags de ambiente de execução para recriar o contêiner com a mesma configuração:

    Docker

    docker inspect CONTAINER_NAME

    Podman

    podman inspect CONTAINER_NAME

    Substitua CONTAINER_NAME pelo nome do contêiner do AlloyDB Omni. Por exemplo, my-omni.

  5. Verifique a versão atual do banco de dados do AlloyDB Omni antes de fazer upgrade:

    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();"

Extrair a imagem de contêiner atualizada

Extraia a imagem do contêiner da versão secundária de destino para a máquina host:

Docker

docker pull IMAGE_URI

Podman

podman pull IMAGE_URI

Substitua IMAGE_URI pelo URI da imagem do contêiner e pela tag de versão secundária para a qual você quer fazer upgrade. Por exemplo, google/alloydbomni:18.4.0 para a imagem do Debian ou google/alloydbomni:18.4.0-ubi9 para a imagem de base universal (UBI, na sigla em inglês) do Red Hat.

Se a implantação usar uma imagem de contêiner personalizada com extensões como PostGIS ou Orafce, atualize a instrução FROM ou o argumento de build OMNI_VERSION no Dockerfile para referenciar a tag de versão secundária atualizada e, em seguida, crie a imagem personalizada atualizada antes de continuar.

Fazer upgrade do AlloyDB Omni

Para fazer upgrade da instalação do AlloyDB Omni para uma versão secundária mais recente, siga as etapas a seguir em cada nó. Em uma topologia de vários nós, conclua estas etapas em cada nó de espera ou réplica antes de fazer upgrade do nó principal:

  1. Interrompa e remova o contêiner do AlloyDB Omni:

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME

    Interromper e remover o contêiner não afeta os arquivos do banco de dados no diretório de dados do host montado.

  2. Recrie e inicie o contêiner do AlloyDB Omni usando a imagem da versão secundária atualizada e montando o diretório de dados do host atual:

    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

    Substitua:

    • CONTAINER_NAME: o nome do contêiner do AlloyDB Omni. Por exemplo, my-omni.
    • PASSWORD: a senha do usuário postgres do contêiner. Quando você monta um diretório de dados inicializado, o contêiner mantém a senha configurada no banco de dados.
    • DATA_DIR: o caminho do diretório do host em que os dados do banco de dados estão armazenados.
    • HOST_PORT: a porta TCP na máquina host que publica a porta do contêiner 5432, por exemplo, 5432.
    • IMAGE_URI: o URI da imagem do contêiner da versão secundária atualizada (ou o URI da imagem personalizada recriada), por exemplo, google/alloydbomni:18.4.0.

    Use a mesma variante de imagem do SO de base (Debian ou UBI) do contêiner anterior para que a propriedade do arquivo no diretório de dados do host corresponda ao usuário postgres do contêiner. Se o contêiner anterior usava outras flags de ambiente de execução, como --ulimit, --log-driver, --shm-size ou -v /dev/shm:/dev/shm, inclua essas flags ao recriar o contêiner. Para mais informações, consulte Configurar o AlloyDB Omni para produção.

Verificar o upgrade

Depois de recriar e iniciar o contêiner, confirme se o serviço de banco de dados está executando a versão secundária atualizada:

  1. Verifique o status do contêiner do AlloyDB Omni e confirme se ele é Up:

    Docker

    docker ps --filter "name=CONTAINER_NAME"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
  2. Conecte-se ao banco de dados e confirme se a versão atualizada está ativa:

    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();"

Reverter o upgrade

Se você precisar reverter a instalação do AlloyDB Omni para a versão secundária anterior, interrompa e remova o contêiner atualizado e inicie um contêiner que use a imagem da versão secundária anterior:

  1. Interrompa e remova o contêiner do AlloyDB Omni atualizado:

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME
  2. Recrie e inicie o contêiner usando a imagem da versão secundária anterior e montando o mesmo diretório de dados do 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_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

    Substitua:

    • CONTAINER_NAME: o nome do contêiner do AlloyDB Omni. Por exemplo, my-omni.
    • PASSWORD: a senha do usuário postgres do contêiner. Quando você monta um diretório de dados inicializado, o contêiner mantém a senha configurada no banco de dados.
    • DATA_DIR: o caminho do diretório do host em que os dados do banco de dados estão armazenados.
    • HOST_PORT: a porta TCP na máquina host que publica a porta do contêiner 5432, por exemplo, 5432.
    • ROLLBACK_IMAGE_URI: o URI da imagem do contêiner e a tag de versão secundária da instalação anterior (ou o URI da imagem personalizada anterior), por exemplo, google/alloydbomni:18.1.0.
  3. Confirme se o contêiner está em execução e se a versão anterior do banco de dados está ativa:

    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();"

A seguir