Gerador de Comando pg_dump
Monta um comando pg_dump com host, usuário, banco, formato (custom, plain, tar, dir) e arquivo.
pg_dump em profundidade: formatos, dump paralelo e estratégia de restore
O pg_dump é o utilitário de backup lógico do PostgreSQL. Diferente do base backup binário, ele captura uma representação SQL consistente de uma base — schema, dados, índices, constraints, sequences, donos, privilégios — que qualquer servidor PostgreSQL compatível consegue replicar. A forma geral é pg_dump [opções] db_name > out.sql. Internamente ele usa uma transação REPEATABLE READ longa, então leituras e escritas concorrentes não ficam bloqueadas; o snapshot é consistente no instante em que o dump começa.
Formatos de saída: escolha com cuidado
A flag -F escolhe um de quatro formatos e a decisão tem consequências reais:
-F p plain SQL texto, grande, restore via psql.
-F c custom binário comprimido, permite restore
paralelo e seletivo. RECOMENDADO.
-F d directory dump paralelizável (-j) E restore paralelo;
um arquivo por relação. Melhor para DB grande.
-F t tar tar do formato directory; uso menos comum.
Use -F c para praticamente todo backup. Comprime, permite restore seletivo via pg_restore -t tabela e o pg_restore paraleliza o load de dados. Use -F d -j 4 quando precisa de dump paralelo em base grande.
Flags de conexão e seleção
-h host,-p porta,-U user,-W(pede senha),-d dbname.-f arquivo— saída em arquivo (omita para gravar em stdout e usar em pipe).--schema-only/-s— só DDL.--data-only/-a— só dados (INSERT/COPY).--clean+--if-exists— emiteDROP IF EXISTSantes de cadaCREATE.--no-owner— remove declarações de ownership (útil para restore com role diferente).--no-privileges— remove GRANTs.-t schema.tabela— dumpa só tabelas específicas (repetível, aceita padrões).-n schema— só um schema;--exclude-schema,--exclude-tablepara o inverso.-j JOBS— workers paralelos (só com-F d).--compress=9— nível de compressão (formatos custom/directory).--encoding=UTF8— encoding explícito do cliente.
Restore: pg_restore vs psql
O comando de restore depende do formato do dump:
# Formato custom ou directory -> pg_restore
pg_restore -d mydb -j 4 backup.dump
pg_restore -d mydb -t users backup.dump # só uma tabela
pg_restore -l backup.dump > toc.list # listar objetos
pg_restore -L toc.list -d mydb backup.dump # restore seletivo
# SQL puro -> psql
psql -d mydb -f backup.sql
psql -d mydb < backup.sql
# Dump do cluster inteiro (roles, tablespaces, todos os DBs)
pg_dumpall > cluster.sql
psql -f cluster.sql postgres
O pg_dumpall é o superset: roles, tablespaces, configuração de replicação e cada banco. Use em migrações no nível do cluster; para backup rotineiro de uma base de aplicação prefira pg_dump -F c.
Exemplos comentados
# Backup diário no formato custom comprimido
pg_dump -h db.prod -U backup -F c -f /backups/mydb-$(date +%F).dump mydb
# Dump paralelo em diretório (4 workers) de base de 100 GB
pg_dump -h db.prod -U backup -F d -j 4 -f /backups/mydb.d mydb
# Só schema, pronto para subir um ambiente de staging
pg_dump --schema-only --no-owner --no-privileges mydb > schema.sql
# Stream para S3 sem arquivo local
pg_dump -F c mydb | aws s3 cp - s3://backups/mydb.dump
# Restore paralelo com 4 workers, derrubando objetos antes
pg_restore --clean --if-exists -d mydb -j 4 backup.dump
Lógico vs físico, compatibilidade de versão, ecossistema
Backup lógico (pg_dump) é portável entre versões e arquiteturas, ideal para migrações e restores seletivos. Backup físico (pg_basebackup, pgBackRest, WAL-G) copia os arquivos de dados e o WAL — muito mais rápido em bases gigantes e a única opção prática na casa dos TB, mas o restore precisa rodar na mesma versão major e arquitetura.
Regra de versão: o pg_dump pode mirar um servidor mais antigo (ele sabe como consultar de forma forward-compatible), mas o cliente deve ser maior ou igual ao servidor na dúvida — sempre rode um pg_dump pelo menos tão novo quanto o servidor. A ordem do restore também importa: dumpar com pg_dump 16 e restaurar com pg_restore 14 pode falhar. Ferramentas profissionais: pgBackRest (incremental, paralelo, restore completo em minutos), Barman, WAL-G (archiving contínuo e PITR para S3/GCS). Serviços gerenciados: AWS RDS PostgreSQL com snapshots automáticos, GCP Cloud SQL com export, Azure Database for PostgreSQL com backups.
FAQ
O dump é hot backup? Sim. O pg_dump abre um snapshot REPEATABLE READ; transações concorrentes não são afetadas e o dump enxerga uma visão consistente do instante em que o snapshot foi tirado.
Como dumpar só um schema? pg_dump -n nome_do_schema -F c mydb > schema.dump. Use -N para excluir schemas (em scripts é comum -N pg_temp_*).
Dá para paralelizar o dump? Sim — mas só com o formato directory: pg_dump -F d -j 4 -f mydb.d mydb. Os formatos plain e custom são escritos por um único worker. O pg_restore consegue paralelizar o load de dumps custom e directory via -j N.
O formato custom já comprime? Sim — por padrão zlib nível 6. Suba para --compress=9 em redes lentas. Não precisa empilhar gzip em cima.
O pg_restore segue depois de um erro? Por padrão sim e loga a falha; passe --exit-on-error para parar no primeiro erro. Combine com --single-transaction para envolver todo o restore em uma única tx (mais lento, semântica tudo-ou-nada).
Ferramentas Relacionadas
Gerador de Comando mysqldump
Monta um comando mysqldump com flags comuns: host, usuário, banco, opções (single-transaction, routines, triggers).
Gerador de comando git rebase
Monte comandos git rebase com branch base, --interactive, --onto, --autosquash e --no-verify, prontos para colar.
Gerador de comando tmux
Monte comandos tmux comuns: nova sessão, anexar, dividir janela, renomear, kill-session, new-window com nome.