ฉันติดตั้งเซิร์ฟเวอร์ PostgreSQL ไว้หลายตัว ฉันจะปิดการใช้งานการบูตอัตโนมัติสำหรับเซิร์ฟเวอร์รุ่นเก่าได้อย่างไร


24

ฉันใช้ Ubuntu 12.04 บน Oracle VirtualBox สองสามเดือนที่ผ่านมาฉันติดตั้งเซิร์ฟเวอร์ PostgreSQL เวอร์ชัน 9.1 บนเครื่องของฉัน เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้ว่าเซิร์ฟเวอร์ PostgreSQL 9.3 รองรับประเภทข้อมูล JSON ดังนั้นฉันจึงตัดสินใจอัพเกรด

ฉันอัพเกรดเป็น 9.3 โดยทำตามคำแนะนำที่นี่:

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

เซิร์ฟเวอร์ที่ติดตั้งรุ่นนี้ 9.3 ในเครื่องของฉันพร้อมกับรุ่น 9.1 การรัน pg_lsclusters หลังจากบูตใหม่จะให้:

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

ฉันทำการบำรุงรักษาหลังการอัพเกรดต่อไปนี้แล้ว: ฉันส่งออกหลายตารางจากเซิร์ฟเวอร์ 9.1 ของฉันด้วย pg_dump และเรียกคืนไปยังเซิร์ฟเวอร์ 9.3 ของฉัน จากนั้นฉันเปิดไฟล์ปรับแต่งของฉันสำหรับ 9.1 และ 9.3 ที่/etc/postgresql/$VERSION/main/postgresql.confและสลับหมายเลขพอร์ตของพวกเขาเพื่อให้ไคลเอ็นต์ psql ของฉันเชื่อมต่อกับเซิร์ฟเวอร์ใหม่ตามค่าเริ่มต้น

คำถามของฉันคือสิ่งนี้ ทั้ง 9.1 และ 9.3 เริ่มการบูท ฉันต้องการป้องกัน 9.1 จากการบูทอัตโนมัติเนื่องจากใช้หน่วยความจำระบบประมาณ 5% ฉันจะทำสิ่งนี้ได้อย่างไร

ทรัพยากรที่ปรึกษา:

หน้าเอกสาร PostgreSQL ในการเริ่มต้นเซิร์ฟเวอร์ชี้ให้ฉันไปที่ไดเรกทอรี init.d มาตรฐาน ไดเรกทอรี init.d postgresqlของฉันจะมีสคริปต์ ดูเหมือนว่าสคริปต์นี้สามารถกำหนดค่าให้เปิดใช้รุ่นเดียวเท่านั้น แต่การเปลี่ยนแปลงที่ต้องการไม่ชัดเจนสำหรับฉัน

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

โพสต์ด้านล่างมีข้อมูลมาก แต่จะแสดงวิธีลบคลัสเตอร์ไม่ใช่วิธีปิดการใช้งานเมื่อเริ่มต้น ฉันต้องการออกจากคลัสเตอร์เก่าของฉันติดตั้งเนื่องจากฉันอาจต้องการดึงข้อมูลเพิ่มเติมจากมัน

ฉันคิดว่าฉันติดตั้งเซิร์ฟเวอร์ postgresql หลายตัวฉันจะระบุและลบเซิร์ฟเวอร์ 'พิเศษ' ได้อย่างไร

ฉันได้พิจารณาการเขียนสคริปต์เพื่อฆ่าเซิร์ฟเวอร์เมื่อระบบโหลดเสร็จ แต่ดูเหมือนว่าจะไม่มีประสิทธิภาพ มีวิธีที่สะอาดกว่าในการปิดการใช้งานเวอร์ชัน 9.1 เมื่อบูตหรือไม่

คำตอบ:


43

สำหรับน้อยของสับ, แก้ไข/etc/postgresql/9.1/main/start.confและแทนที่autoด้วยหรือmanualdisabled


ขอบคุณ ch2500! โซลูชันนี้ใช้งานง่ายและทำสิ่งที่ฉันต้องการ
BitPusher16

ฉันกำลังหาคำตอบเช่นนี้มาหลายชั่วโมงแล้ว ขอบคุณมาก
Jonathan Vanasco

10

Debian สร้างสคริปต์หลายตัว (เช่นยูทิลิตีคลัสเตอร์ pg_ *) เพื่อทำให้การรันหลายเวอร์ชันหรือการติดตั้ง PostgreSQL บนเซิร์ฟเวอร์เดียวง่ายขึ้นซึ่งเป็นสาเหตุที่ทำให้สิ่งนี้ไม่ได้รับการบันทึกไว้ใน postgresql.org

ฉันไม่แน่ใจว่า.debแพ็คเกจของ PostgreSQL ใช้กลไกการเริ่มต้นระบบเดียวกับ Debian หรือไม่ แต่ดูที่แพ็คเกจที่ฉันมีถ้าคุณสร้าง/etc/init.d/postgresql-9.1(แม้ว่าจะเป็นไฟล์เปล่า) ก็/etc/init.d/postgresqlจะถือว่าคุณต้องการควบคุมเวอร์ชันนั้นแยกต่างหากและจะไม่ เริ่มต้นโดยค่าเริ่มต้น คุณยังสามารถเริ่มต้นได้ด้วย

service postgresql start 9.1

เพื่อแทนที่การค้นหาเวอร์ชัน


ขอบคุณ DerfK สิ่งนี้ใช้ได้ ฉันสร้างไฟล์ที่คุณแนะนำใส่ปังแฮชในนั้นและทำให้มันปฏิบัติการได้ เมื่อฉันรีบูตเครื่อง pg_lsclusters ได้ให้: 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

แพ็คเกจจากทีมบรรจุภัณฑ์ PostgreSQL Debian นั้นเหมือนกับแพ็คเกจจาก Debian คุณควรใช้โครงสร้างพื้นฐานคลัสเตอร์ pg_ * แทนการแฮกสคริปต์เริ่มต้น sysv init ของคุณเอง
Michael Renner
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.