Depois de algumas dificuldades, foi isso que encontrei:
Existem duas grandes possibilidades mencionadas nos documentos :
- Use
pg_dumpallpara exportar os dados do serviço antigo epsqlpara 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_dumpallbinary); - 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.confepg_hba.confna 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
postgrespossa escrever
... e ainda não funciona necessariamente (veja, por exemplo, pg_upgrade falha com um erro não especificado ).