14.04'ten 16.04.1'e yükseltildikten sonra Postgresql sunucusu başlatılamıyor

21

Sistemimi yeni 14.04'ten yeni sürüme geçirdim. LTS, 16.04.1 LTS, postgresql, systemd'de başlamıyor:

/etc/init.d/postgresql start                                                                                                                                                                              
[ ok ] Starting postgresql (via systemctl): postgresql.service

# /etc/init.d/postgresql status                                                                                                                                                                             
● postgresql.service - PostgreSQL RDBMS
  Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor     preset: enabled)
  Active: active (exited) since Вт 2016-08-09 13:40:51 MSK; 3min 23s ago
  Process: 23142 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
  Main PID: 23142 (code=exited, status=0/SUCCESS)Seems that 

Sistemd komut dosyasının yanlış veriler içerdiği anlaşılıyor:

# cat /lib/systemd/system/postgresql.service                                                                                                                                                                
# systemd service for managing all PostgreSQL clusters on the system. This
# service is actually a systemd target, but we are using a service since
# targets cannot be reloaded.

[Unit]
Description=PostgreSQL RDBMS

[Service]
Type=oneshot
ExecStart=/bin/true
ExecReload=/bin/true
RemainAfterExit=on

[Install]
WantedBy=multi-user.target

Postgresql için doğru komut ne olmalıdır?

    
sordu Artur Eshenbrener 09.08.2016 13:13

4 cevap

7

Doğru sürüm ve küme adını verirseniz, bu kutudan çıkmalıdır.

9.5 sürümünü çalıştırdığınızı ve kümenin main çağrıldığını bildirelim:

Başlangıç: systemctl start [email protected]

Dur: systemctl stop [email protected]

Durum: systemctl status [email protected]

Önyüklemede otomatik başlatmayı etkinleştir: systemctl enable [email protected]

Önyüklemede otomatik başlatmayı devre dışı bırak: systemctl disable [email protected]

[email protected]:~$ systemctl status [email protected][email protected] - PostgreSQL Cluster 9.5-main
   Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-03-31 17:44:46 CEST; 59s ago
   Main PID: 4546 (postgres)
   CGroup: /system.slice/system-postgresql.slice/[email protected]
           ├ ─ 4546 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config_file=/etc/postgresql/9.5/main/postgresql.conf
           ├ ─ 4548 postgres: checkpointer process
           ├ ─ 4549 postgres: writer process
           ├ ─ 4550 postgres: wal writer process
           ├ ─ 4551 postgres: autovacuum launcher process
           └ ─ 4552 postgres: stats collector process

Mar 31 17:44:44 postgres postgres[4546]: [1-2] 2017-03-31 17:44:44 CEST [4546] @ HINT:  Future log output will go to log destination "syslog".
Mar 31 17:44:44 postgres postgres[4547]: [2-1] 2017-03-31 17:44:44 CEST [4547] @ LOG:  database system was shut down at 2017-03-31 17:44:43 CEST
Mar 31 17:44:44 postgres postgres[4547]: [3-1] 2017-03-31 17:44:44 CEST [4547] @ LOG:  MultiXact member wraparound protections are now enabled
Mar 31 17:44:44 postgres postgres[4546]: [2-1] 2017-03-31 17:44:44 CEST [4546] @ LOG:  database system is ready to accept connections
Mar 31 17:44:44 postgres postgres[4551]: [2-1] 2017-03-31 17:44:44 CEST [4551] @ LOG:  autovacuum launcher started
Mar 31 17:44:45 postgres postgres[4553]: [3-1] 2017-03-31 17:44:45 CEST [4553] [unknown]@[unknown] LOG:  incomplete startup packet
Mar 31 17:44:46 postgres systemd[1]: Started PostgreSQL Cluster 9.5-main.
Mar 31 17:44:47 postgres systemd[1]: Reloading PostgreSQL Cluster 9.5-main.
Mar 31 17:44:47 postgres postgres[4546]: [3-1] 2017-03-31 17:44:47 CEST [4546] @ LOG:  received SIGHUP, reloading configuration files
Mar 31 17:44:47 systemd[1]: Reloaded PostgreSQL Cluster 9.5-main.
    
verilen cevap malte 31.03.2017 17:56
15

Systemd, /etc/init.d dosyasındaki komut dosyasını kullanmalıdır. Bunun yerine, systemd bir çeşit şablon dosyasını kullanır. Bunu düzeltmek için şu adımları izleyin:

  1. Geçersiz servis komut dosyasını kaldırın:

    # rm /lib/systemd/system/postgresql.service

  2. Arka plan komut dosyalarını yeniden yükle:

    # systemctl daemon-reload

  3. postgresql hizmetini etkinleştir:

    # systemctl enable postgresql

Bundan sonra, tercih edilen varyasyonlarla postgres başlatabilirsiniz: sudo systemctl start postgresql , sudo service postgresql start veya sudo /etc/init.d/postgresql start . Postgresql'nin gerçekten çalıştığını kontrol etmek için lütfen hizmet durumunu kontrol edin: sudo systemctl status postgresql . Şöyle görünüyor:

% sudo systemctl status postgresql                                                                                                                                                                          
● postgresql.service - LSB: PostgreSQL RDBMS server
   Loaded: loaded (/etc/init.d/postgresql; bad; vendor preset: enabled)
   Active: active (running) since Пт 2016-08-12 10:13:43 MSK; 1h 37min ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/postgresql.service
           ├─4086 /usr/lib/postgresql/9.5/bin/postgres -D     /var/lib/postgresql/9.5/main -c  config_file=/etc/postgresql/9.5/main/postgresql.conf
           ├─4099 postgres: checkpointer process                                                                                              
           ├─4100 postgres: writer process                                                                                                    
           ├─4101 postgres: wal writer process                                                                                                
           ├─4102 postgres: autovacuum launcher process                                                                                       
           └─4103 postgres: stats collector process                                                                                           

авг 12 10:13:40 ubuntu-precise systemd[1]: Starting LSB: PostgreSQL RDBMS server...
авг 12 10:13:40 ubuntu-precise postgresql[4009]:  * Starting PostgreSQL 9.5 database server
авг 12 10:13:43 ubuntu-precise postgresql[4009]:    ...done.
авг 12 10:13:43 ubuntu-precise systemd[1]: Started LSB: PostgreSQL RDBMS server.
    
verilen cevap Artur Eshenbrener 09.08.2016 13:13
0

Postgre9'u temizledikten sonra aynı sorunu yaşadım ve 10 ubuntu16'uma yükledim. İlk olarak /lib/systemd/system/postgresql.service dosyasını aşağıdaki içerikle düzenledim:

[Unit]
Description=PostgreSQL RDBMS

[Service]
Type=notify
User=postgres
ExecStart=/usr/lib/postgresql/10/bin/postgres -D /analysis2/postgresql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0

[Install]
WantedBy=multi-user.target

Ve postgresql hizmetini kontrol etmek için systemctl restart / stop / start'ı kullanabilirim. Ancak, herhangi bir nedenle, yukarıdaki dosyanın üzerine yazılmıştır (sistem güncellemesinden sonra) ve postgresql sunucusunu başlatmak ve durdurmak için systemctl komutunu çalıştıramadım. Bazı okumalardan sonra, yukarıdaki dosyayı düzenlememeniz gerektiğini fark ettim. Bunun yerine, varsayılanların üzerine yazmak için systemctl edit foo kullanmalısınız. Aşağıdaki bağlantı tarafından önerilen çözümü uyguladıktan sonra, sistemim postgresql ile düzgün çalışıyor gibi görünüyor.

Sistem hizmetlerini nasıl geçersiz kılar veya yapılandırabilirim?

    
verilen cevap Kemin Zhou 04.01.2018 23:36
-1

En güzel çözüm değil, ama bu problemi herhangi bir şeye dalmak zorunda kalmadan çözüyor. Bunu cron'a ekle:

@reboot sleep 5; systemctl start postgresql
    
verilen cevap user3136936 24.08.2017 09:44

Etiketlerdeki diğer soruları oku