Blog Agility

Backup e Restore de bancos de dados PostgreSQL

Backup e Restore de bancos de dados PostgreSQL

Este artigo fornece informações sobre como realizar o backup e posteriormente o restore de bancos de dados PostgreSQL.


Para realização do backup, basta executar o comando abaixo com o usuário postgres:

 

# su - postgres
$ pg_dump agilitydb > agilitydb_18_09_2015.dump

Para realização do restore, basta executar o próprio comando psql, no formato a seguir:

$ psql agilitydb < agilitydb_18_09_2015.dump

Recomendável por razões de garantia de funcionamento do processo, parar o serviço responsável pela aplicação no servidor a qual será realizado o restore (que pode não estar no mesmo servidor):

# /etc/init.d/apache2 stop

ou

# /etc/ini.d/httpd stop

ou

# /etc/init.d/jboss stop

ou

# su - jboss
$ /opt/jboss/bin/shutdown.sh -S

OBS: o diretório do jboss pode mudar de acordo com o ambiente, assim como a aplicação que faz o acesso ao banco pode ser PHP (Apache/Nginx) ou Java (Jboss, Tomcat, etc)Realize os filtros dos processos “idle” correspondentes a essa base que será restaurada, para evitar tentativas de conexão durante o processo de restauração da base:

 

$ ps u -C postgres | grep -i agilitydb

postgres  5573  0.0  0.2 107188  2112 ?        Ss   Mar13   0:00 postgres: agility agilitydb 10.0.0.81(39270) idle

OBS: cuidado no filtro, garanta que os processos listados pertencem a base de dados que vocẽ deseja realizar o restore.

# kill 5573

E renomear o nome da base atual afim de evitar DROPAR a base e ter perda de dados:

$ psql
postgres# > ALTER DATABASE agilitydb RENAME TO agilitydb_backup;

E em seguida criar a base já informando o proprietário da base, o usuário da aplicação que fará esse acesso:

 

postgres=# postgres# > CREATE DATABASE agilitydb OWNER agility

Após esse processo restaurar a base:

$ psql agilitydb < agilitydb_18_09_2015.dump

E iniciar os serviços responsáveis pela aplicação:

# /etc/init.d/apache2 start

ou

# /etc/ini.d/httpd start

ou

# /etc/init.d/jboss start

ou

# su - jboss

$ /opt/jboss/bin/standalone.sh –S
Aplicando as configurações demonstradas neste artigo podemos efetuar de maneira segura cópias de nossos bancos de dados para quando necessário possamos restauras as informações contidas nos mesmos.