Como fazer e restaurar um backup de um banco de dados PostgreSQL ?


Como realizar backup de um banco PostgreSQL

O PostgreSQL possui uma utilidade chamada “pg_dump” que pode ser usada para carregar em um arquivo as informações de um banco de dados com a proposta de um backup.

O pg_dump é executato através da linha de comando Linux. A sintaxe do comando é a seguinte:

$ pg_dump nome_do_banco > arquivo_de_backup

Exemplo:

$ sudo su - postgres
$ pg_dump postgres > postgres_db.bak

Esse comando também pode ser executado remoto, basta informar o host passando a opção “-h” e caso a porta não seja a padrão, utilizar a opção “-p” e informar o número da porta:

$ pg_dump -h <host_remoto> -p <porta> <nome_do_banco> > <nome_do_arquivo_de_backup>

Caso necessário, pode-se informar um usuário diferente, com a opção “-U”:

$ pg_dump -U <nome_usuario> -h <host_remoto> -p <porta> <nome_do_banco> > <nome_do_arquivo_de_backup>

Como restaurar um backup de um banco PostgreSQL

Para restaurar um backup gerado pelo “pg_dump”, basta redirecionar o arquivo de backup para a entrada do comando “psql”:

$ psql novo_banco_de_dados < arquivo_de_backup
ou
$ psql -U <nome_usuario> -d <nome_banco_de_dados> -1 -f <arquivo_de_backup>.sql
ou
$ pg_restore -U <nome_usuario> -d <nome_banco_de_dados> -1 <filename>.dump

Nota: Esse redirecionamento não cria o banco em questão. A criação do banco deve ser feito num outro momento, anterior à restauração dos dados.

Exemplo, podemos criar um novo banco de dados chamado “bancodedados_restaurado” e então redirecionar o backup chamado “bancodedados.bkp” executando os comandos a seguir:

$ createdb -T template0 bancodedados_restaurado
$ psql bancodedados_restaurado < bancodedados.bkp

O banco de dados vazio deve ser criado usando como base o banco “template0”.

Um outro passo importante, que deve ser executado antes de realizar a restauração do banco, é criar o usuário dono do banco de dados.

Por exemplo, no caso do “usuario1” for o dono do banco de dados, onde possui privilégios:

$ createuser usuario1
$ psql bancodedados_restaurado < bancodedados.bkp

Leave a Reply

Your email address will not be published. Required fields are marked *