Como atualizar o PostgreSQL da versão 8.4 para 9.4?

18

Quero atualizar meu PostgreSQL da versão 8.4 para 9.4 .

A documentação não está muito clara para mim.

  1. Perderei meus bancos de dados antigos se fizer a atualização?
  2. Como posso fazer backup dos meus bancos de dados antigos para perdê-los após a atualização?
  3. Como posso atualizar meu psql?

Meu PostgreSQL está sendo executado em um servidor CentOS 6.6 .

Alex Jolig
fonte
Para ser honesto, a descrição é muito clara na página vinculada. Fazer um despejo significa que você tem um despejo para o caso de algo não funcionar. Isso também significa que você não o perde. Além disso, há um link nessa página que indica como realmente instalar uma versão mais recente - por exemplo, no Ubuntu, há um postgresql-client-9.4pacote que contém psql.
Dezso
@dezso Então, se eu desinstalar o psql 8.4 e for para a 9.4, perderei meus bancos de dados antigos?
Alex Jolig
3
Se você tomar um despejo deles, então não. De qualquer forma, você deve ter backups regulares para testar a capacidade de recuperação, portanto isso não deve ser problema. Além disso, se você optar por usá- pg_upgradelo, ele manterá seus bancos de dados - mas fazer um backup também é obrigatório nesse caso.
Dezso
" How can I backup my old databases if" - não há se . Seus bancos de dados quase certamente ficarão perfeitamente bem após a atualização, mas você sempre deve ter backups novos (de preferência testados) ao executar uma operação como esta de qualquer maneira em caso de problemas inesperados (assuma o pior: pode ocorrer um corte de energia ou outra falha de hardware você em uma posição difícil de reverter ou avançar). Dependendo do seu plano de backup regular, talvez você não precise fazer backups extras.
David Spillett

Respostas:

25

Foi assim que resolvi meu problema.

Atualize o Postgresql 8.4 para 9.4 no Centos

 1. Yum Install PG9.4
 2. wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
 3. yum install pgdg-redhat94-9.4-1.noarch.rpm
 4. yum install postgresql94-server
 5. service postgresql-9.4 initdb
 6. chkconfig postgresql-9.4 on

Dados de backup

 7. su - postgres

 8. pg_dumpall > dump.sql

Restaurar dados

 9. service postgresql stop

 10. service postgresql-9.4 start

 11. su - postgres

 12. psql < dump.sql

Configurar acesso à rede

vi /var/lib/pgsql/9.4/data/postgresql.conf

 1. listen_addresses = '*'
 2. port = 5432

/var/lib/pgsql/9.4/data/pg_hba.conf

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
host    all         all         130.51.79.0/24        md5
host    all         all         10.210.29.0/24        md5
# IPv6 local connections:
host    all         all         ::1/128               ident

Remover PG8.4

 1. yum remove postgresql
 2. ln -s /usr/pgsql-9.4/bin/psql /usr/local/bin/psql
Alex Jolig
fonte
3
Não sei por que você rejeitou minha edição como "legibilidade de danos". Ele realmente faz os comandos mais fáceis de copiar,
nhahtdh
11
Acabei de fazer uma atualização do 9.2 para o 9.6 usando esse método, e funcionou. Obrigado !
precisa saber é o seguinte
Eu acho que é impossível usar o pgdump para migrar um banco de dados com terabytes de dados, por exemplo. Existe outra maneira de fazer isso?
DeFreitas
Para o primeiro comando, "Yum Install PG9.4", essa é a capitalização certa para tudo?
Dave
11
@deFreitas Estou um pouco atrasado, mas você pode usar pg_upgradese estiver atualizando de> = 8.4 e se usar o mesmo servidor. pg_upgradeé útil nesses casos e muito mais rápido: no Ubuntu 18, levei menos tempo fazendo um pg_upgradeque pg_dumprestaurar um banco de dados de 1 GB. O problema é que você precisa instalar e executar 2 versões do postgres na mesma máquina (ouvindo portas diferentes, é claro).
EAmez 24/09
3

service postgresql-9.4O initdb não funcionou para mim, eu tive que usar sudo /usr/pgsql-9.4/bin/postgresql94-setup initdb(encontrado aqui ).

Obrigado pelas ótimas instruções, consegui atualizar da 9.2 para a 9.4 sem problemas, mesmo tendo que reconfigurar meu pg_hba.confarquivo, isso foi trivial.

Jeff
fonte
1

Melhor do que vincular um único binário do postgresql94 psql ao bin / usr / (local /) é usar o sistema de alternativas:

cd /etc/alternatives/
ls pgsql-* -1 | xargs -L 1 alternatives --auto

O que cria links de binários, mans, confs, ... do postgresql94 para diretórios padrão do CentOS.

Michal Michaláč
fonte