Eu esperava conseguir uma resposta clara sobre como garantir um backup completo do Postgres, como você faria com o MS SQL Server, e depois cuidar de usuários órfãos.
Pelo que li, e pode estar errado, encontrar um bom blog do PostgreSQL tem sido um desafio. Por isso, sinta-se à vontade para recomendar algumas para mim. Preciso descobrir como esse aplicativo funciona para que eu possa confiar nos meus backups e no Slony. replicação. Eu tinha um desenvolvedor restaurar um backup que eu tomei de pgAdminIII via custom
, directory
e tar
formato enquanto seleciona OID
s mas ele disse que dois deles não foram carregados, tar
fez mas foi apenas o diretório, não os dados. Estou realmente confuso agora.
- Estou usando o PGAdminIII, ele tem uma opção
pg_dump
epg_dumpall
. Quero fazer backup de tudo o que preciso para testar a restauração desse banco de dados em algum lugar e verificar se sim, todos os dados de que precisamos e nosso backup são bons. Eventualmente, eu quero escrever um script de restauração automática, mas um dia de cada vez.
pg_dumpall
aparentemente tem uma -globals
opção que deve fazer backup de tudo, mas a ajuda para pg_dumpall
mostra -g, --globals-only dump only global objects, no databases
uma --globals
opção , não uma .
Eu pensei pg_dumpall
que pelo menos faria backup de chaves estrangeiras, mas mesmo isso parece ser uma 'opção'. De acordo com a documentação , mesmo que pg_dumpall
eu precise usar uma -o
opção para fazer backup de chaves estrangeiras, não consigo imaginar quando não gostaria de fazer backup de chaves estrangeiras e isso faria mais sentido como opções padrão.
- Como eu cuidaria de usuários órfãos e validaria que tenho tudo? Eu realmente gostaria de restaurar meu arquivo de backup em outro servidor e verificar se tudo funciona. Se alguém tiver alguma sugestão sobre como fazer um backup real no PostgreSQL e restaurar, ficaria muito grato.
Eu tinha um servidor PostgreSQL, mas ainda não consigo entender por que o aplicativo não faria backups OID
por padrão! Parece que 99,9% das vezes você gostaria disso.
ATUALIZAÇÃO 1:
A documentação do Postgres menciona que a globals
opção que eu estava procurando parece ser uma opção padrão nesta versão, mas ainda precisa da -o
opção. Se alguém puder verificar ou me fornecer um exemplo de comando para restaurar um único banco de dados em outro lugar com tudo o que precisa, eu agradeceria.
Editar: sendo solicitado pelo site para mostrar a exclusividade desta pergunta, editando minha pergunta. Essa pergunta levanta a questão e obtém a clareza dos OIDs nos backups, a diferença entre globais e não globais, além de testar restaura recomendações para garantir que o backup seja bom, e não apenas o backup. Devido às respostas, consegui fazer backup, descobrir globals / oids e iniciar um processo de restauração de teste todas as noites no Postgres usando tarefas cron. Obrigado pela ajuda!
fonte
Respostas:
Você pode despejar todo o cluster do PostgreSQL com pg_dumpall. São todos os bancos de dados e todos os globais para um único cluster. Na linha de comando do servidor, eu faria algo assim. (A mina está escutando na porta 5433, não na porta padrão.) Você pode ou não precisar da opção --clean.
Isso inclui os globais - informações sobre usuários e grupos, espaços de tabela e assim por diante.
Se eu fosse fazer backup de um único banco de dados e movê-lo para um servidor temporário, despejaria o banco de dados com pg_dump e despejaria os globais com
pg_dumpall --globals-only
oupg_dumpall --roles-only
(se você precisar apenas de papéis)como isso.
Saídas são apenas arquivos de texto.
Depois de mover esses arquivos para um servidor diferente, carregue primeiro os globais, depois o dump do banco de dados.
Não, essa referência diz "Use esta opção se o seu aplicativo referenciar as colunas OID de alguma forma (por exemplo, em uma restrição de chave estrangeira). Caso contrário, essa opção não deverá ser usada." (Ênfase adicionada.) Acho improvável que seu aplicativo faça referência às colunas do OID. Você não precisa usar esta opção para "fazer backup de chaves estrangeiras". (Leia o arquivo de despejo no seu editor ou visualizador de arquivos.)
fonte
psql -U postgres -h localhost -p 5433 sandbox < sandbox.sql
pg_dumpall
, versão 9.5, não funciona corretamente comNULL
valores ao usarCOPY
. Eu recebo muitos erros como este:psql:/tmp/dumpall.sql:4133559: invalid command \N psql:/tmp/dumpall.sql:4133560: invalid command \.
Ao importar de volta para o Postgres 10 usandopsql -f /tmp/dumpall.sql