URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1182
[ Назад ]

Исходное сообщение
"Ошибка при востановлении дампа в Postgres"

Отправлено shricke , 15-Дек-02 18:49 
Дано:
Есть дамп базы данных в файле с именем database_dump.tar, размер файла около 600 мегабайт.
Требуется:
Необходимо востановить дамп в базу данных с именем database_name. База данных database_name создана и пустая.

Ранее подобная задача решалась запуском команды
/usr/local/pgsql/bin/pg_restore -v -u -d database_name database_dump.tar
и проблем не возникало.

Что было сделано:
Запущена команда:
/usr/local/pgsql/bin/pg_restore -v -u -d database_name database_dump.tar

При выполнении команды вадавались сообщения, что:
создаются таблицы, индексы, секвенсы, после чего запустилось востановление блобов.
При выполнении востановления блобов произошла остановка процесса pg_restore с сообщением "Segmentation fault (core dumped)".
Востановление производилось на Postgres версии 7.1.3 работающем под FreeBSD. Памяти 128М + добавили (из-за подозрения на нехватку памяти) 64М, и того 198М. swap 127М.

Востановление пробовал на 2-х машинах, но везде один и тот же результат.
Замечание: свободной памяти оставалось при завершении востановления дампа в пределах 600 мегабайт.

В чем может быть ошибка и как ее можно устранить?
Заранее благодарен.


Содержание

Сообщения в этом обсуждении
"RE: Ошибка при востановлении дампа в Postgres"
Отправлено konst , 15-Дек-02 19:46 
>>>/usr/local/pgsql/bin/pg_restore -v -u -d database_name database_dump.tar

Может проблема с целостностью tar-архива?

Из man pg_restore:
NOTES
       The limitations of pg_restore are detailed below.

       o When restoring data to a table, pg_restore emits queries
         to disable triggers on user tables before inserting  the
         data then emits queries to re-enable them after the data
         has been inserted. If the restore is stopped in the mid-
         dle, the system catalogs may be left in the wrong state.

       o pg_restore will not restore BLOBs for a single table. If
         an  archive  contains  BLOBs,  then  all  BLOBs  will be
         restored.


"RE: Ошибка при востановлении дампа в Postgres"
Отправлено shricke , 16-Дек-02 10:30 
Могу добавить дополнительно, что
a) Создание дампа производилось на другой машине (назовем ее "клиентской"), т.е. не на тех 2-х, на которых велось востановление дампа. Конфигурации Postgres одинаковая на трех машинах , а вот аппаратные требования "клиентской" несколько выше: 512М оперативной памяти, swap 1024М. Ранее дамп брался с "клиентской" и без проблем востанавливалось.
б) Ранее база была меньше на 50М-100М.
И еще, во время выполнения:
1) top показывал, что ресурсов хватает.
2) pstat -T показывал, что swap занят на 1М.

"RE: Ошибка при востановлении дампа в Postgres"
Отправлено shricke , 16-Дек-02 18:03 
Поставил Postgres 7.3 и дамп востановился.
Осталось загадкой, почему на Postgres 7.1.3 не мог востановить дамп.
Народ говорит, что проблема возможно из-за того, что постгрес на каждый блоб открывает файл, т.е. проблемы в количестве одновременно открытых файлов.