pg_diag_setup#

pg_diag_setup

pg_diag_setup

pg_diag_setup — Инструмент управления конфигурацией для PostgreSQL

Введение

Инструмент для управления конфигурацией Tantor SE с поддержкой профилей и системы откатов.

Системные требования

  • Python 3.x (протестировано на CentOS 7)

  • Tantor SE с доступом через Unix Domain Socket

  • Утилита psql в PATH

Установка

  1. Скопируйте файл pg_diag_setup.py на сервер.

  2. Создайте директорию profiles и поместите в нее файлы профилей (например, default.yaml).

  3. Сделайте скрипт исполняемым:

    chmod +x pg_diag_setup.py
    

Использование

Базовый запуск (проверка конфигурации)

sudo ./pg_diag_setup.py --port 5432 --unix-socket-dir /tmp

Применение профиля конфигурации

sudo ./pg_diag_setup.py --port 5432 --unix-socket-dir /tmp --profile default.yaml --bin-dir /opt/path_to_binaries

Просмотр доступных резервных копий

sudo ./pg_diag_setup.py --port 5432 --unix-socket-dir /tmp --list-backups

Откат изменений

sudo ./pg_diag_setup.py --port 5432 --unix-socket-dir /tmp --undo 20240529_143022 --bin-dir /opt/path_to_binaries

Параметры командной строки

  • --port - порт Tantor SE (по умолчанию: 5432)

  • --unix-socket-dir - директория Unix socket (по умолчанию: /tmp)

  • --profile - файл профиля YAML для применения

  • --undo - временная метка для отката изменений

  • --list-backups - показать доступный список резервных копий

  • --bin-dir - директория, где установлен дистрибутив Tantor SE

  • -V - показать номер версии утилиты

  • -v - включить подробный режим

Что делает программа

Задачи 1-2: Подключение и определение конфигурации

  • Подключается к Tantor SE через Unix Domain Socket

  • Определяет расположение файла конфигурации postgresql.conf

Задача 3: Проверка postgresql.auto.conf

  • Проверяет наличие файла postgresql.auto.conf

Задача 4: Анализ параметров

  • Парсит все файлы конфигурации

  • Создает список параметров с указанием источника

  • Учитывает include-директивы

Задача 5: Применение профиля

  • Читает YAML профиль с настройками расширений

  • Проверяет доступность расширений через pg_available_extensions

  • Создает резервную копию конфигурации

  • Обновляет shared_preload_libraries без перезаписи существующих библиотек

  • Добавляет новые параметры в конец postgresql.conf

  • Помечает добавленные параметры комментарием Added by pg_diag_setup

Задача 6: Система откатов

  • Создает резервные копии с временными метками

  • Позволяет откатить изменения к любой предыдущей резервной копии

Формат файла профиля

extension_name:
  shared_preload_lib: library_name
  create_cmd: CREATE EXTENSION command
  params:
    parameter1: value1
    parameter2: value2

Безопасность

  • Все изменения сопровождаются созданием резервных копий

  • Существующие параметры не перезаписываются

  • Проверка доступности расширений перед установкой

  • Все новые параметры добавляются в конец файла

Примеры резервного копирования

После выполнения изменений создаются файлы вида:

  • postgresql.conf_backup_pds_20240529_143022

  • postgresql.auto.conf_backup_pds_20240529_143022

Ведение журнала

Программа выводит подробную информацию о всех выполняемых операциях:

  • Найденные файлы конфигурации

  • Список обнаруженных параметров

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

  • Примененные изменения

  • Результаты операций

Ограничения

  • Требуется утилита psql

  • Работает только с Unix Domain Socket подключениями

  • Простой YAML парсер (не поддерживает все возможности YAML)

  • Не выполняет автоматический перезапуск Tantor SE

Устранение неполадок

  1. Ошибка подключения к Tantor SE

    • Проверьте правильность указания --unix-socket-dir

    • Убедитесь, что Tantor SE запущен

    • Проверьте права доступа к socket файлу

  2. Ошибка чтения конфигурации

    • Проверьте права доступа к файлам конфигурации

    • Убедитесь, что пользователь имеет права на чтение/запись

  3. Ошибка парсинга YAML

    • Проверьте синтаксис файла профиля

    • Убедитесь в правильности отступов (2 и 4 пробела)

Рекомендации

  • Всегда делайте полные резервные копии перед применением изменений

  • Тестируйте изменения в тестовой среде

  • После применения профиля может потребоваться перезапуск Tantor SE

  • Ведите учет применяемых профилей и временных меток

Поддержка

Если возникают проблемы, проверьте:

  1. Логи Tantor SE

  2. Права доступа к файлам

  3. Синтаксис YAML профиля

  4. Доступность расширений в системе