PostgreSQL yüklemesi nasıl düzeltilir?


18

Son zamanlarda Maverick Natty yükseltti ve dağıtım yükseltme sırasında bir şey PostgreSQL ile yanlış gitti dışında her şey iyi gitti. O zamandan beri 'sudo apt-get purge postgresql' ile yeniden yüklemeyi, kaldırmayı ve hatta temizlemeyi denedim ama ne yaparsam yapayım hala aynı hatayla geliyor. Aşağıya bakınız. Yükseltmeden önce iyi çalışıyordu. Herhangi bir yardım büyük mutluluk duyacağız. Teşekkürler!

Setting up postgresql-common (114) ...
 * Starting PostgreSQL 8.4 database server         * The PostgreSQL server failed to start. Please check the log output:
2011-05-19 11:49:41 EDT LOG:  could not bind IPv4 socket: Address already in use
2011-05-19 11:49:41 EDT HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2011-05-19 11:49:41 EDT WARNING:  could not create listen socket for "127.0.0.1"
2011-05-19 11:49:41 EDT FATAL:  could not create shared memory segment: Invalid argument
2011-05-19 11:49:41 EDT DETAIL:  Failed system call was shmget(key=5432001, size=37879808, 03600).
2011-05-19 11:49:41 EDT HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently 37879808 bytes), reduce PostgreSQL's shared_buffers parameter (currently 4096) and/or its max_connections parameter (currently 103).
    If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.
    The PostgreSQL documentation contains more information about shared memory configuration.

[fail]
invoke-rc.d: initscript postgresql, action "start" failed.
dpkg: error processing postgresql-common (--configure):
 subprocess installed post-installation script returned error exit status 1

"netstat -na | grep 5432" çıktısını gönderebilir misiniz
freethinker

Bu komutu çalıştırmak hiçbir şey vermez. Başka fikir var mı?
kablolu

sonra /etc/init.d/postgresqlbir set -xsatır açın ve ekleyin #!/bin/bashve bir sudo /etc/init.d/postgresql restartçıkış yapın ve
yayınlayın

Set -e'yi set -x ile değiştirdim ve işte ne var: pastebin bağlantısı
kablolu

Yanıtlar:


29

Linux çekirdeğinin bir kerede tahsis etmesine olanak tanıyan bir yığın paylaşılan belleğin maksimum boyutunu artırmanız gerekir (SHMMAX parametresi olarak bilinir)

/etc/sysctl.confAşağıdaki satırı düzenlemeniz ve eklemeniz gerekir :

kernel.shmmax = 41943040

( 41943040bayt cinsinden belleğin boyutu, yani 40 megabayttır. Üretim sisteminde muhtemelen bu değeri daha yüksek bir değere ayarlamak istersiniz - Postgres belgeleri kullanılabilir belleğin 1 / 4'ü ile başlamanızı önerir)

O zaman koş

sudo sysctl -p

ve postgres'i yeniden başlatın.

Alternatif olarak, parametrenin değerini düzenleyebilir /etc/postgresql/<version>/main/postgresql.confve azaltabilirsinizshared_buffers .

Bu bir hata, daha fazla bilgi burada

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/264336

( /etc/sysctl.d/30-postgresql-shm.confbu amaçla kullanılması gereken bir dosya da vardır, ancak ana yapılandırmaya dahil edilmemiş gibi görünmektedir, bu nedenle düzenlemenin etkisi yoktur)


Tam olarak yukarıda belirttiğiniz gibi yaptım ve bilgisayarı yeniden başlattım, ancak yine de orijinal soruya gönderdiğim ile aynı hatayı alıyorum. Bu noktada, sadece her şeyi kaldırmaya ve sıfırdan başlamaya hazırım, ancak bazı nedenlerden dolayı apt-get trys sunucuyu kaldırdığımda çalıştırmak için çalışıyorum ve bu yüzden bunu bile yapamıyorum. Yardımların için teşekkür ederim! Gerçekten onu takdir ederim.
kablolu

shmmax'ı daha fazla çarpmayı deneyin .. bu paylaşılan bir hafıza sorunudur. Gönderdiğim bağlantıya bakın, daha fazla bilgi ve daha fazla çalışma alanı var
freethinker

10
Çözüm /etc/sysctl.conf dosyasını düzenlemek ve kernel.shmmax = 41943040 satırını eklemek sonra sudo sysctl -p komutunu çalıştırmak ve postgreSQL: sudo /etc/init.d/postgresql start'ı yeniden başlatmaktı. Şimdi hatasız başlıyor. Çok teşekkür ederim!!
kablolu

1
@freethinker, 12.04 sürümünde çalışmaz.
Cerin

1
@wired, Teşekkürler, düzeltmeniz benim için çalışıyor. /Etc/sysctl.d/30-postgresql-shm.conf tamamen göz ardı ediliyor gibi görünüyor ...
Cerin

-2

Eski Postgres hala büyük olasılıkla çalışıyor.

Freethinker'ın işaret ettiği gibi, o bağlantı noktasında neyin çalıştığını doğrulamak için iyi fikir.

Postrgres olduğunu öğrendikten sonra muhtemelen öldürmek istersiniz:

# Find PID
ps axf | grep post

kill PID

Ardından yeni sürümü başlatabilirsiniz:

/etc/init.d/postgresql start

Paket yöneticisinin neden eski sürümü durduramadığı konusunda şaşkınım.


'Ps axf | grep sonrası '. Eminim koşmuyor.
kablolu
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.