Como fazer backup e restaurar um banco de dados PostGresql

Como fazer backup e restaurar um banco de dados PostGresql

Em um ambiente de produção, não importa quão grande ou pequeno seja o seu PostGresql O banco de dados pode ser, as costas regulares são um aspecto essencial do gerenciamento de banco de dados. Neste artigo, você aprenderá como fazer backup e restaurar um banco de dados PostGresql.

Assumimos que você já tem uma instalação funcional do sistema de banco de dados PostGresql. Caso contrário, leia nossos seguintes artigos para instalar PostGresql em sua distribuição Linux.

  • Como instalar o PostgreSQL e Pgadmin4 no Ubuntu 20.04
  • Como instalar o PostgreSQL e PGadmin no CentOS 8
  • Como instalar o PostgreSQL e Pgadmin no Rhel 8

Vamos começar…

Backup de um único banco de dados PostGresql

PostGresql fornece o pg_dump utilitário para ajudá -lo a fazer backup de bancos de dados. Ele gera um arquivo de banco de dados com comandos SQL em um formato que pode ser facilmente restaurado no futuro.

Para fazer backup, um PostGresql Banco de dados, comece fazendo login no seu servidor de banco de dados e depois mude para o PostGres conta de usuário e execute pg_dump como segue (substitua Tecmintdb com o nome do banco de dados que você deseja fazer backup). Por padrão, o formato de saída é um arquivo de script SQL de texto simples.

$ pg_dump Tecmintdb > Tecmintdb.SQL 

O pg_dump suporta outros formatos de saída também. Você pode especificar o formato de saída usando o -F opção, onde c significa arquivo de arquivo de formato personalizado, d significa arquivo de formato de diretório e t significa que todos pg_restore.

Por exemplo:

$ PG_DUMP -F C TECMINTDB> TECMINTDB.despejo ou $ pg_dump -f t tecmintdb> tecmintdb.alcatrão 

Para despejar a saída no formato de saída do diretório, use o -f sinalizador (que é usado para especificar o arquivo de saída) para especificar o diretório de destino em vez de um arquivo. O diretório que será criado por pg_dump não deve existir.

$ PG_DUMP -F D TECMINTDB -F TECMINTDUMPDIR 

Para fazer backup de tudo PostGresql bancos de dados, use o pg_dumpall ferramenta como mostrado.

$ pg_dumpall> all_pg_dbs.SQL 

Você pode restaurar o despejo usando PSQL como mostrado.

$ psql -f all_pg_dbs.SQL PostGres 

Restaurando um banco de dados PostGresql

Para restaurar a PostGresql banco de dados, você pode usar o PSQL ou pg_restore Serviços de utilidade pública. PSQL é usado para restaurar arquivos de texto criados por pg_dump enquanto pg_restore é usado para restaurar um banco de dados PostGresql de um arquivo criado por pg_dump Em um dos formatos não-textos não-planícios (personalizado, alcatrão ou diretório).

Aqui está um exemplo de como restaurar um dump de arquivo de texto simples:

$ psql Tecmintdb < Tecmintdb.SQL 

Como mencionado acima, um dump de formato personalizado não é um script para PSQL, Portanto, deve ser restaurado com pg_restore como mostrado.

$ pg_restore -d tecmintdb tecmintdb.despejo ou $ pg_restore -d tecmintdb tecmintdb.alcatrão ou $ pg_restore -d tecmintdb tecmintdumpdir 

Backup de bancos de dados PostGresql grandes

Se o banco de dados que você estiver backup é grande e você deseja gerar um arquivo de saída bastante menor, poderá executar um despejo compactado, onde precisa filtrar a saída de pg_dump através de uma ferramenta de compressão, como gzip ou qualquer um dos seus favoritos:

$ pg_dump Tecmintdb | gzip> Tecmintdb.gz 

Se o banco de dados for extremamente grande, você poderá despejar em paralelo por dumping número_of_jobs tabelas simultaneamente usando o -j bandeira, como mostrado.

$ pg_dump -f d -j 5 -f tecmintdumpdir 

É importante observar que a opção de despejo paralelo reduz o tempo do despejo, mas, por outro lado, também aumenta a carga no servidor de banco de dados.

Backup Remote PostGresql Bancos de dados

pg_dump é uma ferramenta de cliente PostgreSQL regular, ele suporta operações em servidores de banco de dados remotos. Para especificar o servidor de banco de dados remoto pg_dump deve entrar em contato, use as opções de linha de comando -h Para especificar o host remoto e -p Especifica a porta remota que o servidor de banco de dados está ouvindo. Além disso, use o -você sinalizador para especificar o nome da função do banco de dados para conectar -se como.

Lembre -se de substituir 10.10.20.10 e 5432 e Tecmintdb Com seu endereço IP do host remoto ou nome de host, porta de banco de dados e nome do banco de dados, respectivamente.

$ PG_DUMP -U TECMINT -H 10.10.20.10 -P 5432 TECMINTDB> TECMINTDB.SQL 

Certifique -se de que o usuário que conecta remotamente os privilégios necessários para acessar o banco de dados e o método de autenticação de banco de dados apropriado está configurado no servidor de banco de dados; caso contrário, você receberá um erro como o mostrado na captura de tela a seguir.

Erro de conexão do banco de dados PostGresql

Também é possível despejar um banco de dados diretamente de um servidor para outro, usar o pg_dump e PSQL utilitários como mostrado.

$ PG_DUMP -U TECMINT -H 10.10.20.10 Tecmintdb | PQSL -U Tecmint -H 10.10.20.30 Tecmintdb 

BACKUP AUTOME

Você pode executar backups em intervalos regulares usando Cron empregos. Cron Os trabalhos são um meio comumente usado para agendar vários tipos de tarefas para executar em um servidor.

Você pode configurar um trabalho de cron para automatizar PostGresql Backup de banco de dados da seguinte forma. Observe que você precisa executar os seguintes comandos como o SuperUser PostGresql:

$ mkdir -p/srv/backups/bancos de dados 

Em seguida, execute o seguinte comando para editar o crontab para adicionar um novo trabalho de cron.

$ CRONTAB -E 

Copie e cole a seguinte linha no final do Crontab. Você pode usar qualquer um dos formatos de despejo explicados acima.

0 0 * * * pg_dump -u postgres tecmintdb>/srv/backups/postgres/tecmintdb.SQL 

Salve o arquivo e saia.

O serviço Cron começará automaticamente a executar este novo trabalho sem reiniciar. E este trabalho de Cron será executado todos os dias à meia -noite, é uma solução mínima para a tarefa de backup.

Para obter mais informações sobre como agendar trabalhos de Cron, consulte: Como criar e gerenciar trabalhos Cron no Linux

É isso por agora! É uma boa ideia fazer de backup de dados parte da sua rotina de gerenciamento de banco de dados. Para entrar em contato conosco para obter perguntas ou comentários, use o formulário de feedback abaixo. Para mais informações, consulte as páginas de referência PG_DUMP e PG_RESTORE.