"pg_restore -F c" исправить для поврежденного файла пользовательского формата резервной копии? - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть файл дампа пользовательского формата pg, созданный кем-то другим. У меня нет подробностей о процессе дампа.

файл mr.dump mr.dump: setuid setgid Дамп пользовательской базы данных PostgreSQL - v1.12-0

Когда я пытаюсь запустить pg_restore, я получаю недостаточно памяти

Некоторые исследования показывают, что это связано с повреждением данных в сжатом разделе.

Я сгенерировал файл оглавления и закомментировал загрузку данных для таблицы, в которой произошла ошибка. Это проходит за исходную ошибку, но не на другой таблице. После работы со всеми таблицами, в которых есть ошибки, я могу выполнить восстановление без пропущенных таблиц. Ошибки не все одинаковые. Я тоже вижу эти ошибки

pg_restore: [compress_io] не удалось распаковать данные: неверный тип блока

pg_restore: [compress_io] не может распаковать данные: недопустимая длина сохраненного блока

Я вижу, что есть утилиты для восстановления поврежденных сжатых данных. Можно ли вытащить поврежденные участки и починить их?

Могут ли мои проблемы быть вызваны различиями в версии PG или библиотеках сжатия ОС?

Я не знаю конфигурацию, где произошел дамп, но я получаю те же ошибки, пытаясь восстановить:

PostgreSQL 9.0.22 на x86_64-unknown-linux-gnu, скомпилирован GCC gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11), 64-битный

и

PostgreSQL 10.7 на x86_64-pc-linux-gnu, скомпилированный gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-битный

Любые предложения приветствуются.

...