Проблемы с обновлением Postgres с pg_upgrade
Я пытаюсь обновить 9.5.5 до 12.3 с помощью pg_uprade, получил следующую ошибку
Старый и новый максимальные размеры сегмента отношения pg_controldata недействительны или не совпадают
9.5.5
Блоки на сегмент большого отношения: 8388608
12,3
Блоки на сегмент большого отношения: 131072
8388608 блоков эквивалентны 64 ГБ.
Я перекомпилировал версию 12.3, используя следующие параметры
./configure --prefix = / opt / pgsql / PostgreSQL-12 --with-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 и получил ту же ошибку, что и выше. Что мне здесь не хватает?
Ответы
Кажется, вы 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должно получиться успешно (если соответствие языку и т. Д.).
Итак, после многочисленных тестов я обнаружил проблему. Если я запустил configure --with-segsize = 64 на RHEL 6.10, размер сегмента не будет установлен на 64 ГБ, но если я запустил его на RHEL 7.8, это произойдет. Похоже на ошибку в RHEL 6.10.