pg_restore восстанавливает с ошибками

Добрый день.
Стояла RADHAT5 что-то случилось с фйаловой системой. Пришел человек и установил SLACKWARE13 перенес postgres и сервер 1с. Запустил это все дело и ушел. Теперь нужно настроить автоархивирование (pg_dump+cron).
коммандой pg_dump -U postgres -Fc -Z9 -f BACKNAME DBNAME создаются дампы, ошибок в логах ни каких нет. Попыталcя восстановить pg_restore -U postgres -Fc -c -d DBNAME BACKNAME - база восстанавливается с ошибками. Пробовал разные варианты восстанавливал в только-что созданную постгрес БД, из pgAdmin, из 1С, из оснастки управления сервером 1С, результат плачевный. Сделал дамп в sql, так же восстановление проходит с ошибками - восстановленная БД не рабочая. Куда капнуть даже не предполагаю... Подскажите пожалуйста, умные люди.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Сначала

Сначала прочитайте:
http://postgresql.ru.net/manual/backup.html
далее, если после проработки материала будут ошибки - покажите какие, тогда и будем думать

Это уже прочитано... Привожу

Это уже прочитано...
Привожу кусок лога при восстановлении


pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error FROM TOC entry 75; 1255 11467224 FUNCTION mvarchar_send(mvarchar) postgres
pg_restore: [archiver (db)] could NOT execute query: ERROR:  тип "mvarchar" не существует
    Command was: DROP FUNCTION public.mvarchar_send(mvarchar);
pg_restore: dropping FUNCTION mvarchar_recv(internal)
pg_restore: [archiver (db)] Error FROM TOC entry 76; 1255 11467225 FUNCTION mvarchar_recv(internal) postgres
pg_restore: [archiver (db)] could NOT execute query: ERROR:  функция public.mvarchar_recv(internal) не существует
    Command was: DROP FUNCTION public.mvarchar_recv(internal);
pg_restore: dropping FUNCTION mvarchar_out(mvarchar)
pg_restore: [archiver (db)] Error FROM TOC entry 74; 1255 11467223 FUNCTION mvarchar_out(mvarchar) postgres
pg_restore: [archiver (db)] could NOT execute query: ERROR:  тип "mvarchar" не существует
    Command was: DROP FUNCTION public.mvarchar_out(mvarchar);
pg_restore: dropping FUNCTION mvarchar_in(cstring)
pg_restore: [archiver (db)] Error FROM TOC entry 73; 1255 11467222 FUNCTION mvarchar_in(cstring) postgres
pg_restore: [archiver (db)] could NOT execute query: ERROR:  функция public.mvarchar_in(cstring) не существует
    Command was: DROP FUNCTION public.mvarchar_in(cstring);
pg_restore: dropping SHELL TYPE mvarchar
pg_restore: dropping TYPE mchar
pg_restore: dropping FUNCTION mchartypmod_out(integer)
pg_restore: dropping FUNCTION mchartypmod_in(cstring[])
pg_restore: dropping FUNCTION mchar_send(mchar)
pg_restore: [archiver (db)] Error FROM TOC entry 70; 1255 11467216 FUNCTION mchar_send(mchar) postgres
pg_restore: [archiver (db)] could NOT execute query: ERROR:  тип "mchar" не существует
    Command was: DROP FUNCTION public.mchar_send(mchar);
pg_restore: dropping FUNCTION mchar_recv(internal)
pg_restore: [archiver (db)] Error FROM TOC entry 71; 1255 11467217 FUNCTION mchar_recv(internal) postgres
pg_restore: [archiver (db)] could NOT execute query: ERROR:  функция public.mchar_recv(internal) не существует
    Command was: DROP FUNCTION public.mchar_recv(internal);
pg_restore: dropping FUNCTION mchar_out(mchar)
pg_restore: [archiver (db)] Error FROM TOC entry 69; 1255 11467215 FUNCTION mchar_out(mchar) postgres
pg_restore: [archiver (db)] could NOT execute query: ERROR:  тип "mchar" не существует
    Command was: DROP FUNCTION public.mchar_out(mchar);
pg_restore: dropping FUNCTION mchar_in(cstring)
pg_restore: [archiver (db)] Error FROM TOC entry 68; 1255 11467214 FUNCTION mchar_in(cstring) postgres
pg_restore: [archiver (db)] could NOT execute query: ERROR:  функция public.mchar_in(cstring) не существует
    Command was: DROP FUNCTION public.mchar_in(cstring);
pg_restore: dropping SHELL TYPE mchar
pg_restore: dropping PROCEDURAL LANGUAGE plpgsql
pg_restore: dropping COMMENT SCHEMA public
pg_restore: dropping SCHEMA public
pg_restore: [archiver (db)] Error FROM TOC entry 3; 2615 2200 SCHEMA public postgres
pg_restore: [archiver (db)] could NOT execute query: ERROR:  нельзя удалить схема public по причине наличия зависимых объектов
HINT:  Используйте DROP ... CASCADE чтобы также удалить зависимые объекты.
    Command was: DROP SCHEMA public;
pg_restore: creating SCHEMA public
pg_restore: [archiver (db)] could NOT execute query: ERROR:  схема "public" уже существует
    Command was: CREATE SCHEMA public;

в итоге имеем не рабочую базу.

Давайте угадаю с одного

Давайте угадаю с одного раза.
Восстанавливаете вы не в старую базу, а в новую, верно?
Кроме того у вас не стандартный PostgtreSQL, а который для 1C - точно?

В общем два рецепта есть как победить проблему:
1. Создавайте новую БД (в которую делаете восстановление) не сами, а с помощью 1C
2. Если создаёте новую БД сами, попробуйте создавать с помощью шаблона, в качестве которого используйте рабочую БД, созданную 1C

Совершенно верно!пункт 1

Совершенно верно!
пункт 1 пробовал. Этот лог как раз таки с этого варианта, как ни странно...
пункт2 сечас попробую.
попробовал вариант 2 при восстановлении 10 ошибок... 1С сообщает что база не обнаружена...

Тут такая штука. Патченый для

Тут такая штука. Патченый для 1C PostgreSQL содержит в себе библиотеку для поддержки специального типа данных mchar (mvchar, mvachar). Но если вы создаёте БД руками, этот тип данных в БД не прогружается как и его обвязка (CAST'ы и прочее). Поэтому при восстановлении pg_restore выдаёт ошибки - там используется данный тип, а как с ним работать СУБД не знает.

Т.е. чтобы заработало, надо прогрузить либу в БД, создав данный тип и обвязку к нему. Как сделать это вручную, я к сожалению, не знаю. Но вот что я бы сделал. Включил бы в PostgreSQL логгирование запросов к базе, затем бы создал БД из 1C, затем выключил логгирование и посмотрел какие команды при создании БД попали в лог, относящиеся к mchar. Тогда можно было бы создать пустую БД самому и накатить эти команды, после чего всё должно заработать.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023