Eu o resolvi sem atualizar. Eu fiz backup novamente usando pg_dump de 10.0 em vez de 9.4 e o pg_restore funcionou desta vez.
Estou usando postgresql-9.4 (porta 5432) e postgresql-10.0 (porta 5433) em minha máquina Linux (RHEL 7.4). O Postgresql-9.4 foi instalado usando o repositório yum e o Postgresql-10.0 foi instalado usando a fonte em diferentes partições.
Eu fiz um backup do db (dtbase.backup) no Postgresql-9.4 usando o pg_dump e tentando restaurar isso no Postgresql-10.0 usando o pg_restore.
Enquanto isso, estou ficando abaixo do erro:
pg_restore: [archiver] unsupported version (1.13) in file header
Eu verifiquei fóruns diferentes, mas não consegui encontrar a solução. Qualquer ajuda seria muito apreciada.
A sua instalação 9.4 provavelmente atualizada para 9.4.17
ou superior, introduzindo uma correção que torna os despejos incompatíveis com a versão 10 do postgresql antes de 10.3
por esta resposta de estouro de pilha e o anúncio postgres com links para.
Do anúncio:
One security vulnerability is addressed in this release:
* CVE-2018-1058: Uncontrolled search path element in pg_dump and other client applications
Esta alteração quebra a compatibilidade entre versões que anteriormente tinham fluxos de trabalho pg_dump / pg_restore compatíveis, a menos que ambas as versões tenham sido atualizadas para incluir o patch CVE.
Você pode querer considerar a atualização de sua instalação da versão 10 para ser instalada a partir do yum também. Ainda não tenho experiência com a versão 10, mas o mais provável é que o postgres tenha continuado a versão dos diretórios nos quais a instalação é usada, portanto você deve ter ambos 9.4 e 10.3 instalados do yum (e obter patches de segurança muito mais facilmente do que reconstruindo a partir da fonte!).
Tags postgresql linux