Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá queria saber onde posso encontrar algum material que ensine a migrar base de dados da 8.3 para 8.4 ou até mesmo a 9 beta.
preciso migrar uma base de 8.3, instalar a versão 8.4 e colocar essa base nela.
tenho receios de sair fazendo a miguelão porque certamente tem surpresas no caminho, erros etc...
por isso queria algumas dicas sobre o assunto.
valeu
a partir da versão 8.4, basta chamar o pg_upgrade. Mas da 8.3 para trás, é necessário fazer o tradicional pg_dump + pg_restore.
Passo-a-passo (de cabeça e se você tiver tempo suficiente para deixar seu banco parado):
1. baixe a nova versão (eu prefiro o pacote fonte do quê binários rpm)
2. faça um backup dos bancos atuais: um pg_dump para cada banco Ex.: pg_dump -Fc -d -f meu_bd.dat meu_bd
3. pare o banco. Verifique se realmente parou com um ps ax | grep post
4. instale o pacote baixado: tar -xf ...; cd post...; ./configure; ./make; ./make install
5. crie uma nova pasta onde ficarão os dados. Ex.: /srv/database
6. crie um usuário para o postgres caso ainda não haja. Ex. adduser postgres
7. dê acesso apenas para o postgres nesta pasta: chmod 700 /srv/database; chown postgres /srv/database
8. entre com o usuário postgres e inicie a pasta criada: use o mesmo ENCODING da base antiga ! Ex.: su postgres; /usr/local/pgsql/bin/initdb -E LATIN1 -D /srv/database; exit
9. inicie o novo banco. Ex.: /usr/local/pgsql/bin/postmaster -D /srv/database
10. restaure a base antiga no novo banco: psql template1 postgres -> CREATE DATABASE meu_bd; \q; pg_restore -d meu_bd meu_bd.dat
11. voilá - se os programas estiverem funcionando, você pode excluir a pasta antiga
Dicas:
1. faça um teste usando OUTRA máquina
2. faça uma cópia do pg_hba.conf (permissões de acesso) e do postgresql.conf (configurações do banco) e após instalar a nova versão verifique se estão parecidos
3. ao fazer o backup, se você tiver binário largos no banco (BLOBs: fotos, documentos, músicas, etc) você precisa ativar a opção de "fazer backup dos binários largos"
4. não use COPY, use INSERT (se não pode haver problemas com textos com aspas)
5. cuide para criar a nova base com o mesmo ENCODING (LATIN1, UTF8, etc)
6. verifique se você vai chamar os binários corretos (/usr/local/pgsql/initdb ou /sbin/initdb ?): versões diferentes podem instalar em locais diferentes
7. se você quer iniciar o BD automaticamente sempre que iniciar o computador, crie um script em /etc/init.d. Você pode copiar e colar um modelo que está em contrib/start-scripts/linux. Ex.: cp contrib/start-scripts/linux /etc/init.d/postgresql. Altere a variável que aponta para a pasta inicializada com "initdb". Habilite a inicialização automática com "chkconfig postgresql on"