Использование Python скриптов для обслуживания баз PostgreSQL

22.03.22

База данных - Инструменты администратора БД

Описание скрипта для обслуживания баз PostgreSQL.

Вводные

  • Сервера PostgreSQL с базами 1С на Ubuntu 20.04
    • установленный rclone и настроенное подключение к внешнему хранилищу
  • Желание автоматизировать рутинные операции
    • Резервное копирование через pg_dump
      • перенос на внешнее хранилище и управление границей хранения используя rclone
      • уведомления о выполнении пакета на https://healthchecks.io/
    • Перенос баз с сервера на сервер
      • миграция
      • разворачивание/обновление тестовых баз
  • Чтобы присутствовал логгер
  • Чтобы корректно отрабатывало исключения
  • Рабочий скрипт на bash, который запускается из под postgres на сервере c БД

 

Вариант решения

Написал скрипт на Python 3.8, он идет в стандартной поставке Ubuntu 20.04. Из плюсов написанный код достаточно просто понять и при необходимости поправить.

Использовал только стандартные библиотеки, чтобы можно было скопировать, добавить конфиг и запустить через cron например. Большинство команд это отдельные приложения поэтому запускаю их через subprocess (ссылка). Для переиспользования функции по работе с файлами выделил в отдельные файлы и подключаю в управляющие скрипты. Конфиг в формате JSON потому что он обрабатывается стандартной библиотекой.

С уважением отношусь к OneScript, но на данный момент удобнее писать на python. Обертки работы с сервером 1С пока нет, возможно буду использовать Odin (ссылка). Про то что бекап через pg_dump не самое лучшее решение знаю, до реплик, pg_wal и barman дорасту и напишу.

 

Создание резервной копии

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

 
 Скрипт (pg_backup.py)

 

 
 Пример конфигурации (pg_backup_config.json)

 

Копия с prod на dev сервер указанной базы

Запускается командой "python3 pg_copy_prod_to_test.py --src-base rt --dst-base rt_test_1"

 
 Скрипт (pg_copy_prod_to_test.py)

 

 
 Пример конфигурации (pg_copy_prod_to_test_config.json)

 

Копирование списка баз с сервера на сервер

Использовал для перехода с 11 на 14 версию Postgres

  • создал новый контейнер с Postgres
  • остановил сервер 1С
  • перенес базы
  • поправил настройки подключения на сервере 1С
  • запустил сервер 1С
 
 Скрипт (pg_copy_base.py)

 

 
 Пример конфигурации (pg_copy_base_config.json)

 

Обработчики

Для работы с PG

 
 pg_handler.py

Для работы с файлами

 
 file_handler.py

Итог

Получил инструмент, который могу скомпоновать под новые требования используя готовые обработчики.

 

Благодарю за внимание.

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    12619    99    42    

101

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

18000 руб.

06.12.2023    10010    48    5    

78

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    11399    40    27    

66

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3840 руб.

14.01.2013    190554    1150    0    

918

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    33587    109    152    

74

Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Брандмауэр для сервера 1С включает в себя управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

3600 руб.

06.02.2017    32490    145    18    

51

Архивирование (backup) Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    73532    629    45    

88

Инструменты администратора БД Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Многие сталкиваются с проблемой когда изображения, находящиеся в базе разные по объему и размерам. Менеджеры могут добавить файлы в очень высоком разрешении, объемом свыше 20 Мегабайт. База данных становится слишком большой, выгрузка на сайт идёт медленно и требуется много место на хостинге. Как сжать картинки и уменьшить размер базы 1С? Это можно сделать с помощью данной обработки. Существует возможность выбрать различные варианты для того чтобы уменьшить картинки: в разы, в процентах от первоначального объема, а также сделать картинки одинаковой ширины. В результате размер базы 1С значительно сократится (в зависимости от количества и размера картинок), а изображения станут небольшого объема, равными по ширине, почти без потери качества. Работает на управляемых формах для УТ 11, КА, ERP.

3000 руб.

21.07.2022    10093    9    4    

17
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mixsture 24.03.22 16:33 Сейчас в теме
raise Exception(f'Get DB list: {host} {result.stderr}')


эх, лучше брать пониже классы исключений. ValueError например. Потому что попытка перехватить Exception, который используется в вашем коде, будет заодно хватать Ctrl-C.
2. malikov_pro 1326 25.03.22 06:22 Сейчас в теме
(1) Благодарю за критику. Для 2 актуально, но для 3 "KeyboardInterrupt Начиная с 2.5 наследуется от BaseException, чтобы избежать отлова кодом, обрабатывающего Exception, что может мешать остановке интерпретатора."

Мне повод глубже изучить вопрос (использовать ValueError или сделать наследник от Exception), после поправлю код.
3. fatman78 21 22.04.22 11:55 Сейчас в теме
Можно еще для снятия копии с продуктовой базы (для тестовых копий и копий разработки без гарантий целостности) использовать штатную утилиту 1С - ibcmd. В этом случае уже нет привязки к версии SQL и можно сразу из .DT разворачивать файловую базу.
4. malikov_pro 1326 22.04.22 14:41 Сейчас в теме
(3) "В этом случае уже нет привязки к версии SQL" - на данный момент не вижу проблемы с версией СУБД в контексте 1С, переносил с 10 на 14, полет нормальный. Для больших объемов использование выгрузки в DT не рекомендуют.
Оставьте свое сообщение