postgres postgresql upgrade pg_upgrade
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 do pagila.
- 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.
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-16/bin/postgresql-16-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-16/bin/pg_upgrade \ -d /var/lib/pgsql/14/data \ -D /var/lib/pgsql/16/data \ -b /usr/pgsql-14/bin \ -B /usr/pgsql-16/bin
Upgrade pelo script de conveniência, fornecendo a versão de origem, como root ou postgres:
postgres@pg-1:~$ pg_upgradecluster 14 main
Upgrade pelo pg_upgrade
, como postgres:
postgres@pg-1:~$ /usr/lib/postgresql/16/pg_upgrade \ -d /var/lib/postgresql/14/main \ -D /var/lib/postgresql/16/main \ -b /usr/lib/postgresql/14 \ -B /usr/lib/postgresql/16