Procedimento para atualização do PostgreSQL em um servidor em produção. Este procedimento é necessário quando a versão do PostgreSQL for diferente na primeira ou na segunda casa, exemplo:
de 7.2.x para 8.1.x de 8.1.x para 8.2.x de 8.2.x para 8.3.x
Neste modelo de documento iremos supor que a versão antiga é 8.2.1 e a nova é 8.3.1.
Instalando a nova versão
Baixe a versão desejada no site do PostgreSQL (http://www.postgresql.org)
postgresql-8.3.1.tar.bz2
Copie o arquivo para o diretório /usr/local/src e descompacte-o
cp postgresql-8.3.1.tar.bz2 /usr/local/src tar jxf postgresql-8.3.1.tar.bz2
Acesso o diretório do posgresql
cd postgres-8.3.1
Compile e instale o programa
./configure --prefix=/usr/local/postgresql-8.3.1 make make install
Exportando os dados
Para evitar que os dados sofram alterações, vamos bloquear acesso à porta do postgresql através do iptables, execute:
iptables -I INPUT -p tcp --dport 5432 -j DROP
Para facilitar nosso trabalho, vamos alterar as configurações do arquivo pg_hba.conf, para que ele não solicite senha para acesso ao banco de dados a partir do próprio computador.
Entre no diretório /usr/local/postgresql-8.2.1/data e adicione a seguinte linha no arquivo pg_hba.conf
local all postgres trust
Salve o arquivo e reinicie o processo do PostgreSQL
/etc/rc.d/rc.postgresql stop | start ou /etc/rc.d/rc.pgsql stop | start
Exporte agora os dados contidos no banco em produção:
cd /root /usr/local/postgresql-8.3.1/bin/pq_dumpall -U postgres > pgdumpall.sql
Pare o serviço do PostgreSQL
/etc/rc.d/rc.postgresql stop ou /etc/rc.d/rc.pgsql stop
Ativando a nova versão e importando os dados
Agora vamos ativar o novo programa e importar os dados, execute os seguintes comandos:
cd /usr/local/postgresql-8.3.1 mkdir data (diretório onde os dados serão armazenados) chwon postgres:postgres data cd .. rm pgsql (remove o link simbólico que apontava para a versão antiga do PostgreSQL) ln -s postgresql-8.3.1 pgsql (cria um link simbólico apontando para a versão nova do PostgreSQL) /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data (inicializa o banco de dados padrão) cp postgresql-8.2.1/data/pg_hba.conf pgsql/data/ cp postgresql-8.2.1/data/postgresql.conf pgsql/data/
Inicie o serviço do PostgreSQL
/etc/rc.d/rc.postgresql start ou /etc/rc.d/rc.pgsql start
Importe os dados
cd /root /usr/local/pgsql/bin/psql -U postgres -d postgres -f pgdumpall.sql
Remova a linha que incluímos anteriormente no pg_hba.conf
Restarte o serviço do PostgreSQL
/etc/rc.d/rc.postgresql stop | start ou /etc/rc.d/rc.pgsql stop | start
Pronto, sua versão mais nova do PostgreSQL está pronta.