Backup และ Restore ฐานข้อมูล Postgres แบบต่างเวอร์ชั่น
PostgresqlBackup
อัพเดทล่าสุด 30 ม.ค. 67
ย้าย Server ทีก็มีปัญหาตามมาทุกที

พอย้าย Server ใหม่ ก็อยากใช้ ฐานข้อมูล version ล่าสุดไปเลยใช่มั้ยล่ะ ปัญหาก็คือ มันดันใช้ pg_dump -> pg_restore ตรงๆ เลยไม่ได้ (โดนด่ากลับมา)

pg_dump: error: aborting because of server version mismatch
pg_dump: detail: server version: 16.1; pg_dump version: 15.3

แค่เอาออกมายังไม่ได้เลย (ทำที่ server ใหม่) , แถม พอเอาออกจาก server เดิมได้ ก็เอาเข้าไม่ได้อยู่ดี

pg_restore: error: unsupported version (1.15) in file header

สรุปคือจบ ใช้วิธีนี้ไม่ได้

แก้ปัญหาด้วยการ เอาออกมาเป็น Text SQL ซะเลย

ด้วยคำสั่งประมาณนี้แทน

pg_dump -v -c --dbname=postgresql://user:password@ip:port/databasename \
    -n schema_name -t schema_name.table_name > file_backup.out

จุดสำคัญ option -v -c

ซึ่งไฟล์ที่ได้มา จะใหญ่เบอเร่อเลย เพราะไม่มีการบีบอัด แต่ก็นั่นล่ะเพื่อให้มันใช้ได้ ก็ต้องยอมๆ ไป

ตอนเอาเข้า ก็ใช้ pg_restore ไม่ได้ ละ

อันนี้ต้องเปลี่ยนไปใช้คำสั่ง psql แทนเลย เพราะ เป็นการรันคำสั่ง SQL ธรรมดาจาก text file

psql --dbname=postgresql://user:password@ip:port/databasename < file_backup.out
Beta Version v23.12.4 : ขออภัยเว็บกำลังก่อสร้าง (อีกแล้ว) แต่คราวนี้กำลังสร้างจริงจังละ