Postgres ปัญหาการอัปเกรดด้วย pg_upgrade

Oct 02 2020

ฉันพยายามอัปเกรด 9.5.5 เป็น 12.3 โดยใช้ pg_uprade ได้รับข้อผิดพลาดต่อไปนี้

ขนาดเซ็กเมนต์ความสัมพันธ์สูงสุด pg_controldata เก่าและใหม่ไม่ถูกต้องหรือไม่ตรงกัน

9.5.5

บล็อกต่อส่วนของความสัมพันธ์ขนาดใหญ่: 8388608

12.3

บล็อกต่อส่วนของความสัมพันธ์ขนาดใหญ่: 131072

8388608 บล็อกเทียบเท่ากับ 64 GB

ฉันคอมไพล์เวอร์ชัน 12.3 ใหม่โดยใช้ตัวเลือกต่อไปนี้

./configure --prefix = / opt / pgsql / PostgreSQL-12 - พร้อม-segsize = 64

pg_controldata เอาต์พุต 9.5.5

pg_control version number:            942
Catalog version number:               201510051
Database system identifier:           6307574991682851055
Database cluster state:               shut down
pg_control last modified:             Thu 01 Oct 2020 07:15:50 PM EDT
Latest checkpoint location:           2FB/7C000028
Prior checkpoint location:            2FB/78000098
Latest checkpoint's REDO location:    2FB/7C000028
Latest checkpoint's REDO WAL file:    00000001000002FB0000001F
Latest checkpoint's TimeLineID:       1
Latest checkpoint's PrevTimeLineID:   1
Latest checkpoint's full_page_writes: on
Latest checkpoint's NextXID:          0/130082037
Latest checkpoint's NextOID:          182620
Latest checkpoint's NextMultiXactId:  1
Latest checkpoint's NextMultiOffset:  0
Latest checkpoint's oldestXID:        1741
Latest checkpoint's oldestXID's DB:   1
Latest checkpoint's oldestActiveXID:  0
Latest checkpoint's oldestMultiXid:   1
Latest checkpoint's oldestMulti's DB: 1
Latest checkpoint's oldestCommitTsXid:0
Latest checkpoint's newestCommitTsXid:0
Time of latest checkpoint:            Thu 01 Oct 2020 07:15:50 PM EDT
Fake LSN counter for unlogged rels:   0/1
Minimum recovery ending location:     0/0
Min recovery ending loc's timeline:   0
Backup start location:                0/0
Backup end location:                  0/0
End-of-backup record required:        no
wal_level setting:                    hot_standby
wal_log_hints setting:                off
max_connections setting:              1000
max_worker_processes setting:         8
max_prepared_xacts setting:           0
max_locks_per_xact setting:           64
track_commit_timestamp setting:       off
Maximum data alignment:               8
Database block size:                  8192
Blocks per segment of large relation: 8388608
WAL block size:                       8192
Bytes per WAL segment:                67108864
Maximum length of identifiers:        64
Maximum columns in an index:          32
Maximum size of a TOAST chunk:        1996
Size of a large-object chunk:         2048
Date/time type storage:               64-bit integers
Float4 argument passing:              by value
Float8 argument passing:              by value
Data page checksum version:           0

pg_controldata เอาต์พุต 12.3

pg_control version number:            942
Catalog version number:               201510051
Database system identifier:           6307574991682851055
Database cluster state:               shut down
pg_control last modified:             Thu 01 Oct 2020 07:15:50 PM EDT
Latest checkpoint location:           2FB/7C000028
Prior checkpoint location:            2FB/78000098
Latest checkpoint's REDO location:    2FB/7C000028
Latest checkpoint's REDO WAL file:    00000001000002FB0000001F
Latest checkpoint's TimeLineID:       1
Latest checkpoint's PrevTimeLineID:   1
Latest checkpoint's full_page_writes: on
Latest checkpoint's NextXID:          0/130082037
Latest checkpoint's NextOID:          182620
Latest checkpoint's NextMultiXactId:  1
Latest checkpoint's NextMultiOffset:  0
Latest checkpoint's oldestXID:        1741
Latest checkpoint's oldestXID's DB:   1
Latest checkpoint's oldestActiveXID:  0
Latest checkpoint's oldestMultiXid:   1
Latest checkpoint's oldestMulti's DB: 1
Latest checkpoint's oldestCommitTsXid:0
Latest checkpoint's newestCommitTsXid:0
Time of latest checkpoint:            Thu 01 Oct 2020 07:15:50 PM EDT
Fake LSN counter for unlogged rels:   0/1
Minimum recovery ending location:     0/0
Min recovery ending loc's timeline:   0
Backup start location:                0/0
Backup end location:                  0/0
End-of-backup record required:        no
wal_level setting:                    hot_standby
wal_log_hints setting:                off
max_connections setting:              1000
max_worker_processes setting:         8
max_prepared_xacts setting:           0
max_locks_per_xact setting:           64
track_commit_timestamp setting:       off
Maximum data alignment:               8
Database block size:                  8192
Blocks per segment of large relation: 8388608
WAL block size:                       8192
Bytes per WAL segment:                67108864
Maximum length of identifiers:        64
Maximum columns in an index:          32
Maximum size of a TOAST chunk:        1996
Size of a large-object chunk:         2048
Date/time type storage:               64-bit integers
Float4 argument passing:              by value
Float8 argument passing:              by value
Data page checksum version:           0 

และรัน pg_upgrade อีกครั้งและได้รับข้อผิดพลาดเดียวกันกับด้านบน ฉันพลาดอะไรไปที่นี่?

คำตอบ

1 LaurenzAlbe Oct 02 2020 at 20:50

ดูเหมือนว่าคุณจะโพสต์pg_controldataผลลัพธ์สำหรับ PostgreSQL 9.5 สองครั้ง

อย่างไรก็ตามคุณจะต้องกำหนดค่า PostgreSQL v12 ด้วยขนาดเซ็กเมนต์ตารางที่ไม่ได้มาตรฐาน:

./configure --prefix=/opt/pgsql/PostgreSQL-12 --with-segsize=64

นอกจากนี้ในระหว่างinitdbนั้นคุณจะต้องระบุขนาดกลุ่ม WAL ที่ไม่ได้มาตรฐาน:

initdb ... --wal-segsize=64 /path/to/datadir

จากนั้นpg_upgradeควรประสบความสำเร็จ (หากสถานที่และอื่น ๆ ตรงกัน)

sharadov Oct 08 2020 at 02:04

หลังจากการทดสอบหลายครั้งฉันพบปัญหา ถ้าฉันเรียกใช้การกำหนดค่า - with-segsize = 64 บน RHEL 6.10 ขนาดเซ็กเมนต์จะไม่ถูกตั้งค่าเป็น 64 GB แต่ถ้าฉันรันบน RHEL 7.8 ก็จะ ดูเหมือนว่ามีข้อผิดพลาดกับ RHEL 6.10