День добрый.
Наверно я не один такой на земле, но Гугл отказывается помочь в моей проблеме. Сразу предупрежу, что с PostgreSQL никогда ранее не работал, но имею довольно приличный опыт работы с другими СУБД.
Итак проблема. Устанавливаю сервер 1С:Предприятие в компании. Т.к. компания живет честно, а деньги считает как и все остальные, финансирование на Windows Server и MSSQL Server я не получу никогда. Итак было решено поднять бухгалтерию на сервере под управлением Linux и PostgreSQL. Два месяца все работало прекрасно. как говорится до одного прекрасного момента, а именно смерти нового винта. Т.к. ежедневно делались дампы базы командой
pg_dump -i -h localhost -p 5432 -U postgres -c -Fc -f "Database.backup" "Database"
У меня есть огромное кол-во архивов базы. Теперь по порядку.
1. Попытка востановить базу командой
pg_restore -i -h localhost -p 5432 -U postgres -c -d "Database" "Database.backup"
Выдает информацию, что около пары тысяч команд проигнорированы
2. Попытка востановить базы из под PgAdmin III приводят к сообщению, что сборка не поддерживает сжатие и он вообще не может востановить.
Таким образом мы имеем нерабочую базу. Идем дальше. Занялся экспериментами под управлением Windows с этой СУБД.
1. Создаем базу, С помощью конфигуратора 1С заполняем ее новой конфигурацией 1С: Бухгалтерия. БД находится на машине WindowsXP Pro 1С прекрасно работает, БД мы видим и можем работать.
2. Делаем дамп базы коммандой.
"C:\Program Files\PostgreSQL\8.1.5-17.1C\bin\pg_dump.exe" -i -h localhost -p 5432 -U postgres -c -Fc -f "Database.backup" "Database"
3. Удаляем эту базу
4. Востанавливаем базу коммандой
"C:\Program Files\PostgreSQL\8.1.5-17.1C\bin\pg_restore.exe" -i -h localhost -p 5432 -U postgres -c -d "Database" "Database.backup"
5. Имеем на выходе признак завершения с ошибками и нерабочую базу.
WARNING: errors ignored on restore: 4216
6. Повторяем востановление прям поверх базы, колв-во ошибок уменьшается до 259
7. Еще раз повторяем востановление поверх, ошибок 28
8. Дальнейшие поаытки востановления поверх не уменьшают ко-во ошибок. И 1С вроде бы даже работает, но замечено, что некоторые операции начинают приводить к зависанию 1С при работе с БД востановленной из бэкапа.
И теперь внимание вопросы:
1. Может я что-то не правильно делаю для создания бэкапа и его последующего востановления?
2. А если все делаю правильно, то как можно работать с СУБД в которой отсутствует рабочая система резервирования данных?
Я по другому
Я по другому дамп делаю...
pg_dump -Fc "dbname" > path+filenamedump (только из под пользователя postgres и в папки с правами на нее пользователя postgres)
pg_restore -d "dbname" -U postgres path+filenamedump (тоже из под postgres, база должна быть создана, но пуста)
З.Ы. Вариант для локальной машины.
Вопрос номер 1.
Вопрос номер 1. Внутрь бакапа смотрел? Приведи хотя бы первые 10 строк оттуда. Если там сжатое - отпиши. Заодно и напиши почему был выбран именно сжатый формат БД, а не обычный PLAIN TEXT.
Вопрос номер 2. Я уже говорил про эту тему в другом топике. Почему бакап делался только базы 1C? А откуда теперь должны браться пользователи и права доступа? Бакап сервера делается командой pg_dumpall. pg_dump бакапит только ОДНУ базу.
Вопрос номер 3. Ман к команде pg_dump читали? Почему стоит ключ -i?
Вопрос номер 4. Перед pg_restore делал CREATE DATABASE?
И наконец самое последнее и распоследнее, которое по идее должны быть самым первым. Процедуры бакапа и восстановления тестируются ДО ввода системы в продуктив.
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков
"И наконец
"И наконец самое последнее и распоследнее, которое по идее должны быть самым первым. Процедуры бакапа и восстановления тестируются ДО ввода системы в продуктив."
Да.... Это самое главное
Сделал так, как
Сделал так, как посоветовал fearuth.
При выполнении комманды pg_restore в определенный момент появляется ошибка: "cannot allocate memory for output buffer". Восстановление базы из бэкап-файла прекращается.
Что это значит?