Ho più server PostgreSQL installati. Come disabilitare l'avvio automatico per il server precedente?


24

Sto eseguendo Ubuntu 12.04 su Oracle VirtualBox. Un paio di mesi fa, ho installato il server PostgreSQL versione 9.1 sul mio computer. Di recente ho appreso che il server PostgreSQL 9.3 supporta i tipi di dati JSON, quindi ho deciso di eseguire l'aggiornamento.

Ho aggiornato a 9.3 seguendo le istruzioni qui:

https://wiki.postgresql.org/wiki/Apt

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install postgresql-9.3 pgadmin3

Questo server installato ha installato la versione 9.3 sulla mia macchina insieme alla versione 9.1. L'esecuzione di pg_lsclusters dopo un nuovo avvio dà:

Ver Cluster Port Status Owner    Data directory               Log file
9.1 main    5433 online postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log
9.3 main    5432 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log

Ho quindi effettuato la seguente manutenzione post-aggiornamento: ho esportato diverse tabelle dal mio server 9.1 con pg_dump e le ho ripristinate sul mio server 9.3. Ho quindi aperto i miei file di configurazione per 9.1 e 9.3 at /etc/postgresql/$VERSION/main/postgresql.confe ho scambiato i loro numeri di porta in modo che il mio client psql si connetta al nuovo server per impostazione predefinita.

La mia domanda è questa Sia 9.1 che 9.3 si avviano all'avvio. Vorrei impedire l'avvio automatico a 9.1, poiché occupa circa il 5% della memoria del mio sistema. Come posso fare questo?

Risorse consultate:

La pagina del documento PostgreSQL all'avvio di un server mi indica la directory init.d standard. La mia directory init.d contiene lo script postgresql. Sembra che questo script possa essere configurato per avviare solo una versione, ma la modifica richiesta non è ovvia per me.

http://www.postgresql.org/docs/9.1/interactive/server-start.html

Il post seguente è stato molto istruttivo, ma mostra come rimuovere un cluster, non come disabilitarlo all'avvio. Vorrei lasciare installato il mio cluster più vecchio, poiché potrei voler recuperare ulteriori informazioni da esso.

Penso di avere più server Postgresql installati, come posso identificare ed eliminare quelli "extra"?

Ho pensato di scrivere uno script per uccidere il server una volta che il sistema ha terminato il caricamento, ma questo sembra inefficiente. Esiste un modo più pulito per disabilitare la versione 9.1 all'avvio?

Risposte:


43

Per meno di un hack, modifica /etc/postgresql/9.1/main/start.confe sostituisci autocon manualo disabled.


Grazie ch2500! Questa soluzione è intuitiva e fa esattamente quello di cui ho bisogno.
BitPusher16

Ho cercato una risposta come questa per diverse ore. GRAZIE immensamente.
Jonathan Vanasco,

10

Debian ha creato diversi script (come le utilità del cluster pg_ *) per semplificare l'esecuzione di più versioni o installazioni di PostgreSQL su un singolo server, motivo per cui questo non è documentato su postgresql.org.

Non sono sicuro che il .debpacchetto di PostgreSQL utilizzi lo stesso meccanismo di avvio di Debian, ma guardando il pacchetto che ho, se crei /etc/init.d/postgresql-9.1(anche se si tratta di un file vuoto) /etc/init.d/postgresqlsupponiamo che tu voglia controllare quella versione separatamente e non lo faranno avviarlo per impostazione predefinita. Puoi ancora iniziare con

service postgresql start 9.1

per sovrascrivere la ricerca della versione.


Grazie DerfK, ha funzionato. Ho creato un file che mi hai suggerito, inserito un hash bang e l'ho reso eseguibile. Quando ho riavviato, pg_lsclusters ha dato: Ver Cluster Port Status Owner Data directory Log file 9.1 main 5433 down postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log 9.3 main 5432 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log
BitPusher16

I pacchetti del team di packaging Debian PostgreSQL sono identici a quelli di Debian. Dovresti usare l'infrastruttura cluster pg_ * invece di hackerare i tuoi script start start sysv.
Michael Renner,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.