Recuperar dados do banco de dados Postgresql após falha na atualização do sistema

0

Primeiro, quero deixar claro que essa pergunta já foi feita no askubuntu, mas continuei a excluí-la porque quase não recebi comentários. Se isso violar o protocolo SU, entre em contato.


Bem-vindo à minha bagunça ...

A situação é:

  • O Ubuntu Software estava fazendo algumas atualizações "importantes" (e provavelmente muitas delas, já que eram mais de nove meses desde a minha última atualização).

  • A atualização pareceu parar de funcionar (barra de progresso da atualização congelada), sem explicação do que estava acontecendo. Há uma notificação de algum erro que não me deu muita informação ou algo a fazer sobre isso, exceto clicar no botão "Denunciar".

  • Após cerca de 8 horas de uso do PC e esperando que o problema se resolvesse, observo que a barra de processo ainda está congelada. Cruzo os dedos e desligo o computador.

  • Agora, o laptop não inicializa no Ubuntu (ainda possui o Windows, não tentei inicializá-lo, mas acho que ainda funciona).

  • O grande e importante banco de dados do Postgresql é armazenado no laptop, ligado /var/lib/postgresql/9.5/main(sim, eu estava realmente cansado no dia anterior quando desliguei o laptop, não previ isso ... coisa realmente estúpida de se fazer; não faça isso em casa, crianças )

  • Fiz um pendrive inicializável com o Ubuntu 16.04 ao vivo, com a intenção de acessar meus arquivos e fazer um backup, antes de reinstalar o Ubuntu.

  • Não é possível fazer backup do banco de dados mencionado (ou seja, pode copiar / colar a pasta no Nautilus ou através do terminal + sudo), ele diz que o conteúdo /var/lib/postgresql/9.5/mainé ilegível (não tenho permissões). No meu diretório pessoal, há menos problemas e consigo fazer um backup (com algumas exceções sem importância).

O que é que eu posso fazer sobre isto? É possível copiar os arquivos do banco de dados para fazer um backup? Além disso, como posso acessar esse banco de dados posteriormente?

Obrigado pelo seu tempo...


Atualização : fiz backup dos meus arquivos com êxito sudo /bin/bashe cp, como sugerido pela davidgo (os salvei em um disco rígido externo).

Então instalei o ubuntu do zero no meu PC, instalei o posgresql-9.5 (adicionando o repositório PGDG do Postgres mencionado por davidgo) e copiei os arquivos no mesmo local original (usando cp -rnP /pathto/backupfolder /var/lib/postgresql/9.5/main) e alterei a propriedade para "postgres".

Agora, meu problema é que não consigo iniciar o cliente postgresql ( psql). Esta é a saída da linha de comandos:

user@machine:~$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Pesquisando a documentação, descobri que poderia usar pg_ctlpara iniciar o servidor, mas que no Ubuntu é esperado que eu use pg_ctlcluster. Ok, então eu tento isso:

user@machine:~$ su - postgres
Password: 
postgres@machine:~$ pg_ctlcluster 9.5 main status
pg_ctl: server is running (PID: 1034)
/usr/lib/postgresql/9.5/bin/postgres "-D" "/var/lib/postgresql/9.5/main" "-c" "config_file=/etc/postgresql/9.5/main/postgresql.conf"

Eu sou um usuário bastante desajeitado do PostgreSQL, posso dizer, então isso é provavelmente algo realmente simples que não consigo ver agora. Mais uma vez, qualquer ajuda seria mais do que bem-vinda!

Juan
fonte
2
Presumo que você não tenha backups desse banco de dados importante?
Ramhound 5/05
Não, eu não tenho backup. Eu poderia reconstruí-lo com tempo suficiente (algumas semanas, eu acho), mas é isso que estou tentando evitar.
Juan
Se você não possui backups do banco de dados nem imagens do sistema em si, está no meio do caminho sem remo. Se você já instalou o Ubuntu em sua instalação existente, seus dados não estarão lá. Se diz que você não tem permissões, deve se dar permissões.
Ramhound 5/05
Neste ponto, ainda tenho minha instalação original do Ubuntu (quebrada, mas todos os arquivos estão lá). Com relação às permissões, não sei como fazer isso, pois não consigo inicializar a partir da instalação original e do cliente postgresql ou da linha de comando (o modo de recuperação Ubuntu também não funciona).
Juan
11
Este é o momento em que você agradece a Deus por ter um backup recente.
SDsolar

Respostas:

2

Para que isso funcione, as etapas seriam:

  1. Instale uma nova cópia do UBUNTU - em uma nova unidade, para não sobrescrever os arquivos do postgres. Instale o Postgres 9.5 na nova instância (você pode ou não precisar adicionar o repositório do PGDG do Postgres para fazer isso)

  2. Copie os arquivos antigos do Postgres para o novo sistema no mesmo local (normalmente /var/lib/pgsql/9.5). Como você está tendo dificuldades aqui, tente fazê-lo como raiz a partir da linha de comando. (Presumo que o SELinux não esteja funcionando ou interfira, se estiver, desative-o). [Você pode colocar o disco como uma segunda unidade ou usar um gabinete USB] Para obter acesso root, digite "sudo / bin / bash"

  3. Altere as permissões de propriedade dos arquivos postgresql para o usuário postgres.

  4. Inicie o Postgres!

davidgo
fonte
Um pouco tarde, mas muito obrigado! O truque sudo /bin/bashfoi fundamental para fazer um backup, mas agora tenho novos problemas, descritos na parte de atualização da minha postagem. Se você puder conferir e me dar alguma sugestão, ficaria muito grato.
197 Juan Juan
Algumas coisas - para executar o Postgres, você deu duas partes - iniciando o servidor e conectando-o aos clientes. O psql é um cliente e está reclamando que não pode se conectar ao servidor. Suponho que o pg_ctlcluster esteja fazendo isso por você, mas nunca o usei - prefiro o /etc/inot.d/postgres start (ou similar), que o coloca automaticamente em segundo plano. O problema é que quando o Postgres estiver em execução, inicie uma execução, inicie o psql em uma segunda janela. Se você tentou isso e não está funcionando, o que acontece?
Davidgo 19/05
0

no meu caso, era o shared_buffers muito grande que apresentava o estado de falha, diminuo para 128MB e reiniciei e funcionou bem, fiz uma cópia do diretório de dados após uma falha do sistema operacional em um novo sistema operacional ..

Mawardy
fonte
Você pode descrever exatamente como fazer isso? Quais comandos, etc.? Por favor, não responda nos comentários; edite  sua resposta para torná-la mais clara e completa.
Scott