Обсуждение: Need help to debug ERROR: MultiXactId 808530957 has not been createdyet -- apparent

Поиск
Список
Период
Сортировка
Hello,

Getting "MultiXactId 808530957 has not been created yet -- apparent" error when trying to VACUUM FREEZE big table, about 263m rows. Normal VACUUM runs fine.
Also tried to recreate the table and there were no errors "create table my_table_copy as
  select * from my_table".

1.Is it data corruption problem?
2.how to diagnose the error and possibly fix?

System:
CentOS 7.6.1810
PostgreSQL v10.7

pg_controldata output:
Latest checkpoint's full_page_writes: on
Latest checkpoint's NextXID:          0:225518418
Latest checkpoint's NextOID:          13806623
Latest checkpoint's NextMultiXactId:  3568437
Latest checkpoint's NextMultiOffset:  3991593
Latest checkpoint's oldestXID:        79505602
Latest checkpoint's oldestXID's DB:   16400
Latest checkpoint's oldestActiveXID:  225518416
Latest checkpoint's oldestMultiXid:   1666087
Latest checkpoint's oldestMulti's DB: 13806
Latest checkpoint's oldestCommitTsXid:0
Latest checkpoint's newestCommitTsXid:0
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:                    replica
wal_log_hints setting:                on
max_connections setting:              100
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: 131072
WAL block size:                       8192
Bytes per WAL segment:                16777216
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

Re: Need help to debug ERROR: MultiXactId 808530957 has not beencreated yet -- apparent

От
Alvaro Herrera
Дата:
On 2019-Jun-28, Jenn wrote:

> Getting "MultiXactId 808530957 has not been created yet -- apparent" error
> when trying to VACUUM FREEZE big table, about 263m rows. Normal VACUUM runs
> fine.
> Also tried to recreate the table and there were no errors "create table
> my_table_copy as
>   select * from my_table".
> 
> 1.Is it data corruption problem?
> 2.how to diagnose the error and possibly fix?

Yeah, it seems like data corruption -- that multixact value is not
anywhere near a reasonable range.  Can you find out what page it is
complaining about, and get a heap_page_items() from that page?

instructions for part 1:
1. in command line: gdb -p <pid>, where PID comes from
   "select pg_backend_pid()" in psql
2. in gdb, do "break errfinish", then "cont".  It should wedge.
3. in psql, execute the query that throws the error
4. gdb becomes alive.  Do "bt full".  A page number is displayed
somewhere in the resulting stack trace.  If you don't know where to
look, paste the output here.

part 2:
1. create extension pageinspect
2. select * from heap_page_items(get_raw_page('yourtable'::regclass, <page number>));
3. paste output here

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services