Дано:
Есть дамп базы данных в файле с именем 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 мегабайт.В чем может быть ошибка и как ее можно устранить?
Заранее благодарен.
>>>/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.
Могу добавить дополнительно, что
a) Создание дампа производилось на другой машине (назовем ее "клиентской"), т.е. не на тех 2-х, на которых велось востановление дампа. Конфигурации Postgres одинаковая на трех машинах , а вот аппаратные требования "клиентской" несколько выше: 512М оперативной памяти, swap 1024М. Ранее дамп брался с "клиентской" и без проблем востанавливалось.
б) Ранее база была меньше на 50М-100М.
И еще, во время выполнения:
1) top показывал, что ресурсов хватает.
2) pstat -T показывал, что swap занят на 1М.
Поставил Postgres 7.3 и дамп востановился.
Осталось загадкой, почему на Postgres 7.1.3 не мог востановить дамп.
Народ говорит, что проблема возможно из-за того, что постгрес на каждый блоб открывает файл, т.е. проблемы в количестве одновременно открытых файлов.