Depois de algumas dificuldades, foi isso que encontrei:
Existem duas grandes possibilidades mencionadas nos documentos :
- Use
pg_dumpall
para exportar os dados do serviço antigo epsql
para importá-los no novo; - Use
pg_upgrade
.
Meu conselho é: a menos que você tenha motivos convincentes para não fazê-lo, use o método pg_dumpall
:
- Exportar tudo do antigo serviço de banco de dados (se a nova versão já estiver instalada, use o novo
pg_dumpall
binary); - Importe tudo no novo serviço de banco de dados.
- Pare o antigo serviço de banco de dados.
- Verifique se você tem todas as alterações feitas em
postgresql.conf
epg_hba.conf
na configuração da nova versão. reinicie o novo serviço, se necessário. - Teste se seus aplicativos ainda funcionam.
- Desinstale a versão antiga.
No meu caso (use -p <Port>
conforme apropriado):
sudo -s -u postgres
cd /tmp/
pg_dumpall -p 5433 > all.sql
psql -f all.sql
e, como root
:
systemctl stop [email protected]
vimdiff /etc/postgresql/9.{1,4}/main/postgresql.conf
vimdiff /etc/postgresql/9.{1,4}/main/pg_hba.conf
systemctl restart [email protected]
apt-get remove postgresql-client-9.1 postgresql-9.1
O método pg_upgrade
exige que você descubra e especifique:
- os diretórios de dados antigos e novos (por exemplo,
grep data_directory /etc/postgresql/9.{1,4}/main/postgresql.conf
) - os diretórios dos binários antigos e novos (por exemplo,
dpkg --listfiles postgresql-9.1 | grep '/bin$'
) - Você precisa começar a partir de um diretório em que o usuário
postgres
possa escrever
... e ainda não funciona necessariamente (veja, por exemplo, pg_upgrade falha com um erro não especificado ).