Basicamente, estou tentando fazer um dump SQL que fará uma cópia exata de um banco de dados: funções definidas pelo usuário, relacionamentos, restrições, tabelas, dados, etc.
Isso é factível pg_dump
ou psql
precisa ser usado em vez disso?
Eu tenho usado pg_dump -U user -cOx database > pg.sql
, mas não está totalmente claro para mim se ele captura tudo .
Eu estava olhando para todas as pg_dump
bandeiras aqui:
https://www.postgresql.org/docs/11/app-pgdump.html
O único que posso pensar que pode fazer isso, porque realmente não diz explicitamente, é o -s --schema-only
sinalizador, que exclui dados. Estou bem com isso e executando um segundo pg_dump
para os dados, mas principalmente quero ter certeza de que estou fazendo backup das funções definidas pelo usuário, relacionamentos, etc.
Eu não sou um especialista em PostgreSQL, mas acho que a documentação deles é bastante clara e acredito que o comando que você está usando é praticamente tudo o que você precisa (talvez seja necessário especificar a senha com um sinalizador - não tenho certeza), a menos que você queira para fazer isso em duas etapas com
--schema-only
e depois com--data-only
:Este tutorial deve ajudá
pg_dump
-pg_dumpall
lo a ir também.Finalmente, a melhor coisa que você pode fazer é executar os scripts depois de gerados, em um banco de dados de teste e verificar as diferentes coisas que você espera que sejam criadas (Tabela, Visualização, Chave Primária, Chave Estrangeira, outras restrições, etc.) ) antes de fazer qualquer alteração drástica no banco de dados original de onde veio.