Restore fails if using multiple threads and database is dumpedthrough pipe

Поиск
Список
Период
Сортировка
Искать
От
Joni Ruuskanen
Тема
Restore fails if using multiple threads and database is dumpedthrough pipe
Дата
Msg-id
d940b5c3b4bb00714662c0dd82d4a7841eae3586.camel@likeit.fi
Список
Дерево обсуждения
Restore fails if using multiple threads and database is dumpedthrough pipe Joni Ruuskanen <joni.ruuskanen@likeit.fi>
Re: Restore fails if using multiple threads and database is dumped through pipe Tom Lane <tgl@sss.pgh.pa.us>
Hi,

After upgrading from Postgresql 11 to 12 I noticed pg_restore fails if -j / jobs parameter is specified and database is dumped through pipe.
This doesn't happen if dump is saved through redirect (for example: > file.dmp) or file parameter (-f).
Is this intended behaviour?


Some examples:

Dump to file: pg_dump -Fc -f dumptest-file.dmp dumptest
Restore: pg_restore -j4 -d dumptest -O -Fc --role=tomcat dumptest-file.dmp
No errors

Dump to file via stdout: pg_dump -Fc dumptest > dumptest-stdout.dmp 
Restore: pg_restore -j4 -d dumptest -O -Fc --role=tomcat dumptest-stdout.dmp
No errors

Dump to file via pipe: pg_dump -Fc dumptest | tee dumptest-pipe.dmp >/dev/null
Restore: pg_restore -j4 -d dumptest -O -Fc --role=tomcat dumptest-pipe.dmp
pg_restore: error: could not find block ID 5648 in archive -- possibly due to out-of-order restore request, which cannot be handled due to lack of data offsets in archive
pg_restore: error: a worker process died unexpectedly

Piped dump is successfully restored if using only 1 thread/job.



Regards,
Joni Ruuskanen



В списке pgsql-admin по дате отправления
От: Laurenz Albe
Дата:
От: Tom Lane
Дата:
FAQ