Задать вопрос

Как восстановить дамп базы для 1С postgresql 8.4?

Установлен сервер 1С 8.2 + postgresql 8.4.3-3.1C(во время установки выбирал кодировку UTF-8) на Win7x64.
Настроил резервное копирование базы через pg_dump ежедневно. Попробовав восстановить базу из этих дампов столкнулся с проблемой - база восстановилась но с кучей ошибок и не запустилась.
Открыв сам дамп через блокнот увидел что часть текста в нем в виде "кракозябр". Понятно, что пока с кодировкой не разобраться, восстанавливать из бэкапов я не смогу.
Как правильно бэкапить базу в этом случае?
Можно ли спасти уже существующие бэкапы?
  • Вопрос задан
  • 7915 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
@taaadm Автор вопроса
Дам делался командой:
pg_dump.exe -i -h localhost -p 5432 -U postgres -w -F c -f "E:\BackUp.back" test1

Пробовал так же указывать кодировку дампа параметром -E Windows1251 и UTF-8.
Восстанавливал через pg_admin - восстановилось, но в конце было сообщение примерно следующего содержания: WARNING: Было выявлено 380 ошибок.

Пробовал восстанавливать так:
pg_restore -Upostgres -d "test1" -w -F c -v "E:\BackUp.back"
Восстановилась, при полной проверке средствами 1С база вылетает. Выгружаю в dt файл - он весит в 3 раза меньше оригинальной базы.
Восстановление через
psql -Upostgres -W -d test1 -f "E:\BackUp.back"
дало аналогичные результаты. Во время восстановления были ошибки "..invalid command.." и "кракозябра".

Блокноту вы, конечно, не забыли сказать, что файл у вас в UTF-8?

Копировал дамп в linux mint и открывал через Kate. Пробовал открыть и в UTF-8 и Windows 1251 и KOI8-ru
Ответ написан
@krypt3r
Обычно предоставляют больше данных: в каком формате дамп, какой командой восстанавливали, текст ошибок и т.д.
Открыв сам дамп через блокнот увидел что часть текста в нем в виде "кракозябр".

Блокноту вы, конечно, не забыли сказать, что файл у вас в UTF-8?
ЗЫ. Подключите к постгресу либу libtelepathist.so =)
ЗЗЫ. То есть libtelepathist.dll ))
Ответ написан
Комментировать
@kalapanga
Если с базой работают не круглые сутки, т.е. есть время, когда можно обеспечить монопольный доступ к базе, то я бы бэкапил её средствами самой 1С и не парился.
Ответ написан
desperadik
@desperadik
Истина где-то рядом.
Давайте по порядку.

На боевом сервере (Как я понял семейство Windows) запускаете cmd.exe от имени администратора.

Далее делаем бекап на "горячую", для этого переходим в папку bin у postgresql, там запускаем pg_dump.exe
т.е.
Будем бекапить в tar.

pg_dump.exe --blobs --verbose --format "tar" --encoding "UTF-8" --username "postgres" --password --port "5432" --file "E:\BackUp.back" "DBNAME"


А владелец схемы точно postgres?

После, можете на тестовом сервере БД, можете на этом же боевом. Всё зависит от вашей небезалаберности =).
В документации сказано, что для восстановления бд из бекапа, нужно остановить процесс сервера БД.
Далее_
Создаете новую БД с именем "DBNAME_NEW" - к примеру.
psql --> create database DBNAME_NEW owner postgres encoding 'UTF8';
После_
pg_restore.exe --username "postgres" --dbname "DBNAME_NEW" --file "E:\BackUp.back"

Пробуем, рассказываем об ошибках.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы