Имя: Пароль:
IT
Админ
Восстановление базы 1с Postgress
0 Sergio-ps
 
17.09.12
19:09
Добрый вечер. на Win Server 2003 установлен сервер 1с, PostgreSQL.
Делаются резервные копии каждый день. Но столкнулся с проблемой. необходимо восстановить базу  на определенное число, а он при восстановлении выдает кучу ошибок на то что таблица существует, метод существует и тд , невозможно перезаписать. и в итоге Процесс вернул код выхода 1.
Соответсвенно в пустую базу он ничего не восстанавливает, она остается пустой. пробовал как создавать новую базу из управления серверами 1с, так и средствами postgres.
1 Sergio-ps
 
17.09.12
19:12
бэкап делается по команде
"C:\Program Files (x86)\PostgreSQL\8.4.3-3.1C\bin\pg_dump.exe" -i -h localhost -p 5432 -U postgres -Fc -b -f "F:\postgres_backup\%datetemp%.backup" Base
Восстанавливать пробовал из PgAdmin  и командой
"C:\Program Files (x86)\PostgreSQL\8.4.3-3.1C\bin\pg_restore.exe" -i -h localhost -U postgres -c -d BuhTemp "F:\postgres_backup\BUH\BUH_120803.backup"
2 глазковыколупыватель
 
17.09.12
19:37
Base сначала очистить надо. Или удалить, а потом - опять создать.
3 Ben_art
 
17.09.12
19:39
схему дропни или только таблицы
4 Sergio-ps
 
17.09.12
20:32
Я пустую базу создаю и в нее пытаюсь восстанавливать, наверно не имеет значения что у нее имя другое?
5 ansh15
 
17.09.12
21:51
(4) Не имеет.
Попробуйте без флага -с в созданную пустую базу. Сейчас проверял, с флагом -с (-c --clean Clean (drop) database objects before recreating them) выдает ошибки, без него нормально восстанавливает.
6 Sergio-ps
 
17.09.12
22:09
хорошо попробую.
Вот создал новую базу и в нее восстановил с помощью pgAdmin/ он по умолчанию сделал такой командой:
C:\Program Files (x86)\PostgreSQL\8.4.3-3.1C\bin\pg_restore.exe -i -h localhost -p 5432 -U postgres -d "BuhTemp" -v "F:\postgres_backup\BUH_120725.backup"

В итоге куча ошибок. и база не восстановлена, даже конфигуратор не открывается.
.....
pg_restore: connecting to database for restore
pg_restore: creating SCHEMA public
pg_restore: creating COMMENT SCHEMA public
pg_restore: creating PROCEDURAL LANGUAGE plpgsql
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 5256; 2612 16386 PROCEDURAL LANGUAGE plpgsql postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  language "plpgsql" already exists

Command was:
CREATE PROCEDURAL LANGUAGE plpgsql;
pg_restore: creating SHELL TYPE chkpass
pg_restore: [archiver (db)] Error from TOC entry 1230; 0 0 SHELL TYPE chkpass postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  type "chkpass" already exists
........
pg_restore: creating FUNCTION isnge(ean13, upc)
pg_restore: [archiver (db)] Error from TOC entry 391; 1255 17237 FUNCTION isnge(ean13, upc) postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  function "isnge" already exists with same argument types
   Command was: CREATE FUNCTION isnge(ean13, upc) RETURNS boolean
   LANGUAGE internal IMMUTABLE STRICT
   AS $$int8ge$$;
......
pg_restore: setting owner and privileges for INDEX byosname
pg_restore: setting owner and privileges for INDEX byrolesid
pg_restore: setting owner and privileges for INDEX byshow
WARNING: errors ignored on restore: 6866

Процесс вернул код выхода 1.
7 ansh15
 
17.09.12
22:54
А базу чем создаете? Из консоли администрирования 1С? Или в PgAdmin?
8 Sergio-ps
 
17.09.12
23:26
уже и тем и другим способом пробовал. Все равно не восстанавливает. причем пробовал уже и другой архив брать, тоже самое. может не правильная команда создания копии?
9 ansh15
 
18.09.12
10:17
Посомтри содержимое архива, вдруг он текстовый, блокнотом каким-нибудь.
Архив, созданный с флагом "-F c" начинается со слова PGDUMP, текстовый начинается со строк
--
-- PostgreSQL database dump
--
и дальше команды SQL. Можно попробовать явно задать custom формат в pg_restore "-F c". Кстати, у тебя в командной строке "-Fc", без пробела, может в Windows как-то влияет, в Linux без разницы.
10 Sergio-ps
 
18.09.12
11:54
Хорошо, попытаюсь посмотреть, уже 5 минут WordPad открывает.
Кстати, не могли бы выложить рабочую комбинацию команд архивации и восстановления. на будущее хотя бы поменять. потому как походу ни один архив не восстанавливается.
11 Sergio-ps
 
18.09.12
12:29
архив начинается с
PGDMP
потмо название базы, кодировка и наверное команды. правда все так висит, что даже скопировать оттуда не удается.
Кстакти вот например строка
2200 - public - SCHEMA  T CREATE SCHEMA public;
?I DROP SCHEMA public;
o postgres | false
странно как то, получается он сначала создает а потом удаляет?
12 Sergio-ps
 
18.09.12
12:36
и интересно что значит строчка
postgres | false? там много таких, или User1c | false. что то с пользователями связано
13 ansh15
 
18.09.12
12:36
Базу рукам попробуй создать, в командной строке на сервере. creаtedb.exe -U postgres testbuh1, например.
Потом pg_restore.exe -U postgres -d testbuh1 имя_архива.
14 Sergio-ps
 
18.09.12
13:55
создал пустую базу, почему то опять ругается на существующие элементы. и в самом конце вот что выдал:
pg_restore: [archiver (db)] COPY failed: ERROR:  out of memory
DETAIL:  Failed on request of size 536870912.
CONTEXT:  COPY config, line 9419: "e0666db2-45d6-49b4-a200-061c6ba7
-8696-411f-95a1-ef011fdf8da9    2012-03-28 16:49:37     2012-0..."
WARNING: errors ignored on restore: 1130

В итоге база не запускается. конфигуратор открывается но видит пустую конфигурацию
15 Sergio-ps
 
18.09.12
14:06
если только попробовать загрузить сначала в базу дтшник старый, а потом попробовать через постгрес восстановить только данные?
16 BigHarry
 
18.09.12
15:20
"COPY failed: ERROR:  out of memory" - проходили, вылечили только загрузкой дампа в постгри, установленный на линуксе, на виндовый постгря дамп упорно не хотел заливаться, вылезала "out of memory",  никакие манипуляции с конфигом не помогали.
17 BigHarry
 
18.09.12
15:22
А корень зла - бинарники, хранимые в БД, большие фотографии или pdf-ки...
18 Sergio-ps
 
18.09.12
15:56
Бухгалтерия предприятия. вроде нет файлов. если только документы.
19 Sergio-ps
 
18.09.12
15:58
а на виртуалке если поднять постгри, думаете поможет?
20 Sergio-ps
 
18.09.12
16:21
pg_restore: [archiver (db)] Error from TOC entry 13847; 0 361139 TABLE DATA config user1c
pg_restore: [archiver (db)] COPY failed: ERROR:  duplicate key value violates unique constraint "config_pkey"
CONTEXT:  COPY config, line 1: "d4a1f489-2fba-41f6-ab57-3986f22c7403    2012-03-28 16:50:37    2012-03-28 16:50:37    0    89    {\\277{\\177\\265\..."
pg_restore: restoring data for table "configsave"
pg_restore: restoring data for table "dbschema"
pg_restore: restoring data for table "files"
pg_restore: [archiver (db)] Error from TOC entry 13850; 0 377251 TABLE DATA files user1c
pg_restore: [archiver (db)] COPY failed: ERROR:  duplicate key value violates unique constraint "files_pkey"
CONTEXT:  COPY files, line 1: "c01b78f6-1525-41b1-9cc1-69e3da58d2ac.pfl    2010-12-30 10:15:16    2012-05-16 12:42:04    0    416    \\215\\207\\0..."
pg_restore: restoring data for table "params"
pg_restore: [archiver (db)] Error from TOC entry 13849; 0 377204 TABLE DATA params user1c
pg_restore: [archiver (db)] COPY failed: ERROR:  duplicate key value violates unique constraint "params_pkey"
CONTEXT:  COPY params, line 1: "locale.inf    2010-12-30 10:15:15    2010-12-30 10:15:15    0    36    \\357\\273\\277{"ru_RU",0,0,"",-1,"","","","..."
pg_restore: restoring data for table "v8users"
WARNING: errors ignored on restore: 600

Процесс вернул код выхода 1.

Это выдает при попытке "восстановить только данные " из pgAdmin в работоспособную бухгалтерию за июль
21 Sergio-ps
 
18.09.12
16:21
и соответственно новых данных не появляется
22 BigHarry
 
18.09.12
16:30
(19) Я на виртуалке не стал развертывать, ибо винда и железо было только 32 разрядное, просто на какой-то ближайшей рабочей станции установил линукс и слона.
Не знаю, может вам имеет смысл попробовать установить 64-битный постгри и там развернуть архив, если, канечно, есть где-то такая сборка с патчами 1С под винду...
23 alxbzm
 
18.09.12
16:46
Я бы посоветовал взять 9-й постгри и попробовать на нем (в том числе и утилиты pg_dump / pg_restore соответствующих версий)... Я тут неоднократно писал про чудеса 8.4.x. У меня сейчас крутится 9.1.2 от 1С - вроде полет нормальный - и с бэкапом, и с восстановлением.
24 Sergio-ps
 
18.09.12
17:41
поставил 9,1,2 постгри, пытаюсь туда восстановить. посмотрим
25 Sergio-ps
 
18.09.12
18:41
не помогло 9 постгри. Опять куча ошибок и база не открывается.
pg_restore: dropping SHELL TYPE ean13
pg_restore: dropping TYPE dblink_pkey_results
pg_restore: dropping COMMENT TYPE cube
pg_restore: dropping TYPE cube
pg_restore: dropping FUNCTION cube_out(cube)
pg_restore: [archiver (db)] Error from TOC entry 164; 1255 16855 FUNCTION cube_out(cube) postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  type "cube" does not exist
   Command was: DROP FUNCTION public.cube_out(cube);
...
pg_restore: setting owner and privileges for INDEX byshow
WARNING: errors ignored on restore: 5395

Процесс вернул код выхода 1.
26 BigHarry
 
18.09.12
19:33
Сильно большой у вас дамп?
27 глазковыколупыватель
 
18.09.12
20:15
+ (26) Давай дамп, выкладывай куда-нить.
28 alxbzm
 
18.09.12
22:27
Не хочу показаться занудой, но вместо анализа дампа я бы сделал следующее:
1) Выгрузил базу в dt через конфигуратор
2) Залил базу на Postgre 9.1.2 из dt через конфигуратор
3) Сделал бы дамп в postgre 9.1.2
4) Попробовал бы залить на тот же 9.1.2 полученный дамп.

P.S. У меня для 9.1.2 дампа в командной строке есть приписочка:

-b -Z 9 -E UTF-8 - здесь указываю компрессию и кодировку

х.з. насколько это принципиально. Да - и восстанавливать я пробовал через pgAdmin 1.14.1 - хотя это тоже не принципиально - можно потом командную строку срисовать из графического интерфейса.
29 ansh15
 
18.09.12
23:05
(22) >>Не знаю, может вам имеет смысл попробовать установить 64-битный постгри и там развернуть архив, если, канечно, есть где-то такая сборка с патчами 1С под винду...

Есть. На пользовательском сайте 1С.
30 Sergio-ps
 
19.09.12
01:16
Выгрузить базу в dt я конечно могу, но бухгалтерам вот приспичило восстановить от 1го августа. че то они там удалили потом нечаянно. поэтому и мучаюсь с этим дампом, т.к. нету других копий за те числа.
64 юитный постгри.. попробую.
Кстати заметил, когда восстанавливаю в базу созданную через пгАдмин или Средствами 1с, то вылазиют ошибки про существующие таблицы и тд., а когда создаю базу сreаtedb.exe -U postgres названиебазы, и восстанавливаю  pg_restore.exe -U postgres -d названиебазы имя_архива, то потом вываливается out of memory
31 Sergio-ps
 
19.09.12
01:18
дамп размером 600 метров, размер азы в папке постгри 7 гигов.
32 zzhiraf
 
19.09.12
09:55
(29) А можно ссылочку? И еще вопрос как перенести данные с MS SQL?
33 ansh15
 
19.09.12
10:38
(32) Пожалуйста. http://users.v8.1c.ru/version.jsp?id=AddCompPostgre&ver=9.1.2-1.1C
Если есть доступ, конечно.
Перенос тоже просто, через dt файл.
34 ansh15
 
19.09.12
10:49
(30) Когда база создается через консоль администрирования, в ней создаются таблицы, типы данных и т.д.
Поэтому при восстановлении и появляются ошибки о существующих таблицах.
Попробуй PostgreSQL x64, может поможет с out of memory.
35 ansh15
 
19.09.12
10:51
36 ansh15
 
19.09.12
11:03
(30) http://www.sql.ru/forum/actualthread.aspx?tid=594580
Пишут, что можно поварьировать maintenance_work_mem.
37 zzhiraf
 
19.09.12
11:55
(33) Спасибо. Нет доступа(
38 Sergio-ps
 
19.09.12
12:47
maintenance_work_mem стоит по умолчанию. Текущее значение 16384. наверно в мегабайтах. хотя оперативки всего 8 гигов. попробую поменять на меньшее значение)
докачаю - выложу куда нибудь сборку постгреса
39 Sergio-ps
 
19.09.12
13:03
40 Sergio-ps
 
19.09.12
13:06
41 zzhiraf
 
19.09.12
13:14
(40) Спасибо!
42 ansh15
 
19.09.12
13:45
43 zzhiraf
 
19.09.12
14:09
(42) а постгрес еще надо настраивать? есть ли готовые файлы с оптимальными настройками?)
44 ansh15
 
19.09.12
14:29
(43) В зависимости от ваших конфигураций, размера баз и объема памяти сервера.
Поищите по форуму, были темы по настройке postgresql.conf.
В Интернете тоже много найдется. На сайте Гилева, например.
45 zzhiraf
 
19.09.12
14:37
(44) Нашел сайт Гилева, почитаю, спасибо.
46 ansh15
 
19.09.12
14:51
47 zzhiraf
 
19.09.12
15:43
(46) ага, спасибо!
48 Sergio-ps
 
19.09.12
16:25
в продолжение темы про восстановление, на том же сервере есть еще одна база гига на 2 поменьше, бэкапится теми же командами, при восстановлении так же куча ошибок про существующие объекты, возвращает код 1, но в итоге после восстановления она работает.
Пока убедил бухгалтеров что нету копии за август, но найду свободный комп и попробую поднять постгрес на линуксе
49 DGorgoN
 
19.09.12
16:33
(48) Виртуалку поставь