gifts2017

Резервное копирование и восстановление базы 1С средствами PostgreSQL

Опубликовал Vasiliy (dimisa) в раздел Администрирование - Архивирование (backup)

Алгоритм резервного копирования баз 1С: 8 средствами PostgreSQL.

В интернете куча статей, как установить PostgreSQL и залить в него базу из dt.

Но столкнулся с проблемой резервного копирования и восстановления базы средствами PostgreSQL.

т.е.  при восстановлении базы сыпались ошибки, и восстановленная копия базы не работала.

Ошибочный алгоритм.

1. Делаем резервную копию скриптом или с помощью pgAdmin III --- получаем файлик bkp...

2. Создаем пустую базу средствами 1С сервера.

3. Восстанавливаем резервную копию скриптом или с помощью pgAdmin III в базу, созданную на шаге 2.

и болт : во время восстановления уже видны ошибки и восстановленая копия получается не рабочая (в конфигуратор пускает, но в предприятие уже не войти, "ошибка аутентификации пользователя" и т.п.)

Правильный алгоритм.

1. Делаем резервную копию скриптом или с помощью pgAdmin III --- получаем файлик bkp...

Пример командного файла :

"C:\Program Files\PostgreSQL\9.4.2-1.1C\bin\pg_dump.exe" --host localhost --port 5432 --username "postgres" --role "postgres" --no-password --format custom --blobs --section pre-data --section data --section post-data --encoding UTF8 --verbose --file "c:\1c_base.backup" "1c_base"

pause

где   "1c_base"  - имя базы

       "c:\1c_base.backup"  - имя файла резервной копии

2. Создаем пустую базу средствами Postgre - Я делал pgAdmin III -ом. (и пока не добавляем ее через "Администрирование сервера 1С" )

пустую базу можно создать командой CREATE DATABASE https://www.postgresql.org/docs/9.1/static/sql-createdatabase.html

3. Восстанавливаем резервную копию скриптом или с помощью pgAdmin III в базу созданную на шаге 2.

Пример командного файла :

"C:\Program Files\PostgreSQL\9.4.2-1.1C\bin\pg_restore.exe" --host localhost --port 5432 --username "postgres" --dbname "1c_base_copy" --role "postgres" --no-password  --section pre-data --section data --section post-data --verbose "C:\ 1c_base.backup"

pause

где   "1c_base_copy"  - имя пустой базы, созданой в шаге 2 средствами PostgreSQL

       "c:\1c_base.backup"  - имя файла резервной копии

4. Добавляем базу созданную на шаге 2 с  восстановленной информацией в список баз на сервере 1С через остнастку "Администрирование сервера 1С".

Вот и все !!! Всем удачного дня !!!

См. также

Подписаться Добавить вознаграждение
Комментарии
2. Vasiliy (dimisa) 01.08.16 17:02
(1) lustin,
Зачем так сложно ?
cmd - файл в задания под какой нибуть локальной админской записью.
3. cssprite 02.08.16 08:21
http://postgresql.ru.net/manual/backup-dump.html

Текстовые файлы, созданные pg_dump предназначаются для последующего чтения программой psql. Общий вид команды для восстановления дампа:

psql имя_БД < файл_дампа

где файл_дампа — это файл, содержащий вывод команды pg_dump. База данных, заданная параметром имя_БД не будет создана данной командой, так что вы должны создать её сами из базы template0 перед запуском psql (например, с помощью команды createdb -T template0 имя_БД)
neyasytyf; cleaner_it; +2 Ответить
4. Андрей Уваров (oldcopy) 03.08.16 10:46
Ещё следует уточнить что кодировка дампа должна совпадать с кодировкой сервера БД.
cleaner_it; +1 Ответить
5. Павел (freeraider) 05.08.16 06:38
PostgreSQL не восстанавливает текущую базу из дампа.
Поэтому, я восстанавливаю базу так:
dropdb имя_базы
createdb имя_базы
psql имя_базы < файл_дампа

Мой скрипт восстановления для Linux (работает под пользователем postgres):

#!/bin/bash

if [ -z "$1" ] ; then
echo "Скрипт восстановления базы 1С. Параметры: 1 имя директории бэкапа, 2 имя базы 1С" 1>&2
exit
fi

base_name="$2"
dir_name="$1"

archive_name=$dir_name/$base_name.sql.gz

dropdb $base_name
createdb $base_name
gunzip -c $archive_name | psql $base_name
6. Евгений Зазабадак (zazabadak) 02.09.16 12:11
У нас с восстановлением базы из дампа проблем вроде не вылезает, не ругается:
dropdb -U postgres [имя базы]
createdb -U postgres [имя базы]
pg_restore -U postgres -d [имя базы] [имя файла]