![PostgreSQL PostgreSQL](https://habrastorage.org/getpro/habr/upload_files/4d0/c66/9bd/4d0c669bdbeba3928b9ba083652b960f.png)
Автор статьи: технический руководитель проектов внедрения 1С:ERP Внедренческого центра «Раздолье» Дмитрий Малышев.
Введение
pgAdmin — это интерфейс для администрирования баз данных PostgreSQL, в моём понимании это аналог MS SQL Management Studio. Ставится pgAdmin отдельно от PostgreSQL. Инструкцию установки найдите, пожалуйста, в интернет поисковиках. В данной инструкции будет описано как с помощью pgAdmin, bat-файлов и Планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.
![psql-1.png psql-1.png](https://habrastorage.org/getpro/habr/upload_files/297/774/fb9/297774fb9eebd76b406a83f2c802c2cc.png)
Открытие pgAdmin
Через пуск или в проводнике открываем приложение.
![psql-2.png psql-2.png](https://habrastorage.org/getpro/habr/upload_files/bce/ef3/113/bceef31134bc0a5f9b9e31dbbaee8b76.png)
"C:\Program Files\pgAdmin 4\v6\pgAdmin4.ico"
![psql-3.png psql-3.png](https://habrastorage.org/getpro/habr/upload_files/643/a77/1d2/643a771d2f517ff1d21e4e7153ab0112.png)
Вводим пароль доступа (за дается ранее пользователем).
![psql-4.png psql-4.png](https://habrastorage.org/getpro/habr/upload_files/1da/f78/568/1daf78568fcc191e63b0b2c177a5b914.png)
Откроется интерфейс управления базами данных.
![psql-1.png psql-1.png](https://habrastorage.org/getpro/habr/upload_files/ad2/5fd/ad8/ad25fdad826f8e46cd7121ac619a2f65.png)
Создание резервной копии
Рассмотрим создание резервной копии из pgAdmin и командным bat-файлом.
2.1. С помощью pgAdmin
Выбираем базу в дереве, правой кнопкой мыши открываем контекстное меню, где выбираем создание резервной копии/Backup… Указываем полный путь для сохранения копии, формат Custom и жмем [Создать / Create].
![psql-5.png psql-5.png](https://habrastorage.org/getpro/habr/upload_files/9cf/edb/69f/9cfedb69fc4cbd9f228b2692e66a08a6.png)
***
![psql-6.png psql-6.png](https://habrastorage.org/getpro/habr/upload_files/a61/ab2/076/a61ab20766fab501b0d154e39b61519f.png)
***
![psql-7.png psql-7.png](https://habrastorage.org/getpro/habr/upload_files/cd0/e6e/c48/cd0e6ec486387b85a91da8565cd3a4e8.png)
2.2. С помощью командного файла *.bat
Запускаем двойным кликом мыши командный файл backup_pdadmin_UH_IMD_everyday.bat, в котором уже прописан вызов архиватора формат и путь файла копии.
![psql-8.png psql-8.png](https://habrastorage.org/getpro/habr/upload_files/ac0/716/bb8/ac0716bb8a3a4bbb84c13e54e95a3c16.png)
Копии сохраняются сюда.
![psql-9.png psql-9.png](https://habrastorage.org/getpro/habr/upload_files/c00/541/2a3/c005412a392306e45a43c9ae203a8ee1.png)
Содержимое командного файла:
REM СОЗДАНИЯ РЕЗЕРВНОЙ КОПИИ БАЗЫ ДАННЫХ POSTGRESQL
CLS
ECHO OFF
CHCP 1251
REM Установка переменных окружения
SET PGDATABASE=IMD_UH
SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=postgres
SET PGPASSWORD=ЗДЕСЬ_УКАЖИТЕ_ПАРОЛЬ_для_пользователя_postgres
REM Формирование имени файла резервной копии и файла-отчета
SET DATETIME=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2% %TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
SET DUMPFILE=%PGDATABASE% %DATETIME%.backup
SET LOGFILE=%PGDATABASE% %DATETIME%.log
SET DUMPPATH="E:\UH_IMD\Backup\%DUMPFILE%"
SET LOGPATH="E:\UH_IMD\Backup\%LOGFILE%"
REM Создание резервной копии
IF NOT EXIST Backup MD Backup
CALL "C:\Program Files\pgAdmin 4\v6\runtime\pg_dump.exe" --format=custom --verbose --file=%DUMPPATH% 2>%LOGPATH%
REM Анализ кода завершения
IF NOT %ERRORLEVEL%==0 GOTO Error
GOTO Successfull
REM В случае ошибки удаляется поврежденная резервная копия и делается соответствующая запись в журнале
:Error
DEL %DUMPPATH%
MSG * "ERROR to create backup!!! See the information E:\UH_IMD\Backup\backup.log."
ECHO %DATETIME% Ошибка при создании резервной копии %DUMPFILE%. Смотрите %LOGFILE%. >> backup.log
GOTO End
REM В случае удачного резервного копирования просто делается запись в журнал
:Successfull
ECHO %DATETIME% Успешное создание резервной копии %DUMPFILE% >> backup.log
GOTO End
:End
Пояснения:
SET PGDATABASE=IMD_UH - здесь имя базы данных на СУБД равно IMD_UH, у вас будет свое поменяйте обязательно.
E:\UH_IMD\Backup - здесь путь хранения backup у вас будет свой, поменяйте.
C:\Program Files\pgAdmin 4\v6\runtime - папка утилиты pg_dump.exe для создания дампов, пусть может чуть отличаться, например, вместо v6 будет v4. И не забудьте pgAdmin установить, он ставится отдельно.
SET PGPASSWORD=ЗДЕСЬ_УКАЖИТЕ_ПАРОЛЬ_для_пользователя_postgres - тут укажите реальный пароль от пользователя postgres СУБД PostgreSQL
Восстановление резервной копии
Есть несколько способов: Из командной строки, из pgAdmin, заранее подготовленным командным файлом. Мы рассмотрим: pgAdmin.
3.1. С помощью pgAdmin
3.1.1. В существующую базу
Выбираем базу, вызываем правой кнопкой ее контекстное меню, где выбираем действие Восстановить / Restore.
![psql-10.png psql-10.png](https://habrastorage.org/getpro/habr/upload_files/607/d9d/d45/607d9dd458d649e28f816acb8996fb8c.png)
Далее указываем путь к резервной копии, и в настройках ставим предварительно очищать существующую базу (иначе она не восстановится из-за конфликта таблиц).
![psql-11.png psql-11.png](https://habrastorage.org/getpro/habr/upload_files/f45/24b/625/f4524b62552c9e04ef714818d20a9f4f.png)
***
![psql-12.png psql-12.png](https://habrastorage.org/getpro/habr/upload_files/d52/91e/abf/d5291eabfa2301340dca55240cc5acee.png)
***
![psql-13.png psql-13.png](https://habrastorage.org/getpro/habr/upload_files/d73/d65/7bf/d73d657bf0e7f4bc11da030e86094809.png)
***
![ps-14.png ps-14.png](https://habrastorage.org/getpro/habr/upload_files/e59/4a5/e2e/e594a5e2e3228eb7b8c4c07e5f14f47c.png)
3.1.2. В новую базу
3.1.2.1. Создаем новую базу в PostgreSQL
На корне дерева баз вызываем правой кнопкой мыши контекстное меню и действие Создать / Create – Базу данных / Database.
![psql-14.png psql-14.png](https://habrastorage.org/getpro/habr/upload_files/151/6c6/992/1516c6992a41c839fb7ca037deb680c1.png)
Задаем имя новой базы.
![psql-16.png psql-16.png](https://habrastorage.org/getpro/habr/upload_files/4d9/a62/58d/4d9a6258d2139f34dadcec55837b8f88.png)
Выбираем обязательно схему создания template0 (иначе на следующем шаге база не развернется из backup из-за конфликта таблиц).
![psql-16.png psql-16.png](https://habrastorage.org/getpro/habr/upload_files/81e/31a/cff/81e31acff6af065a9a7253ade2507a7c.png)
Для контроля смотрим итоговый запрос, и жмем кнопку [Сохранить]/[Save].
![psql-17.png psql-17.png](https://habrastorage.org/getpro/habr/upload_files/068/f95/bb3/068f95bb38717cdb08627c565cd3e040.png)
3.1.2.2. Восстанавливаем базу из архива в PostgreSQL
После создания пустой новой базы, её нужно восстановить из архива. Для этого смотрите пункт выше 3.1.1. Для восстановления в существующую базу, выполняем всё тоже самое только для базы с именем NewBaseName
3.1.2.3. Создаем новую базу 1С NewBaseName
После того как развернули базу на СУБД PostgreSQL её требуется опубликовать на сервере 1С, чтобы пользователи получили к ней доступ. Для этого выполним действия по созданию базы 1С и связывании её с существующей базой на СУБД.
![psql-18.png psql-18.png](https://habrastorage.org/getpro/habr/upload_files/3b6/b47/4cd/3b6b474cdc7c073ec2a6fdd336183998.png)
***
![psql-19.png psql-19.png](https://habrastorage.org/getpro/habr/upload_files/e57/8cf/652/e578cf652a99fc13eeb146d670dd7ad3.png)
***
![psql-20.png psql-20.png](https://habrastorage.org/getpro/habr/upload_files/893/598/6bd/8935986bdc9b93898fc182b3525a20f7.png)
***
![psql-21.png psql-21.png](https://habrastorage.org/getpro/habr/upload_files/15c/7d5/8e4/15c7d58e4d2ba42b2c3e4213e7b2e25b.png)
***
![psql-22.png psql-22.png](https://habrastorage.org/getpro/habr/upload_files/92f/db7/03b/92fdb703be31b14abe53317bfe20f39e.png)
Не забываем ставь флаг «Установить блокировку регламентных заданий», если это копия.
Удаление старых резервных копий
4.1. Вручную
Удаляем архивы старше 30 дней вручную. Затем чистим корзину на рабочем столе.
В проводнике папка E:\UH_IMD\Backup.
![psql-23.png psql-23.png](https://habrastorage.org/getpro/habr/upload_files/c67/6e3/c93/c676e3c93db9419ba12ba07d85fb9ef0.png)
***
![psql-24.png psql-24.png](https://habrastorage.org/getpro/habr/upload_files/425/bce/f5b/425bcef5b3b5c74cfe0df4a6013dc6d4.png)
4.2. С помощью командного файла *.bat
Запускаем двойным щелчком мыши командный файл. В файле указана очистка в каталоге файлов старше 30 дней.
![psql-25.png psql-25.png](https://habrastorage.org/getpro/habr/upload_files/2cc/0ae/5cc/2cc0ae5cc109102699441f59ca97e83b.png)
Его содержимое:
forfiles /p "E:\UH_IMD\Backup" /S /D -30 /C "cmd /c del /f /a /q @file"
Пояснения:
E:\UH_IMD\Backup - здесь путь хранения backup'ов, у вас будет свое поменяйте обязательно.
30 - срок в днях хранения backup'ов
Автоматическое выполнение резервного копирования
Использован стандартный планировщик заданий Windows каждый день в 5:00 утра запуск, выполнения командного файла (архив рабочей базы примерно 1 час создается).
![psql-25.png psql-25.png](https://habrastorage.org/getpro/habr/upload_files/35d/ad2/f83/35dad2f83c6dfa7724ed5a5f4b97a468.png)
***
![psql-26.png psql-26.png](https://habrastorage.org/getpro/habr/upload_files/7d3/f48/0da/7d3f480da9b26525694c475d8907672d.png)
***
![psql-27.png psql-27.png](https://habrastorage.org/getpro/habr/upload_files/7ac/16b/dbf/7ac16bdbf3cb724a71bd42ab71dfcc89.png)
***
![psql-28.png psql-28.png](https://habrastorage.org/getpro/habr/upload_files/ae0/9f8/37f/ae09f837f83736913bb95b0332e087d7.png)
***
![psql-29.png psql-29.png](https://habrastorage.org/getpro/habr/upload_files/7a8/9d8/68b/7a89d868b7cbb62f2692576c94a6e42b.png)
***
![psql-30.png psql-30.png](https://habrastorage.org/getpro/habr/upload_files/bf7/1b2/8be/bf71b28be7bfddcf80df5db34e787a5f.png)
***
![psql-31.png psql-31.png](https://habrastorage.org/getpro/habr/upload_files/da5/654/d7c/da5654d7c407f9f447a4f49604495cb0.png)
Автоматическое выполнение очистки копий старше 30 дней
Использован стандартный планировщик заданий Windows каждую субботу в 10:00 утра запуск, выполнения командного файла.
![psql-32.png psql-32.png](https://habrastorage.org/getpro/habr/upload_files/68f/449/009/68f449009ac10ae81f3d6610afdb569e.png)
***
![psql-33.png psql-33.png](https://habrastorage.org/getpro/habr/upload_files/a40/afc/d92/a40afcd92e3ff0201d572534077a0462.png)
***
![psql-34.png psql-34.png](https://habrastorage.org/getpro/habr/upload_files/1b0/ab5/fc5/1b0ab5fc5884c649bac0a3f3bd85e60f.png)
***
![psql-35.png psql-35.png](https://habrastorage.org/getpro/habr/upload_files/649/b24/271/649b2427162ec89a78c5037e68917e55.png)
***
![psql-36.png psql-36.png](https://habrastorage.org/getpro/habr/upload_files/080/cbb/105/080cbb105a1f97f24f36a1df255f34fd.png)
***
![psql-37.png psql-37.png](https://habrastorage.org/getpro/habr/upload_files/e99/ea8/5b5/e99ea85b52c7abb46b4bf5eabbf01a80.png)
***
![psql-38.png psql-38.png](https://habrastorage.org/getpro/habr/upload_files/b31/1f2/3e6/b311f23e6dddd0e6c9b42ffe46949e4f.png)
Приложения
Пример содержимого общего файла логов backup.log.
![psql-39.png psql-39.png](https://habrastorage.org/getpro/habr/upload_files/43c/14d/ccc/43c14dccc5693c85412676593cc94382.png)
Пример содержимого файла лога конкретной выгрузки UH_IMD 2022-10-07 5-00-00.log
![psql-40.png psql-40.png](https://habrastorage.org/getpro/habr/upload_files/2ce/919/2e3/2ce9192e3371aba48780b3ce33d81519.png)
P.S. Коллеги, сразу скажу, что я не системный администратор, а программист 1С. Системщик решил бы, может быть, элегантнее.
Хотя ситуация сложилась такая, что я делал настройки и эту инструкцию с bat-никами по просьбе системных администраторов (как бы странно это ни звучало). Нечасто такими настройками занимаюсь, поэтому не судите строго.
Добавил 2 батника, по обновлению статистики и реиндексации:
Они для регламентного обслуживания. 1С завершать для их работы не обязательно, но 1С будет притормаживать или пойдет блокировка на период реиндексации. В планировщик заданий Windows на эти батники добавьте задачи раз в неделю на свои базы, в Нерабочее время. Также есть служебная база postgres на нее тоже раз в неделю добавьте обслуживание.
Файл vacuumdb_BaseName.bat - обновление статистики.
Его содержимое:
vacuumdb -d UH_IMD -Z -v -j 1
Пояснения:
Обновление статистики базы с именем UH_IMD (тут поставьте свою) в 1 поток.
Можно поменять на обновление статистики во всех базах в 4 потока, тогда будет текст:
vacuumdb -a -Z -v -j 4
Файл reindexdb_BaseName.bat - реиндексация таблиц в базе.
Его содержимое:
reindexdb -d UH_IMD -v -j 1
Пояснения:
Обновление индексов в базе с именем UH_IMD (тут поставьте свою) в 1 поток.
Можно поменять на обновление статистики во всех базах в 4 потока, тогда будет текст:
reindexdb -a -v -j 4
Также обратите внимание на программу Effector Saver — программа резервного копирования 1С:Предприятия (поищите в инете).
Делает копии в MS и PostgreSQL, настройка хранения и удаления. Есть возможность подключать скрипты и выполнять тестирование исправление 1С. Есть бесплатная версия (которой должно хватить), и есть также платная с плюшками.
Ищите для работы вот этот материал с инструкциями для скачивания и использования:
backup_pgadmin_BaseName_everyday.bat
delete_backup_BaseName_older than 30 days.bat
Резервное копирование и восстановление баз PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика.docx
vacuumdb_BaseName.bat
reindexdb_BaseName.bat
Комментарии (9)
Sleuthhound
10.10.2022 19:49Посмотрите в сторону pg_probackup, они есть под винду - это куда лучше, проще и главное эффективней.
Stillgray
11.10.2022 02:54Вообще не надо postgresql под винду. Сотня-другая пользователей, и тормоза становятся невыносимыми.
А так, pg-probackup (https://github.com/postgrespro/pg_probackup) рулит:автоматическая ротация архивов,
автоматическое слияние инкрементальной и полной копии,
полные, инкрементальные, PITR архивные копии,
непрерывное архивирование сегментов wal, с удалением ненужных сегментов,
защита указанного числа полных резервных копий и глубины РК в днях,
сжатие архивных копий и сегментов wal,
прогнозируемое время восстановления,
ещё много всего, навскидку не упомню.
Но с него такой развесистой статьи не получится :) Настройка в полдюжины команд, и пара в кроне.
P.S. Кто-нибудь объяснит мне, почему везде pg_probackup, а пакет называется pg-probackup?
Sergey-S-Kovalev
10.10.2022 20:26+3Простите, я не могу перестать кричать после прочтения этой статьи. Спать пора, а я не могу остановиться :)
Через пуск или в проводнике открываем приложение.
"C:\Program Files\pgAdmin 4\v6\pgAdmin4.ico"Тыкая на файл иконки, Вы приложение не запустите.
Удаляем архивы старше 30 дней вручную. Затем чистим корзину на рабочем столе.
В проводнике папка E:\UH_IMD\Backup.Выглядит надежно.
Автоматическое выполнение очистки копий старше 30 дней
Использован стандартный планировщик заданий Windows каждую субботу в 10:00 утра запуск, выполнения командного файла.Просто замечу, что если у Вас 30 дней не будет делаться по какой то причине резервное копирование, то у вас не будет ни одной резервной копии
Пример содержимого общего файла логов backup.log.
А заходить и смотреть в него до выполнения резервного копирования, или после? В журнале на вахте пометку нужно будет делать, что осмотр произведен?
P.S. Коллеги, сразу скажу, что я не системный администратор, а программист 1С. Системщик решил бы, может быть, элегантнее.
С десяток лет уже не оправдание, знание основ SQL для 1С специалистов уже давно обыденность.
Автор статьи: технический руководитель проектов внедрения 1С:ERP Внедренческого центра «Раздолье» Дмитрий Малышев.
Вы уверены что под этой статьей, на 90% состоящей из копипасты стандартных мануалов стоит писать название компании и свою должность?
Вопрос на засыпку: у меня 200+ баз, от 10-15 гигабайт каждая, где в статье отсутствует фрагмент про инкрементные бэкапы?
Простите меня, но такие примеры "внедрений" просто ужасны.
nick-for-habr
11.10.2022 09:31Первая реакция была схожая, но я как «админ адинэс» уже давно принял для себя за правила относится к подобному творчеству разрабов 1С философски ))
Ну нет там толковых сисадминов, точнее — их единицы. У нас (в России) вообще традиционно системным инженерам внимание уделяется по остаточному принципу, т.к. мало кто понимает — что они вообще делают, а в сфере 1С — это вообще тухляк. Пресловутая «миста» забита подобными статьями чуть больше, чем полностью: торжество магических практик налицо.
По этому не пинайте автора — он играет как может )) Сказали «давай статью IT-тематики в блог на Хабре, ща продвигаться будем» — он и дал, что мог.Sergey-S-Kovalev
11.10.2022 14:03+1На всякий случай акцентирую внимание: В блоге компании занимающейся внедрениями ERP решений, технический руководитель проектов внедрений выкладывает статью под своим авторством, в которой на уровне компетенций джуна описывает процесс обслуживания типовой (даже не ERP) конфигурации 1С с хранением базы в PostrgeSQL.
Чего я ожидаю от этой статьи написанной техруком из специализированной компании занимающейся внедрением? Как минимум выжимку из внутрикорпоративного чеклиста/гайдлайна/деплоймент воркфлоу в создании которого, естественно, участвовали специалисты этой компании в своей области, как минимум сисадмины + DBA + 1С Эксперты ибо это то что делают внедренцы в инфраструктурах заказчиков. Это такой живой документ, который актуализируется после каждого внедрения.
Чего мы получаем?
Неточности в процессах, морально вредные и устаревшие практики, наколеночная автоматизация, настройки по умолчанию не подходящие для маломальски больших инсталляций. Даже банальный код CMD/BAT файлов не оформлен тегами блоков кода.
Давайте закроем глаза и поставим натянутую четверочку как в современном образовании? Ну старался же человек? Или нет? А что я сделаю, если вдруг узнаю что эта компания что то захочет у меня внедрять что то?
dbax
11.10.2022 15:16Не говоря о том что для любого мало-мальски грамотного администратора РСУБД "дамп" вообще ни каким боком не является синонимом "бекапа"!
slavius
11.10.2022 12:47За то, что не нужно искать команды для pg_dump - спасибо. Отдельно спасибо за команду forfiles.
А вот
Ищите для работы вот этот материал с инструкциями для скачивания и использования:
ну это как-то неправильно... тем более что это есть по тексту, просто не отдельными файлами.
Или это такой способ повысить поисковый индекс сайта "компании";)
LeshaRB
Улыбнул скриншот
Как надо чистить корзину.....
ERP Автор
:)