2013-04-02 44 views
8

Devel veritabanı düğümümde büyük bir veritabanını (özel formatta yaklaşık 32Go) geri yüklemeye çalıştığımda küçük bir sorunum var (bu düğümün daha az RAM'i var, CPU ... sunucu). PostgreSQL - çok büyük veritabanını geri yükleme

Benim veritabanı dökümlerini

benzer bir komutla oluşturulur: burada

pg_restore -F custom -j 5 -d myDB /backup/myDB-20130331.pg91 

Ama geri komutu başarısız her zaman:

pg_dump -F custom -b myDB -Z 9 > /backup/myDB-`date +%y%m%d`.pg91 

Ve bunu geri yüklediğinizde, aşağıdaki kodu kullandım bir hata gibi:

pg_restore: [archiver (db)] error returned by PQputCopyData: server closed the connection unexpectedly 
This probably means the server terminated abnormally 
    before or while processing the request. 
pg_restore: [archiver] worker process failed: exit code 1 
pg_restore: [archiver (db)] error returned by PQputCopyData: server closed the connection unexpectedly 
This probably means the server terminated abnormally 
    before or while processing the request. 
pg_restore: [archiver (db)] error returned by PQputCopyData: server closed the connection unexpectedly 
This probably means the server terminated abnormally 
    before or while processing the request. 
pg_restore: [archiver (db)] error returned by PQputCopyData: server closed the connection unexpectedly 
This probably means the server terminated abnormally 
    before or while processing the request. 

Ve ben postgresql günlükleri kontrol ederken, bu okuyabilir:

HINT: In a moment you should be able to reconnect to the database and repeat your command. 
    LOG: all server processes terminated; reinitializing 
    LOG: database system was interrupted; last known up at 2013-04-02 11:41:48 UTC 
    LOG: database system was not properly shut down; automatic recovery in progress 
    LOG: redo starts at 86/26F302B0 
    LOG: unexpected pageaddr 85/E3F52000 in log file 134, segment 38, offset 16064512 
    LOG: redo done at 86/26F51FC0 
    LOG: last completed transaction was at log time 2013-04-02 11:50:47.663599+00 
    LOG: database system is ready to accept connections 
    LOG: autovacuum launcher started 

Oldukça tuhaf, benim postgresql sunucusu sırf geri benim yalnız "yeniden". İşlerin sayısını en aza indirmeye çalışıyorum (-j 5 seçeneği) ancak yine de aynı sorunla karşılaşıyorum. Ancak, daha iyi özelliklere sahip bir düğümde, bu veritabanını geri yüklemek için hiçbir sorunum yok. Emin değilim, ancak indekslerimin (bunlardan biri gerçekten çok büyük) güncellemeleri, bu sorunu anlamak için bir ipucu olabilir mi?

Bazı sorularım var: gerçekten büyük veritabanlarını geri yüklemek için daha iyi bir yol var mı? Pg_restore komutumda bir şeyi özlüyor muyum? Devre sunucumun ayarları çok düşük olabilir mi?

Herhangi bir ipucu büyük takdir edilecektir. Şimdiden teşekkürler.

env: PostgreSQL 9.1 büyük bu tür işler için

+0

Arka uç kazası gibi görünüyor, ancak kesin olarak söylemek ya da nedenini bilmek için günlüklerden daha fazla göstermeniz gerekecek. –

+0

Merhaba @CraigRinger, neler olup bittiğini anlamak için günlüğü daha ayrıntılı hale getirmemi önerirsiniz? Tamam Bunu yapmaya çalışacağım ve daha fazla bilgi görmeyi umuyoruz – Labynocle

+0

Ayrıca, 5'den sadece 2'ye kadar olan iş sayısını da azaltabilirsiniz. Bu, daha uzun sürer, ancak geliştirme düğümünüzde daha az talepkar olabilir. – thisfeller

cevap

11

(Debian paketlerinin yoluyla yüklenir), restorasyon işlemi sırasında (sizin postgresql.conf yılında off için tarafından set it) autovacuum devre dışı bırakmak için tavsiye edilir .

Nihayet benim için çalışıyor gibi görünüyor.

+1

Bu benim için çalıştı - 'autovacuum' un neden devre dışı bırakılması gerektiği konusunda bir kaynak (veya daha fazla bilgi) sağlayabilir misiniz? Özellikle bunu yapmak veritabanını çökertirdi? Teşekkürler! – christianbundy

+0

'' vaccum'' işlemi, sisteminizin performansını düşürebilir (istatistik üretebilir, G/Ç trafiğini artırabilir). Bu nedenle, bu tür bir sorunu önlemek için devre dışı bırakmak ilginçtir. Ancak, 'vaccum' yapmak, istatistik uptodate tutmak için gerekli ancak dökümü sırasında gerekli değildir. Manuel olarak başlatmayı veya 'autovaccum'un arka planını etkinleştirmeyi unutmayın. – Labynocle

+0

Hayır, benim için çalışmıyor. Şunu deneyeceğim: http://serverfault.com/a/570079 –