ใช้ PostgreSQL หลายเวอร์ชันบนเซิร์ฟเวอร์ Ubuntu เดียวกัน


12

ฉันมี PostgreSQL 8.4 และ 9.0 ทำงานบนเซิร์ฟเวอร์เดียวกัน (Ubuntu Lucid)

ฉันติดตั้งพวกเขาทั้งสองผ่าน apt-get (8.4 พร้อมกับแหล่งแพ็กเกจเริ่มต้นและ 9.0 หลังจากเพิ่ม ppa จากhttps://launchpad.net/~pitti/+archive/postgresql )

เมื่อฉันเรียกใช้คำสั่งเช่น "createdb" จากบรรทัดคำสั่งหรือเริ่มต้นเชลล์ "psql" PostgreSQL เวอร์ชัน 8.4 จะถูกใช้เป็นค่าเริ่มต้นในระบบของฉัน

ดังนั้นฉันจะบังคับให้คำสั่งเหล่านี้ใช้ PostgreSQL 9.0 แทน 8.4 ได้อย่างไร


ที่เกี่ยวข้อง: serverfault.com/q/582499/95758
krlmlr

คำตอบ:


11

สมมติว่า Ubuntu ทำเช่นเดียวกับ Debian ดังนั้นอินสแตนซ์ PostGreSQL สองรายการของคุณจะทำงานบนพอร์ตที่ต่างกัน

คุณสามารถตรวจสอบไฟล์กำหนดค่าเพื่อดูเวอร์ชันที่พอร์ตใด:

$ grep -H '^port' /etc/postgresql/*/main/postgresql.conf
/etc/postgresql/8.4/main/postgresql.conf:port = 5432
/etc/postgresql/8.3/main/postgresql.conf:port = 5433

คำสั่ง PostGreSQL ส่วนใหญ่ใช้ตัวเลือก "-p ####" หรือ "--port = ####" ดังนั้นคุณสามารถใช้มันเพื่อเลือกรุ่นที่คุณต้องการ


7

ใช้--clusterตัวเลือกเช่น (สมมติว่าทั้งสองกลุ่มมีชื่อเป็นหลักเริ่มต้น):

psql --cluster 8.4/main
psql --cluster 9.0/main

สคีมาทั่วไปคือ:

--cluster version/name      # for local connections
--cluster version/host:port # for TCP/IP connections

ในการแสดงรายการคลัสเตอร์ที่ติดตั้งทั้งหมด (ชื่อพอร์ตสถานะไดเรกทอรีข้อมูล ฯลฯ ) ให้ใช้pg_lsclustersคำสั่ง

ตรวจสอบman pg_wrapperข้อมูลเพิ่มเติม


มันยอดเยี่ยมทำไมนี่ไม่ได้อยู่ใน psql doc?
MarHoff

1
@MarHoff: pg_wrapperเป็นส่วนขยายของ Debian โดยพื้นฐานแล้วมันจะตัดคำสั่งpsql(นั่นคือpsqlเป็นลิงก์สัญลักษณ์ไปยังpg_wrapperสคริปต์) พร้อมด้วยตัวเลือกใหม่ ๆ มากมายเพื่ออำนวยความสะดวกในการจัดการหลายคลัสเตอร์
Grzegorz Szpetkowski

0

คุณสามารถใช้dpkg -L <packagename>เพื่อดูว่าไฟล์ใดเป็นเจ้าของแพ็คเกจเฉพาะ รันด้วยแพ็กเกจ postgresql 9 และดูว่าคำสั่ง createdb สำหรับเวอร์ชันนั้นถูกเก็บไว้ที่ใด

คำสั่ง postgresql ส่วนใหญ่จะทำงานข้ามเวอร์ชั่นพร้อมการเลือกฐานข้อมูลที่เหมาะสมโดยพอร์ตหรือพา ธ แต่แน่นอนว่าไม่ได้ใช้กับการเริ่มต้นสคริปต์และคำสั่งการสร้าง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.