O PostgreSQL oferece diferentes formatos de backup para atender às necessidades específicas de cada usuário. Abaixo estão descritos os principais formatos, suas características e os comandos associados:
Custom
- Extensão: .custom ou .dump
- Comando:
pg_dump -F c
- Características:
- Formato binário próprio do PostgreSQL.
- Permite a compressão do backup, reduzindo o tamanho do arquivo.
- Suporta backups incrementais.
- Possibilita a restauração seletiva (como apenas algumas tabelas ou esquemas).
- Oferece flexibilidade na restauração com o
pg_restore
, incluindo restauração paralela para maior velocidade.
pg_dump -F c -f backup.custom my_database
Tar
- Extensão: .tar
- Comando:
pg_dump -F t
- Características:
- Formato tar padrão.
- Permite compressão.
- Pode ser facilmente examinado ou extraído com ferramentas de arquivamento, como
tar
. - Suporta restaurações seletivas e paralelas com
pg_restore
.
pg_dump -F t -f backup.tar my_database
Plain
- Extensão: .sql
- Comando:
pg_dump -F p
- Características:
- Arquivo de texto SQL contendo comandos SQL.
- Não suporta compressão nativa (compressão deve ser aplicada posteriormente, por exemplo, com gzip).
- Simples e direto, fácil de ler e editar com qualquer editor de texto.
- Restaurável diretamente com o comando
psql
, sem necessidade depg_restore
.
pg_dump -F p -f backup.sql my_database
Directory
- Extensão: Diretório
- Comando:
pg_dump -F d
- Características:
- Cria um diretório contendo um conjunto de arquivos representando o backup.
- Permite backups incrementais e compressão.
- Suporta restaurações paralelas, aumentando a velocidade.
- É o formato mais flexível e robusto para grandes bancos de dados, permitindo manipulação granular dos dados.
- Necessita do uso do
pg_restore
para restauração.
pg_dump -F d -f backup_dir my_database
Configuração Session
1. Pre-data
Refere-se aos comandos SQL que definem a estrutura do banco de dados antes de carregar os dados reais.
Obs: É a fase inicial que configura a estrutura do banco de dados, garantindo que todas as tabelas, esquemas e outros objetos estejam prontos para receber os dados reais.
pg_dump --section=pre-data -F p -f pre_data.sql my_database
2. Data
Contém os comandos que inserem os dados reais nas tabelas do banco de dados.
Obs: Esta fase carrega os dados efetivos no banco de dados após a estrutura ter sido definida pela fase pre-data
.
pg_dump --section=data -F p -f data_only.sql my_database
3. Post-data
Inclui comandos SQL que devem ser executados após o carregamento dos dados, geralmente para restaurar objetos que dependem da existência dos dados.
Obs: Esta fase completa a restauração do banco de dados, adicionando todos os objetos que dependem da presença dos dados. Isso inclui a criação de índices e constraints que garantem a integridade dos dados e melhoram a performance das consultas.
pg_dump --section=post-data -F p -f post_data.sql my_database
Configurações Específicas de Backup
1. Only Data
- Comando:
pg_dump --data-only
- Descrição: Inclui apenas os dados das tabelas no backup, sem incluir definições de esquema (como criação de tabelas, índices ou outros objetos).
- Conteúdo:
- Comandos
INSERT
ouCOPY
para inserir dados nas tabelas.
- Comandos
- Uso Comum:
- Ú til quando a estrutura do banco de dados (esquemas) já está definida e apenas os dados precisam ser preservados.
- Usado para atualizar dados em um banco de dados de teste que já possui a estrutura correta.
pg_dump --data-only -F p -f only_data.sql my_database
2. Blobs
- Comando:
pg_dump --blobs
- Descrição: Inclui os Large Objects (BLOBs) armazenados no banco de dados no backup.
- Conteúdo:
- Dados de Large Objects, que são objetos binários armazenados no banco de dados.
- Estes podem incluir arquivos, imagens, vídeos ou outros dados binários.
- Uso Comum:
- Necessário para bancos de dados que utilizam Large Objects e precisam garantir a inclusão destes no backup e na restauração.
pg_dump --blobs -F c -f backup_with_blobs.custom my_database
3. Only Schemas
- Comando:
pg_dump --schema-only
- Descrição: Inclui apenas a definição dos esquemas (estrutura) do banco de dados no backup, sem incluir os dados.
- Conteúdo:
- Comandos
CREATE TABLE
,CREATE INDEX
,CREATE VIEW
,CREATE FUNCTION
, e outras definições de objetos do banco.
- Comandos
- Uso Comum:
- Criar uma estrutura de banco de dados vazia como modelo para outros bancos.
- Versionar a estrutura do banco de dados, mantendo-a separada dos dados
pg_dump --schema-only -F p -f only_schema.sql my_database