Postgres-Upgrade-Probleme mit pg_upgrade

Oct 02 2020

Ich versuche, 9.5.5 mit pg_uprade auf 12.3 zu aktualisieren. Ich habe den folgenden Fehler erhalten

Alte und neue pg_controldata maximale Beziehungssegmentgrößen sind ungültig oder stimmen nicht überein

9.5.5

Blöcke pro Segment mit großer Beziehung: 8388608

12.3

Blöcke pro Segment großer Beziehung: 131072

8388608 Blöcke entsprechen 64 GB.

Ich habe die 12.3-Version mit den folgenden Optionen neu kompiliert

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

pg_controldata Ausgabe 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 Ausgabe 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 

Führen Sie pg_upgrade erneut aus und erhalten Sie den gleichen Fehler wie oben. Was fehlt mir hier?

Antworten

1 LaurenzAlbe Oct 02 2020 at 20:50

Sie haben die pg_controldataAusgabe für PostgreSQL 9.5 anscheinend zweimal veröffentlicht.

Auf jeden Fall müssen Sie PostgreSQL v12 mit einer nicht standardmäßigen Tabellensegmentgröße konfigurieren:

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

Außerdem müssen Sie währenddessen initdbdie nicht standardmäßige WAL-Segmentgröße angeben:

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

Dann pg_upgradesollte es gelingen (wenn Gebietsschema usw. übereinstimmen).

sharadov Oct 08 2020 at 02:04

Nach zahlreichen Tests fand ich das Problem. Wenn ich die Konfiguration --with-segsize = 64 unter RHEL 6.10 ausführe, wird die Segmentgröße nicht auf 64 GB festgelegt, aber wenn ich sie unter RHEL 7.8 ausführe, ist dies der Fall. Scheint ein Fehler mit RHEL 6.10 zu sein.