Como migrar meus dados do postgres de 8.4 para 9.1?

27

Atualizei minha máquina de desenvolvimento ubuntu de 11.04 para 11.10. No processo, meu postgres também foi atualizado de 8.4 para 9.1.

Mas parece que perdi todos os meus dados. Se eu olhar, posso ver que meus dados para 8.4 estão na pasta /var/lib/postgres/8.4/maine meu novo banco de dados está /var/lib/postgres/9.1/main.

Qual é a melhor maneira de migrar meus dados para a nova versão? Posso apenas copiar os arquivos?

nathanvda
fonte

Respostas:

27
su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

No começo, isso não funcionou para mim por dois motivos. Primeiramente, o postgresql-8.4 não tinha sido instalado em algum momento, então tive que reinstalá-lo:

sudo apt-get install postgresql-8.4

Então eu tive que entrar no 8.4 postgresql.confe mudar max_connectionspara 10. Então funcionou. Você deve encontrar o arquivo conf em/etc/postgresql/8.4/main/postgresql.conf

Marconius
fonte
Em um computador, as três principais linhas foram suficientes. Por outro, tive que reinstalar o 8.4 para fazê-lo funcionar, como você disse. Obrigado pela ajuda.
Nathanvda 17/10/11
Deve-se notar que o script "pg_upgradecluster" não trata do caso em que o usuário do banco de dados deve ser fornecido. (Se isso acontecer, eu com certeza não pode descobrir como fornecê-lo.)
Pointy
Se você Error: specified cluster is not runningtentar novamente depois de alterar max_connections, use pg_ctlcluster 8.4 main start.
Skippy le Grand Gourou
Reduzir max_connectionsnão funcionou para mim. Como uma solução alternativa fornecida pela mensagem de erro, reduzi shared_bufferspara 20 MB (de 200 MB), o que funcionou para mim.
Serrano
4

Após a atualização para a 11.10, o PostgreSQL 9.1 foi instalado, mas a versão em execução era 8.4.

Eu tentei:

su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Ele relatou o erro:

Stopping old cluster...
pg_ctl: servidor não desligou
Error: Could not stop old cluster

Então, em outra janela:

$ sudo service postgresql-8.4 stop
 * Stopping PostgreSQL 8.4 database server                               [ OK ] 
jgr@cagliari:~$ sudo service postgresql-8.4 start
 * Starting PostgreSQL 8.4 database server                               [ OK ] 

E então novamente:

pg_upgradecluster 8.4 main

Foram relatados erros relacionados ao pgRouting. Demorou um pouco (a noite toda!), Mas depois o banco de dados foi atualizado para 9.1. O PostGIS também foi atualizado para a 1.5.3.

estibordo
fonte
Para sua informação, descobri que, ao fazer um "du -hs" no diretório /var/lib/postgresql/9.1 e compará-lo com a saída do mesmo comando em /var/lib/postgresql/8.4/, achei que poderia avalie quanto foi copiado com base no tamanho da saída desse comando.
21812 Joe J em
Eu sei que essa não é a questão que está sendo discutida. Mas encontrei o mesmo problema que você descreveu. O motivo pelo qual o pg_upgradecluster não conseguiu parar o cluster antigo foi porque uma instância do Tomcat estava usando as conexões e o Postgres não pôde fechá-las. Espero que isso ajude alguém.
precisa saber é o seguinte