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

0

Primeiro, quero deixar claro que essa questão foi já perguntei no askubuntu, mas eu continuei a excluí-lo porque quase não recebi feedback. Se isso violar o protocolo SU, por favor me avise.

Bem-vindo à minha bagunça ...

A situação é:

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

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

  • Após cerca de 8 horas de uso do PC e esperando que o problema seja solucionado, observo que a barra de processo ainda está congelada. Eu cruzo meus dedos e desligo o computador.

  • Agora o laptop não inicializa no Ubuntu (Ainda tem o Windows, não tente inicializar isso, mas acho que ainda funciona).

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

  • Feito 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, copiar / colar a pasta com o Nautilus ou via terminal + sudo), ele diz que o conteúdo de /var/lib/postgresql/9.5/main está ilegível (não tenho permissões). Com o meu diretório home, há menos problemas e consigo fazer um backup (com algumas exceções sem importância).

O que posso fazer sobre isso? É 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 um backup bem sucedido dos meus arquivos usando sudo /bin/bash e, em seguida, cp , como sugerido por davidgo (salvou-os em um disco rígido externo).

Então eu instalei o Ubuntu a partir do zero no meu PC, posgresql-9.5 instalado (adicionando o repo Postgres PGDG mencionado por davidgo), e copiou os arquivos para o mesmo localização original (usando cp -rnP /pathto/backupfolder /var/lib/postgresql/9.5/main ) e alterou a propriedade para "postgres".

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

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_ctl para iniciar o servidor, mas que no Ubuntu, é esperado que eu use pg_ctlcluster em seu lugar. Está bem, 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 do PostgreSQL um pouco desajeitado, eu posso dizer, então isso é provavelmente algo Real simples que eu não posso ver agora. Mais uma vez, qualquer ajuda seria mais do que wecome!

    
por Juan 05.05.2017 / 21:38

1 resposta

2

Para que isso funcionasse, as etapas seriam:

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

  2. Copie os arquivos antigos do Postgres no novo sistema para o mesmo localização (tipicamente /var/lib/pgsql/9.5). Como você está tendo dificuldades aqui, você deve tentar fazê-lo como root a partir da linha de comando. (Eu assumo que o SELinux não está operativo ou interferindo, se estiver, desative-o). [Você pode colocar o disco como uma segunda unidade ou usar um compartimento USB] Para obter acesso root, digite "sudo / bin / bash"

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

  4. Inicie o Postgres!

por 06.05.2017 / 03:59