O programa pg_upgrade
depende dos serviços, tanto da versão de origem quanto da versão de destino, não estejam no ar. Contudo, depende dos diretórios de dados estarem inicializados.
Quando executado, o pg_upgrade
inicia as instâncias das duas versões e faz a transferência (cópia ou hard link) dos objetos que não sofreram alterações estruturais, assim como cria novos objetos no destino e copia os dados daqueles que sofreram alterações estruturais. Portanto, ele precisa conhecer as localizações dos diretórios de dados e dos diretórios de binários.
Para usar o modo de hard link, adicione -k
nos comandos do pg_upgrade
abaixo.
- Faça a inicialização de um PostgreSQL em duas versões majoritárias distintas.
- Popule um banco de dados na versão mais antiga com dados, por exemplo abaixo.
- Baixe os serviços.
- Execute o upgrade por um dos comandos abaixo usando, opcionalmente, o
-k
. - Suba o serviço da nova versão.
- Valide os dados na nova versão com o
psql
, selects e metacomandos.
CentOS – RHEL
Upgrade pelo script de conveniência, apenas de uma versão para a próxima, executando o script da versão de destino:
[root@pg-1 ~]# /usr/pgsql-12/bin/postgresql-12-setup upgrade
Upgrade pelo pg_upgrade
, fornecendo os diretórios de dados de origem (-d
), de destino (-D
) e diretórios dos executáveis de origem (-b
) e de destino (-B
), como postgres:
[postgres@pg-1 ~]$ /usr/pgsql-12/bin/pg_upgrade \
-d /var/lib/pgsql/11/data \
-D /var/lib/pgsql/12/data \
-b /usr/pgsql-11/bin \
-B /usr/pgsql-12/bin
Debian – Ubuntu
Upgrade pelo script de conveniência, fornecendo a versão de origem, como root ou postgres:
postgres@pg-1:~$ pg_upgradecluster 11 main
Upgrade pelo pg_upgrade
, como postgres:
postgres@pg-1:~$ /usr/lib/postgresql/12/pg_upgrade \ -d /var/lib/postgresql/11/main \ -D /var/lib/postgresql/12/main \ -b /usr/lib/postgresql/11 \ -B /usr/lib/postgresql/12