Использование Python скриптов для обслуживания баз PostgreSQL
База данных - Инструменты администратора БД
Вводные
- Сервера PostgreSQL с базами 1С на Ubuntu 20.04
- установленный rclone и настроенное подключение к внешнему хранилищу
- Желание автоматизировать рутинные операции
- Резервное копирование через pg_dump
- перенос на внешнее хранилище и управление границей хранения используя rclone
- уведомления о выполнении пакета на https://healthchecks.io/
- Перенос баз с сервера на сервер
- миграция
- разворачивание/обновление тестовых баз
- Резервное копирование через pg_dump
- Чтобы присутствовал логгер
- Чтобы корректно отрабатывало исключения
- Рабочий скрипт на bash, который запускается из под postgres на сервере c БД
Вариант решения
Написал скрипт на Python 3.8, он идет в стандартной поставке Ubuntu 20.04. Из плюсов написанный код достаточно просто понять и при необходимости поправить.
Использовал только стандартные библиотеки, чтобы можно было скопировать, добавить конфиг и запустить через cron например. Большинство команд это отдельные приложения поэтому запускаю их через subprocess (ссылка). Для переиспользования функции по работе с файлами выделил в отдельные файлы и подключаю в управляющие скрипты. Конфиг в формате JSON потому что он обрабатывается стандартной библиотекой.
С уважением отношусь к OneScript, но на данный момент удобнее писать на python. Обертки работы с сервером 1С пока нет, возможно буду использовать Odin (ссылка). Про то что бекап через pg_dump не самое лучшее решение знаю, до реплик, pg_wal и barman дорасту и напишу.
Создание резервной копии

После создания в локальную папку перемещает на внешнее хранилище и делает GET запрос при успешном выполнении пакета.
Копия с prod на dev сервер указанной базы

Запускается командой "python3 pg_copy_prod_to_test.py --src-base rt --dst-base rt_test_1"
Копирование списка баз с сервера на сервер
Использовал для перехода с 11 на 14 версию Postgres
- создал новый контейнер с Postgres
- остановил сервер 1С
- перенес базы
- поправил настройки подключения на сервере 1С
- запустил сервер 1С
Обработчики
Для работы с PG
Для работы с файлами
Итог
Получил инструмент, который могу скомпоновать под новые требования используя готовые обработчики.
Благодарю за внимание.
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.