จะอัพเกรด PostgreSQL จากเวอร์ชั่น 8.4 เป็น 9.4 ได้อย่างไร


18

ฉันต้องการที่จะอัพเกรด PostgreSQL ของฉันจากเวอร์ชัน8.4ไป9.4

เอกสารไม่ได้เป็นอย่างชัดเจนกับผม

  1. ฉันจะสูญเสียฐานข้อมูลเก่าของฉันหรือไม่ถ้าฉันทำการอัพเกรด
  2. ฉันจะสำรองฐานข้อมูลเก่าของฉันได้อย่างไรหากฉันสูญเสียฐานข้อมูลหลังจากการอัปเกรด
  3. ฉันจะอัพเกรด psql ของฉันได้อย่างไร

PostgreSQL ของฉันกำลังทำงานบนเซิร์ฟเวอร์CentOS 6.6


ความจริงแล้วคำอธิบายนั้นชัดเจนมากในหน้าที่เชื่อมโยง การดัมพ์หมายความว่าคุณมีดัมพ์สำหรับเคสซึ่งมีบางสิ่งที่ไม่ทำงาน นั่นหมายความว่าคุณจะไม่สูญเสียมัน นอกจากนี้ยังมีการเชื่อมโยงบนหน้าชี้ว่าวิธีการติดตั้งจริงรุ่นใหม่ - ตัวอย่างเช่นในอูบุนตูมีแพคเกจที่มีpostgresql-client-9.4 psql
dezso

@dezso ดังนั้นหากฉันถอนการติดตั้ง psql 8.4 และไปที่ 9.4 ฉันจะสูญเสียฐานข้อมูลเก่าของฉันหรือไม่
อเล็กซ์ Jolig

3
หากคุณทิ้งของพวกเขาแล้วไม่ อย่างไรก็ตามคุณควรมีการสำรองข้อมูลปกติที่คุณทดสอบว่าสามารถกู้คืนได้ดังนั้นจึงไม่มีปัญหาใด ๆ นอกจากนี้หากคุณเลือกที่จะใช้pg_upgradeมันจะเก็บ DB ของคุณ - แต่การสำรองข้อมูลก็เป็นสิ่งที่จำเป็นในกรณีนี้เช่นกัน
dezso

" How can I backup my old databases if" - ไม่มีถ้า ฐานข้อมูลของคุณเกือบจะแน่นอนจะสมบูรณ์ดีหลังจากการปรับรุ่น แต่คุณควรเสมอมีความสดใหม่ (ทดสอบกว่า) การสำรองข้อมูลเมื่อทำงานเหมือนอยู่แล้วนี้ในกรณีที่เกิดปัญหาที่ไม่คาดคิด (ถือว่าเลวร้ายที่สุด: ตัดไฟหรือวิธีการส่วนความผิดฮาร์ดแวร์อื่น ๆ อาจจะออกจาก คุณอยู่ในตำแหน่งที่ยากที่จะย้อนกลับหรือส่งต่อจาก) คุณอาจไม่จำเป็นต้องทำการสำรองข้อมูลเพิ่มเติมทั้งนี้ขึ้นอยู่กับแผนสำรองข้อมูลปกติของคุณ
David Spillett

คำตอบ:


25

นี่คือวิธีที่ฉันแก้ปัญหาของฉัน

อัพเกรด Postgresql 8.4 เป็น 9.4 ใน Centos

 1. Yum Install PG9.4
 2. wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
 3. yum install pgdg-redhat94-9.4-1.noarch.rpm
 4. yum install postgresql94-server
 5. service postgresql-9.4 initdb
 6. chkconfig postgresql-9.4 on

สำรองข้อมูล

 7. su - postgres

 8. pg_dumpall > dump.sql

กู้คืนข้อมูล

 9. service postgresql stop

 10. service postgresql-9.4 start

 11. su - postgres

 12. psql < dump.sql

กำหนดค่าการเข้าถึงเครือข่าย

vi /var/lib/pgsql/9.4/data/postgresql.conf

 1. listen_addresses = '*'
 2. port = 5432

/var/lib/pgsql/9.4/data/pg_hba.conf

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
host    all         all         130.51.79.0/24        md5
host    all         all         10.210.29.0/24        md5
# IPv6 local connections:
host    all         all         ::1/128               ident

ลบ PG8.4

 1. yum remove postgresql
 2. ln -s /usr/pgsql-9.4/bin/psql /usr/local/bin/psql

3
ฉันไม่แน่ใจว่าทำไมคุณปฏิเสธการแก้ไขของฉันว่า "เป็นอันตรายต่อการอ่าน" จริง ๆ แล้วมันทำให้คำสั่งง่ายขึ้นในการคัดลอก
nhahtdh

1
ฉันเพิ่งอัพเกรดจาก 9.2 เป็น 9.6 โดยใช้วิธีนี้และใช้งานได้ ขอบคุณมาก!
EisenHeim

ฉันคิดว่ามันเป็นไปไม่ได้ที่จะใช้ pgdump เพื่อย้ายฐานข้อมูลด้วยเทราไบต์ของข้อมูล มีวิธีอื่นที่จะทำเช่นนั้น?
deFreitas

สำหรับคำสั่งแรก "Yum Install PG9.4" นั่นคือการใช้อักษรตัวพิมพ์ใหญ่ที่เหมาะสมสำหรับทุกสิ่งใช่ไหม
เดฟ

1
@deFreitas ฉันช้าไปหน่อย แต่คุณสามารถใช้pg_upgradeถ้าอัพเกรดจาก> = 8.4 และถ้าคุณใช้เซิร์ฟเวอร์เดียวกัน pg_upgradeมีประโยชน์ในกรณีนี้และเร็วกว่าจริง ๆ : บน Ubuntu 18 ฉันใช้เวลาน้อยลงpg_upgradeกว่าการpg_dumpกู้คืนฐานข้อมูล 1GB ข้อเสียคือคุณต้องติดตั้งและรัน 2 postgres ในเครื่องเดียวกัน (ฟังพอร์ตต่าง ๆ แน่นอน)
EAmez

3

service postgresql-9.4initdb ไม่ทำงานสำหรับฉันฉันต้องใช้sudo /usr/pgsql-9.4/bin/postgresql94-setup initdb(ดูที่นี่ )

ขอบคุณสำหรับคำแนะนำที่ดีฉันสามารถอัปเดตจาก 9.2 เป็น 9.4 โดยไม่มีปัญหาใด ๆ แม้ว่าฉันจะต้องกำหนดค่าpg_hba.confไฟล์ของฉันใหม่นั่นเป็นเรื่องเล็กน้อย


1

ดีกว่าการลิงก์ไบนารี postgresql94 psql ไบนารีไปยัง / usr / (local /) เดียวคือการใช้ระบบทางเลือก:

cd /etc/alternatives/
ls pgsql-* -1 | xargs -L 1 alternatives --auto

ซึ่งจะสร้างลิงค์ของไบนารี, แมน, confs, ... จาก postgresql94 ไปยังไดเรกทอรีเริ่มต้นสำหรับ CentOS

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