Saya memiliki beberapa server PostgreSQL diinstal. Bagaimana cara menonaktifkan boot otomatis untuk server lama?

24

Saya menjalankan Ubuntu 12,04 di Oracle VirtualBox. Beberapa bulan yang lalu, saya menginstal server PostgreSQL versi 9.1 di komputer saya. Baru-baru ini, saya mengetahui bahwa server PostgreSQL 9.3 mendukung tipe data JSON, jadi saya memutuskan untuk memutakhirkan.

Saya memutakhirkan ke 9.3 dengan mengikuti instruksi di sini:

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

Server ini menginstal versi 9.3 di komputer saya bersama versi 9.1. Menjalankan pg_lsclusters setelah boot baru memberi:

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

Saya kemudian melakukan pemeliharaan pasca pemutakhiran berikut: Saya mengekspor beberapa tabel dari server 9.1 saya dengan pg_dump dan mengembalikannya ke server 9.3 saya. Saya kemudian membuka file konfigurasi saya untuk 9.1 dan 9.3 di /etc/postgresql/$VERSION/main/postgresql.confdan menukar nomor port mereka sehingga klien psql saya terhubung ke server baru secara default.

Pertanyaan saya adalah ini. Baik 9.1 maupun 9.3 mulai saat boot. Saya ingin mencegah 9,1 dari boot otomatis, karena membutuhkan sekitar 5% dari memori sistem saya. Bagaimana saya bisa melakukan ini?

Sumber daya berkonsultasi:

Halaman doc PostgreSQL tentang memulai server mengarahkan saya ke direktori init.d standar. Direktori init.d saya memang mengandung skrip postgresql. Sepertinya skrip ini dapat dikonfigurasi untuk meluncurkan hanya satu versi, tetapi perubahan yang diperlukan tidak jelas bagi saya.

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

Posting di bawah ini sangat informatif, tetapi menunjukkan cara menghapus cluster, bukan cara menonaktifkannya saat startup. Saya ingin membiarkan cluster lama saya terinstal, karena saya mungkin ingin mengambil informasi lebih lanjut darinya.

Saya pikir saya memiliki beberapa server postgresql yang diinstal, bagaimana cara mengidentifikasi dan menghapus yang 'ekstra'?

Saya telah mempertimbangkan untuk menulis skrip untuk membunuh server setelah sistem selesai memuat, tetapi ini tampaknya tidak efisien. Apakah ada cara yang lebih bersih untuk menonaktifkan versi 9.1 saat boot?

BitPusher16
sumber

Jawaban:

43

Untuk sedikit hack, edit /etc/postgresql/9.1/main/start.confdan ganti autodengan manualatau disabled.

ch2500
sumber
Terima kasih ch2500! Solusi ini intuitif dan melakukan apa yang saya butuhkan.
BitPusher16
Saya telah mencari jawaban seperti ini selama beberapa jam. Terima kasih banyak.
Jonathan Vanasco
10

Debian membuat beberapa skrip (seperti utilitas cluster pg_ *) untuk menyederhanakan menjalankan beberapa versi atau instalasi PostgreSQL pada satu server, itulah sebabnya mengapa ini tidak didokumentasikan di postgresql.org.

Saya tidak yakin apakah .debpaket PostgreSQL sendiri menggunakan mekanisme startup yang sama dengan Debian, tetapi melihat paket yang saya miliki, jika Anda membuat /etc/init.d/postgresql-9.1(bahkan jika itu file kosong) maka /etc/init.d/postgresqlakan menganggap Anda ingin mengontrol versi itu secara terpisah dan tidak akan mulai secara default. Anda masih bisa memulainya dengan

service postgresql start 9.1

untuk mengesampingkan pencarian versi.

DerfK
sumber
Terima kasih DerfK, ini berhasil. Saya membuat file yang Anda sarankan, memasukkan hash bang di dalamnya, dan membuatnya dapat dieksekusi. Ketika saya reboot, pg_lsclusters memberi: 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
Paket-paket dari tim pengemasan Debian PostgreSQL identik dengan paket dari Debian. Anda harus menggunakan infrastruktur cluster pg_ * alih-alih meretas skrip awal sysv init Anda sendiri.
Michael Renner