Fazer upgrade para a versão 18.1.0 do AlloyDB Omni na 1.7.0

Selecione uma versão da documentação:

Esta página descreve como fazer um upgrade de versão principal para o AlloyDB Omni 18.1.0 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 destas ações:

Fazer upgrade com script

É possível encontrar 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 dele e execute o seguinte comando:

./MVU.sh 18.1.0 1.7.0 NAME NAMESPACE OS_TYPE

Substitua as seguintes variáveis:

  • NAME: o nome do cluster de banco de dados.
  • NAMESPACE: o namespace do cluster de banco de dados.
  • OS_TYPE: o sistema operacional de base da imagem do banco de dados. Os valores válidos são Debian e UBI9. Se não for especificado, o operador usará UBI9 como padrão para as versões 16.9.0 e mais recentes do banco de dados.

Executar etapas de upgrade manual

Siga as instruções da versão principal em que você está fazendo upgrade.

Fazer upgrade da versão 17.x.x para 18.1.0

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

  2. Remova o plano de backup.

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

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

    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. Pare o processo do PostgreSQL e mova os dados para o upgrade.

    kubectl exec -ti POD_NAME -- /bin/Bash
    # Shut down postgres
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    postgres@POD_NAME:~$ mkdir /mnt/disks/pgsql/17; mv /mnt/disks/pgsql/data /mnt/disks/pgsql/17/data; cp -r /usr/lib/postgresql/17/bin /mnt/disks/pgsql/17/.; cp -r /usr/lib/postgresql/17/lib /mnt/disks/pgsql/17/.; cp -r /usr/share/postgresql/17 /mnt/disks/pgsql/17/share; rm /mnt/disks/pgsql/17/share/postgresql.conf.sample; cp /usr/share/postgresql/postgresql.conf.sample /mnt/disks/pgsql/17/share/postgresql.conf.sample; chmod 2740 /mnt/disks/pgsql/17/data
    

    Substitua a seguinte variável:

    • POD_NAME: o nome do pod.
  6. Aplique um patch no cluster de banco de dados para a versão 18.1.0 e nos agentes do plano de controle (CPA) para 1.7.0.

    kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"18.1.0","controlPlaneAgentsVersion":"1.7.0","databaseImageOSType":"UBI9"}}'
    

    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 versão atualizada do AlloyDB Omni.

    kubectl 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 pg17 cluster
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/17/data/pg_hba.conf /mnt/disks/pgsql/17/data/pg_hba.conf.bak
    
    # Update pg17 configurations
    postgres@POD_NAME:~$ echo "local      all           all                      trust" >> /mnt/disks/pgsql/17/data/pg_hba.conf; echo "host       all           all      127.0.0.1/32    trust" >> /mnt/disks/pgsql/17/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/17/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/17/bin -B /usr/lib/postgresql/18/bin -d /mnt/disks/pgsql/17/data -D /mnt/disks/pgsql/data --link -v
    
    postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin -b /mnt/disks/pgsql/17/bin -B /usr/lib/postgresql/18/bin -d /mnt/disks/pgsql/17/data -D /mnt/disks/pgsql/data --link -v
    
    # Recover pg17 configurations
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/17/data/pg_hba.conf.bak /mnt/disks/pgsql/data/pg_hba.conf; cp -r /mnt/disks/pgsql/17/data/postgresql.conf /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/17/data/postgresql.conf.d /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/17/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/17/
    

    Substitua a seguinte variável:

    • POD_NAME: o nome do pod.
  11. Após um upgrade bem-sucedido, remova a anotação de upgrade de versão manual 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 todos os backups, planos de backup ou processos de replicação desativados nas etapas de um a três.

Fazer upgrade da versão 16.x.x para 17.5.0

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

    1. Remova o plano de backup.
  2. Encerre todos os processos de replicação. Isso inclui replicação física usada para alta disponibilidade (HA) e resiliência de dados (DR) bem como todos os fluxos de replicação lógica.

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

    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.
  4. Pare o processo do PostgreSQL e mova os dados para o upgrade.

    kubectl exec -ti POD_NAME -- /bin/Bash
    # Shut down postgres
    postgres@POD_NAME:~$ supervisorctl.par stop postgres
    
    postgres@POD_NAME:~$ mkdir /mnt/disks/pgsql/16; mv /mnt/disks/pgsql/data /mnt/disks/pgsql/16/data; cp -r /usr/lib/postgresql/16/bin /mnt/disks/pgsql/16/.; cp -r /usr/lib/postgresql/16/lib /mnt/disks/pgsql/16/.; cp -r /usr/share/postgresql/16 /mnt/disks/pgsql/16/share; rm /mnt/disks/pgsql/16/share/postgresql.conf.sample; cp /usr/share/postgresql/postgresql.conf.sample /mnt/disks/pgsql/16/share/postgresql.conf.sample; chmod 2740 /mnt/disks/pgsql/16/data
    

    Substitua a seguinte variável:

    • POD_NAME: o nome do pod.
  5. Aplique um patch no cluster de banco de dados para a versão 17.5.0 e nos agentes do plano de controle (CPA) para 1.6.2.

    kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"17.5.0","controlPlaneAgentsVersion":"1.6.2","databaseImageOSType":"UBI9"}}'
    

    Substitua a seguinte variável:

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

    kubectl 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.
  7. 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 pg16 cluster
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/16/data/pg_hba.conf /mnt/disks/pgsql/16/data/pg_hba.conf.bak
    
    # Update pg16 configurations
    postgres@POD_NAME:~$ echo "local      all           all                      trust" >> /mnt/disks/pgsql/16/data/pg_hba.conf; echo "host       all           all      127.0.0.1/32    trust" >> /mnt/disks/pgsql/16/data/pg_hba.conf
    

    Substitua a seguinte variável:

    • POD_NAME: o nome do pod.
  8. 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/16/data
    

    Substitua a seguinte variável:

    • POD_NAME: o nome do pod.
  9. 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/16/bin -B /usr/lib/postgresql/17/bin -d /mnt/disks/pgsql/16/data -D /mnt/disks/pgsql/data --link -v
    
    postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin -b /mnt/disks/pgsql/16/bin -B /usr/lib/postgresql/17/bin -d /mnt/disks/pgsql/16/data -D /mnt/disks/pgsql/data --link -v
    
    # Recover pg16 configurations
    postgres@POD_NAME:~$ cp /mnt/disks/pgsql/16/data/pg_hba.conf.bak /mnt/disks/pgsql/data/pg_hba.conf; cp -r /mnt/disks/pgsql/16/data/postgresql.conf /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/16/data/postgresql.conf.d /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/16/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/16/
    

    Substitua a seguinte variável:

    • POD_NAME: o nome do pod.
  10. Após um upgrade bem-sucedido, remova a anotação de upgrade de versão manual 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.
  11. Retome as operações normais e reative todos os backups, planos de backup ou processos de replicação desativados nas etapas de um a três.

Fazer upgrade da versão 15.x.x para 17.5.0

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

  2. Remova o plano de backup.

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

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

    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. Pare o processo do PostgreSQL e mova os dados para o upgrade.

    kubectl 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. Aplique um patch no cluster de banco de dados para a versão 17.5.0 e nos agentes do plano de controle (CPA) para 1.6.2.

    kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"17.5.0","controlPlaneAgentsVersion":"1.6.2","databaseImageOSType":"UBI9"}}'
    

    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 versão atualizada do AlloyDB Omni.

    kubectl 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/17/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/17/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v
    
    # 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. Após um upgrade bem-sucedido, remova a anotação de upgrade de versão manual 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 todos os backups, planos de backup ou processos de replicação desativados nas etapas de um a três.