ฉันจะย้ายข้อมูล postgres ของฉันจาก 8.4 เป็น 9.1 ได้อย่างไร


27

ฉันได้อัพเกรดเครื่องพัฒนาอูบุนตูจาก 11.04 เป็น 11.10 ในกระบวนการ postgres ของฉันได้รับการอัพเกรดจาก 8.4 เป็น 9.1

แต่ฉันดูเหมือนจะสูญเสียข้อมูลทั้งหมดของฉัน ถ้าฉันมองฉันจะเห็นว่าข้อมูลของฉัน 8.4 อยู่ในโฟลเดอร์และฐานข้อมูลใหม่ของฉันอยู่ใน/var/lib/postgres/8.4/main/var/lib/postgres/9.1/main

วิธีที่ดีที่สุดในการย้ายข้อมูลของฉันไปเป็นเวอร์ชันใหม่คืออะไร ฉันสามารถคัดลอกไฟล์ได้หรือไม่

คำตอบ:


27
su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

ตอนแรกสิ่งนี้ไม่ได้ผลสำหรับฉันด้วยเหตุผลสองประการ ประการแรก postgresql-8.4 ยังไม่ได้ทำการถอนการติดตั้งในบางจุดดังนั้นฉันต้องติดตั้งใหม่:

sudo apt-get install postgresql-8.4

จากนั้นฉันต้องไปที่ 8.4 postgresql.confและเปลี่ยนmax_connectionsเป็น 10 จากนั้นก็ใช้ได้ คุณควรจะหาไฟล์ conf ที่/etc/postgresql/8.4/main/postgresql.conf


บนคอมพิวเตอร์หนึ่งเครื่องสามบรรทัดบนสุดเพียงพอ ที่อื่นฉันต้องติดตั้ง 8.4 เพื่อให้มันทำงานตามที่คุณพูด ขอขอบคุณสำหรับความช่วยเหลือของคุณ.
nathanvda

ควรสังเกตว่าสคริปต์ "pg_upgradecluster" ไม่ได้จัดการกับกรณีที่ต้องระบุผู้ใช้ฐานข้อมูล (ถ้าเป็นเช่นนั้นฉันแน่ใจว่าจะไม่สามารถหาวิธีจัดหาได้)
Pointy

ถ้าคุณได้รับError: specified cluster is not runningเมื่อพยายามอีกครั้งหลังจากที่มีการเปลี่ยนแปลงการใช้งานmax_connections pg_ctlcluster 8.4 main start
Skippy le Grand Gourou

การลดmax_connectionsไม่ได้ผลสำหรับฉัน ในฐานะที่เป็นโซลูชันทางเลือกที่ได้รับจากข้อความแสดงข้อผิดพลาดฉันลดลงเหลือshared_buffers20MB (จาก 200MB) ซึ่งใช้งานได้สำหรับฉัน
Serrano

4

หลังจากอัปเกรดเป็น 11.10 แล้ว PostgreSQL 9.1 ได้รับการติดตั้งแล้ว แต่เวอร์ชันที่รันอยู่คือ 8.4

ฉันได้พยายาม:

su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

มันรายงานข้อผิดพลาด:

Stopping old cluster...
pg_ctl: servidor não desligou
Error: Could not stop old cluster

ดังนั้นในหน้าต่างอื่น:

$ sudo service postgresql-8.4 stop
 * Stopping PostgreSQL 8.4 database server                               [ OK ] 
jgr@cagliari:~$ sudo service postgresql-8.4 start
 * Starting PostgreSQL 8.4 database server                               [ OK ] 

แล้วอีกครั้ง:

pg_upgradecluster 8.4 main

มีการรายงานข้อผิดพลาดที่เกี่ยวข้องกับ pgRouting ใช้เวลาสักครู่ (ตลอดทั้งคืน!) แต่หลังจากนั้นฐานข้อมูลได้รับการอัพเกรดเป็น 9.1 PostGIS ได้รับการอัพเกรดเป็น 1.5.3


FYI ฉันพบว่าการทำ "du -hs" ในไดเรกทอรี /var/lib/postgresql/9.1 แล้วเปรียบเทียบกับผลลัพธ์ของคำสั่งเดียวกันใน /var/lib/postgresql/8.4/ ฉันพบว่าฉันสามารถทำได้ วัดจำนวนที่ถูกคัดลอกไปตามขนาดเอาต์พุตจากคำสั่งนั้น
โจ J

ฉันรู้ว่านี่ไม่ใช่คำถามที่กำลังกล่าวถึง แต่ฉันพบปัญหาเดียวกันกับที่คุณอธิบาย เหตุผลที่ pg_upgradecluster ไม่สามารถหยุดคลัสเตอร์เก่าได้เนื่องจากอินสแตนซ์ Tomcat ใช้การเชื่อมต่อและ Postgres ไม่สามารถปิดได้ หวังว่านี่จะช่วยใครซักคน
bplayer

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