Sistem güncellemesi başarısız olduktan sonra Postgresql veri tabanından veri kurtarma


0

Öncelikle, bu sorunun askubuntu'da zaten istendiğini açıkça belirtmek istiyorum , ancak neredeyse hiç geri bildirim almadığım için silme işlemine devam ettim. Bu SU protokolünü ihlal ederse, lütfen bana bildirin.


Benim karmaşaya hoş geldin ...

Durum şu ki:

  • Ubuntu Software bazı "önemli" güncellemeler yapıyordu (ve muhtemelen çoğunu, çünkü son güncellememden bu yana 9 aydan daha kolaydı).

  • Güncelleme, ne olduğu hakkında hiçbir açıklama olmadan, çalışmayı durduruyor gibiydi (güncelleme ilerleme çubuğu dondu). Bana "Fazla Bilgi" düğmesini tıklatarak kaydetme konusunda fazla bilgi veya bir şey yapmayan bir hata bildirimi var.

  • Bilgisayarı kullanarak yaklaşık 8 saat çalıştıktan ve sorunun kendiliğinden çözüleceğini umduktan sonra, işlem çubuğunun hala donmuş olduğunu not ediyorum. Parmaklarımı aşıp bilgisayarı kapatıyorum.

  • Artık dizüstü bilgisayar Ubuntu'da önyükleme yapmıyor (Hala Windows var, önyüklemeye çalışmadım, ama sanırım hala çalışıyor).

  • Büyük ve önemli Postgresql veritabanı dizüstü bilgisayarda depolanır, üstünde /var/lib/postgresql/9.5/main(evet, dizüstü bilgisayarı kapattığımda bir gün önce gerçekten yorgundum, bunu ummuyordum ... gerçekten aptalca bir şey; ).

  • Ubuntu'yu yeniden kurmadan önce, dosyalarıma erişmek ve bir yedekleme yapmak amacıyla Ubuntu 16.04 ile önyüklenebilir bir usb bellek kartı yaptım.

  • Söz konusu veritabanını yedekleyemiyorum (yani, Nautilus ile veya terminal + sudo ile klasörü kopyalayabilir / yapıştırabilir), içeriğinin /var/lib/postgresql/9.5/mainokunamaz olduğunu söylüyor (iznim yok). Ana dizinde daha az sorun var ve yedeklemeyi başardım (birkaç önemsiz istisna dışında).

Bu konuda ne yapabilirim? Yedekleme yapmak için dosyaları veritabanından kopyalamak mümkün mü? Ayrıca, daha sonra bu veritabanına nasıl erişebilirim?

Zaman ayırdığınız için teşekkürler ...


Güncelleme : davidgo'nun önerdiği gibi (ve onları harici bir sabit diske kaydettim) kullanarak sudo /bin/bashve ardından dosyalarımı başarıyla yedekledim cp.

Sonra ubuntu'yu bilgisayarıma sıfırdan yükledim, posgresql-9.5'i kurdum (davidgo tarafından belirtilen Postgres PGDG deposunu ekleyerek) ve dosyaları aynı orijinal konumuna (kullanarak cp -rnP /pathto/backupfolder /var/lib/postgresql/9.5/main) kopyaladım ve mülkiyeti "postgres" olarak değiştirdim.

Şimdi benim sorunum postgresql istemcisini ( psql) başlatamam . Bu komut satırı çıktısıdır:

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"?

Belgeleri ararken pg_ctl, sunucuyu başlatmak için kullanabileceğimi öğrendim , ancak Ubuntu'da kullanmam bekleniyor pg_ctlcluster. Tamam, şunu deniyorum:

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"

Ben oldukça sakar bir PostgreSQL kullanıcısıyım, söyleyebiliyorum, bu yüzden şu anda göremeyeceğim basit bir şey. Yine, herhangi bir yardım bizden daha fazla olurdu!


2
Bu önemli veri tabanının yedeğini almadığınızı varsayıyorum?
Ramhound

Hayır, yedeğim yok. Yeterli zamanla (birkaç sanırım sanırım) yeniden inşa edebilirdim, ama kaçmaya çalıştığım şey bu.
Juan

Veritabanının yedeğini ya da sistemin kendisinin bir görüntüsünü yoksa, dergi olmadan bir kürek çekersiniz. Ubuntu'yu mevcut kurulumunuza zaten yüklediyseniz, verileriniz orada olmayacak. İzinlerin olmadığını söylüyorsa, kendine izin vermelisin.
Ramhound

Bu noktada hala orijinal Ubuntu kurulumum var (bozuk, ancak tüm dosyalar var). İzinlerle ilgili olarak, bunu nasıl yapabilirim bilmiyorum, çünkü söz konusu orijinal kurulumdan ve postgresql istemcisinden veya komut satırından önyükleme yapamıyorum (Ubuntu kurtarma modu da çalışmıyor).
Juan

1
Bu, yeni bir yedeğiniz olduğu için Tanrı'ya şükrettiğiniz zamandır.
SDsolar

Yanıtlar:


2

Bu çalışmayı sağlamak için adımlar şöyle olacaktır:

  1. Yeni bir UBUNTU kopyası yükleyin - postgres dosyalarının üzerine yazmamak için yeni bir sürücüye. Yeni örneğe Postgres 9.5'i yükleyin (Bunu yapmak için Postgres PGDG deposunu eklemeniz gerekebilir veya gerekmeyebilir )

  2. Eski Postgres dosyalarını yeni sisteme aynı yere kopyalayın (genellikle /var/lib/pgsql/9.5). Burada zorluklar yaşadığın için komut satırından KÖK OLARAK yapmayı denemelisin. (SELinux'un operatif olmadığını varsayalım, eğer devre dışıysa engelleyin). [Diski ikinci bir sürücü olarak yerleştirebilir veya bir USB kasası kullanabilirsiniz] Kök erişimini sağlamak için "sudo / bin / bash" yazın.

  3. Postgresql dosyalarının mülkiyet izinlerini postgres kullanıcısı olarak değiştirin.

  4. Postgres'i başlat!


Biraz geç, ama çok teşekkürler! İşin püf sudo /bin/bashnoktası, bir yedekleme yapmak için anahtar oldu, ancak şimdi gönderimimin güncelleme bölümünde açıklanan yeni sorunlarım var . Eğer kontrol edebilir ve herhangi bir öneri verebilirseniz çok minnettar olurum.
Juan

Birkaç şey - Postgres'i çalıştırmak için 2 parça verdiniz - sunucuyu başlatmak ve istemcilere bağlamak. psql bir istemcidir ve sunucuya bağlanamadığından şikayetçidir. Sanırım pg_ctlcluster bunu sizin için yapıyor ama ben hiç kullanmadım - otomatik olarak arkaplanı olan /etc/inot.d/postgres start (veya benzerini) tercih ederim. Mesele şu ki, Postgres koşuyor, koşuyor, ikinci pencerede psql'yi başlat. Bunu denediyseniz ve çalışmıyorsa, ne olur?
davidgo

0

benim durumumda paylaşılan parolalar çok büyüktü, başarısız durumdan kurtuldu, 128 MB'a düşürdüm ve yeniden başlattım, daha sonra düzgün çalıştım, yeni bir işletim sistemine bir OS çökmesinden sonra veri dizininin bir kopyasını aldım ..


Bunun nasıl yapıldığını tam olarak açıklayabilir misiniz? Hangi komutlar vs. Lütfen yorumlara cevap vermeyin;  cevabınızı daha net ve daha eksiksiz hale getirmek için düzenleyin .
Scott
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.