Em um ambiente de produção, não importa quão grande ou pequeno seja seu PostgreSQL banco de dados pode ser, o retorno regular é um aspecto essencial do gerenciamento de banco de dados. Neste artigo, você aprenderá como fazer backup e restaurar um banco de dados PostgreSQL.
Presumimos que você já tenha uma instalação funcional do sistema de banco de dados PostgreSQL. Caso contrário, leia nossos artigos a seguir para instalar o PostgreSQL em sua distribuição Linux.
- Como instalar o PostgreSQL e o pgAdmin4 no Ubuntu 20.04
- Como instalar o PostgreSQL e o pgAdmin no CentOS 8
- Como instalar o PostgreSQL e o pgAdmin no RHEL 8
Vamos começar…
Fazer 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 servidor de banco de dados e, em seguida, mude para o Postgres conta de usuário e execute pg_dump da seguinte forma (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 também suporta outros formatos de saída. Você pode especificar o formato de saída usando o
-F
opção, onde c
significa arquivo de formato personalizado, d
significa arquivo de formato de diretório e t
significa arquivo de formato tar:todos os formatos são adequados para entrada em pg_restore . Por exemplo:
$ pg_dump -F c tecmintdb > tecmintdb.dump OR $ pg_dump -F t tecmintdb > tecmintdb.tar
Para despejar a saída no formato de saída do diretório, use o
-f
flag (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 todos os PostgreSQL bancos de dados, use o pg_dumpall ferramenta como mostrado.
$ pg_dumpall > all_pg_dbs.sql
Você pode restaurar o dump usando psql como mostrado.
$ pgsql -f all_pg_dbs.sql postgres
Restaurando um banco de dados PostgreSQL
Para restaurar um 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 a partir de um arquivo criado por pg_dump em um dos formatos que não sejam de texto simples (custom, tar ou directory).
Aqui está um exemplo de como restaurar um dump de arquivo de texto simples:
$ psql tecmintdb < tecmintdb.sql
Conforme mencionado acima, um dump de formato personalizado não é um script para pgsql , então ele deve ser restaurado com pg_restore como mostrado.
$ pg_restore -d tecmintdb tecmintdb.dump OR $ pg_restore -d tecmintdb tecmintdb.tar OR $ pg_restore -d tecmintdb tecmintdumpdir
Fazer backup de grandes bancos de dados PostgreSQL
Se o banco de dados do qual você está fazendo backup for grande e você quiser gerar um arquivo de saída bem menor, poderá executar um despejo compactado no qual será necessário filtrar a saída de pg_dump por meio de uma ferramenta de compactaçã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á fazer o dump em paralelo despejando number_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 dump paralelo reduz o tempo do dump, mas por outro lado, também aumenta a carga no servidor de banco de dados.
Fazer backup de bancos de dados PostgreSQL remotos
pg_dump é uma ferramenta cliente PostgreSQL regular, que oferece suporte a 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 na qual o servidor de banco de dados está atendendo. Além disso, use o -U
sinalizador para especificar o nome da função de banco de dados para se conectar. Lembre-se de substituir 10.10.20.10 e 5432 e tecmintdb com o endereço IP ou nome do host remoto, porta do 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 se conecta remotamente tenha os privilégios necessários para acessar o banco de dados e que o método de autenticação de banco de dados apropriado esteja configurado no servidor de banco de dados, caso contrário, você receberá um erro como o mostrado na captura de tela a seguir.
Também é possível despejar um banco de dados diretamente de um servidor para outro, use 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 automático do banco de dados PostgreSQL usando uma tarefa Cron
Você pode realizar backups em intervalos regulares usando cron empregos. Cron jobs são um meio comumente usado para agendar vários tipos de tarefas a serem executadas em um servidor.
Você pode configurar um cron job para automatizar o PostgreSQL backup do banco de dados da seguinte maneira. Observe que você precisa executar os seguintes comandos como superusuário do PostgreSQL:
$ mkdir -p /srv/backups/databases
Em seguida, execute o seguinte comando para editar o crontab para adicionar um novo trabalho 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 iniciará automaticamente a execução deste novo trabalho sem reinicialização. E esse cron job 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 cron, consulte:Como criar e gerenciar trabalhos cron no Linux
Por enquanto é isso! É uma boa ideia tornar o backup de dados parte de sua rotina de gerenciamento de banco de dados. Para entrar em contato conosco para quaisquer perguntas ou comentários, use o formulário de feedback abaixo. Para obter mais informações, consulte as páginas de referência pg_dump e pg_restore.