Fazer upgrade para a versão 16.8.0 do AlloyDB Omni no Kubernetes

Selecione uma versão da documentação:

Nesta página, descrevemos como fazer upgrade para a versão 16.8.0 do AlloyDB Omni no Kubernetes.

Antes de começar

Fazer upgrade da versão do AlloyDB Omni

Para fazer upgrade da versão do AlloyDB Omni usando pg_upgrade, faça uma das seguintes ações:

Script de upgrade

Você encontra um script que executa as etapas de upgrade manual nos exemplos do AlloyDB Omni no GitHub.

Para usar o script de upgrade, faça o download e execute o seguinte comando:

./MVU.sh 16.8.0 1.5.0 NAME NAMESPACE

Substitua as seguintes variáveis:

  • NAME: o nome do cluster de banco de dados.
  • NAMESPACE: o namespace do cluster de banco de dados.

Etapas de upgrade manual

  1. Faça backup dos seus dados para evitar a perda deles.

  2. Remova seu plano de backup.

  3. Encerre todos os processos de replicação. Isso inclui a replicação física usada para alta disponibilidade (HA) e resiliência de dados (DR), além de todos os fluxos de replicação lógica.

  4. Anote o cluster de banco de dados para especificar um upgrade manual de versão.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=true
    

    Substitua a seguinte variável:

    • NAME: o nome do cluster de banco de dados.
  5. Interrompa o processo do PostgreSQL para que os dados possam ser movidos para o upgrade.

    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
    

    Substitua a seguinte variável:

    • POD_NAME: o nome do pod.
  6. Faça o patch do cluster de banco de dados para a versão 16.8.0 e dos agentes do plano de controle (CPA) para 1.5.0.

    kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"16.8.0","controlPlaneAgentsVersion":"omni_control_plane_agents_version"}}'
    

    Substitua a seguinte variável:

    • NAME: o nome do cluster de banco de dados.
  7. Crie um cluster de banco de dados vazio para a nova versão do AlloyDB Omni.

    k 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 ~
    

    Substitua a seguinte variável:

    • POD_NAME: o nome do pod.
  8. Modifique pg_hba.conf no cluster de banco de dados preexistente para fornecer ao processo de upgrade as permissões e conexões necessárias.

    # 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
    

    Substitua a seguinte variável:

    • POD_NAME: o nome do pod.
  9. Modifique pg_hba.conf no novo cluster de banco de dados para fornecer ao processo de upgrade as permissões e conexões necessárias.

    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
    

    Substitua a seguinte variável:

    • POD_NAME: o nome do pod.
  10. Faça upgrade do cluster de banco de dados.

    # (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
    
    # Need to 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/
    

    Substitua a seguinte variável:

    • POD_NAME: o nome do pod.
  11. Remova a anotação de upgrade manual da versão do cluster de banco de dados.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-
    

    Substitua a seguinte variável:

    • NAME: o nome do cluster de banco de dados.
  12. Retome as operações normais e reative os backups, planos de backup ou processos de replicação desativados nas etapas de um a três.