Nos meus logs do PostgreSQL, encontro esta mensagem:
LOG: invalid magic number 0000 in log file 0, segment 1, offset 16121856
Qual arquivo é o arquivo de log 0? Aqui está o meu diretório pg_xlog:
-bash-4.1$ ll pg_xlog/
total 49160
-rw------- 1 postgres postgres 16777216 Dec 6 06:27 000000010000000000000001
-rw------- 1 postgres postgres 16777216 Jan 21 09:10 000000020000000000000001
-rw------- 1 postgres postgres 16777216 Dec 21 05:29 000000020000000000000002
-rw------- 1 postgres postgres 56 Dec 6 06:30 00000002.history
drwx------ 2 postgres postgres 4096 Dec 6 06:30 archive_status
-bash-4.1$ ll pg_xlog/archive_status/
total 0
-rw------- 1 postgres postgres 0 Dec 6 06:30 00000002.history.ready
Isso seria
000000010000000000000001
ou000000020000000000000001
. Essa é a linha do tempo 1 ou 2, log 0, segmento 1. Qual deles está sendo acessado depende de qual linha do tempo seu sistema está (você pode usarpg_controldata
para descobrir isso, mas basicamente o sistema muda a linha do tempo quando você faz uma recuperação PITR ou um failover de replicação)A mensagem de erro basicamente diz que o arquivo está corrompido, o que é muito ruim. Outra razão pela qual isso pode acontecer é se esse arquivo for de uma versão diferente do postgresql - alguma chance de você acidentalmente misturar duas versões diferentes?