MEDOC. Бекап и восстановление средствами PostgreSQL


После апдейта сетевого МЕДКА на версию 11.02.144 восстановление из бекапа (файл ZBF) сопровождается ошибкой. И тут нам без разницы, где у них там косяки, на этапе создания бекапа или на этапе восстановления. Ситуация требует создания бекапов средствами БД

Бекап и восстановление средствами PostgreSQL

Скриншот с forum.medoc.ua. С 27.05.2025 ресурс закрыт

Рассмотрим вариант с PostgreSQL. Все операции выполняются в среде Windows Server 2016. На время работ служба ZvitGrp должна быть остановлена

Создание бекапа

Дамп создадим в формате скрипт-файла и в формате каталога соответственно, а также сравним их размеры

pg_dump -C -d MEDOC -U postgres -f 30-07-24.psql
pg_dump -Fd -v -j 6 -U postgres -d MEDOC -f 30-07-24.dir

Можете использовать одну из команд на Ваше усмотрение, где в результате:

30-07-24.psql — единственный скрипт-файл, где вся дата
30-07-24.dir — каталог с  gz-таблицами и файлом-оглавлением

В первом случае размер дампа — 37,4 GB, во втором — 19,4 GB. Разница очевидна. И если эти бекапы передаются на удаленный бекап-сервер или недостадочно места на локальном, то имеет смысл использовать дамп в формате каталога

Восстановление

Маловероятный, но возможный сценарий к которому нужно подготовиться заранее. Восстановление делаем в другую БД. Назовем ее MEDOC_2

Для начала в консоли psql создадим чистую БД. Владельцем оставляем роль MEDOC

CREATE DATABASE "MEDOC_2" 
  WITH OWNER = "MEDOC"
  ENCODING = 'UTF8'
  LC_COLLATE = 'Ukrainian_Ukraine.1251'
  LC_CTYPE = 'Ukrainian_Ukraine.1251'
  LOCALE_PROVIDER = 'libc'
  TABLESPACE = pg_default
  CONNECTION LIMIT = -1
  IS_TEMPLATE = False;

Даем необходимые права

GRANT ALL ON DATABASE "MEDOC_2" TO "MEDOC" WITH GRANT OPTION;
GRANT TEMPORARY, CONNECT ON DATABASE "MEDOC_2" TO PUBLIC;

В консоли psql смотрим, что получилось

Бекап и восстановление средствами PostgreSQL

Свойства старой базы MEDOC и новой MEDOC_2

Все один к одному. Можно накатывать дамп. Если он в формате скрипт-файла то:

psql -U postgres -d MEDOC_2 -f 30-07-24.psql

если формате каталога

pg_restore -v -j 6 -U postgres -d MEDOC_2 30-07-24.dir

Ждем

Переключение

После того, когда дата будет залита нужно переключить програму МЕДОК на работу с новой БД MEDOC_2. Для этого запускаем в установочном каталоге MedocSRV тулзу ConnectionSetup.exe и в закладке настроек PostgreSQL меняем параметры подключения

Бекап и восстановление средствами PostgreSQL

Интерфейс настройки соединения MEDOC с PostgreSQL

Сохраняем. На запрос о перезапуске ZvitGrp — соглашаемся. Заходим в МЕДОК и работаем. Старую БД MEDOC в будущем можно удалить

В командной строке cmd

dropdb.exe -U postgres MEDOC
0 0 голоса
Ваша оценка поста?
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии