pg_diag_setup#
pg_diag_setup
pg_diag_setup — Инструмент управления конфигурацией для PostgreSQL
Введение
Инструмент для управления конфигурацией Tantor SE с поддержкой профилей и системы откатов.
Системные требования
Python 3.x (протестировано на CentOS 7)
Tantor SE с доступом через Unix Domain Socket
Утилита
psqlв PATH
Установка
Скопируйте файл
pg_diag_setup.pyна сервер.Создайте директорию
profilesи поместите в нее файлы профилей (например,default.yaml).Сделайте скрипт исполняемым:
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_143022postgresql.auto.conf_backup_pds_20240529_143022
Ведение журнала
Программа выводит подробную информацию о всех выполняемых операциях:
Найденные файлы конфигурации
Список обнаруженных параметров
Создание резервных копий
Примененные изменения
Результаты операций
Ограничения
Требуется утилита
psqlРаботает только с Unix Domain Socket подключениями
Простой YAML парсер (не поддерживает все возможности YAML)
Не выполняет автоматический перезапуск Tantor SE
Устранение неполадок
Ошибка подключения к Tantor SE
Проверьте правильность указания
--unix-socket-dirУбедитесь, что Tantor SE запущен
Проверьте права доступа к socket файлу
Ошибка чтения конфигурации
Проверьте права доступа к файлам конфигурации
Убедитесь, что пользователь имеет права на чтение/запись
Ошибка парсинга YAML
Проверьте синтаксис файла профиля
Убедитесь в правильности отступов (2 и 4 пробела)
Рекомендации
Всегда делайте полные резервные копии перед применением изменений
Тестируйте изменения в тестовой среде
После применения профиля может потребоваться перезапуск Tantor SE
Ведите учет применяемых профилей и временных меток
Поддержка
Если возникают проблемы, проверьте:
Логи Tantor SE
Права доступа к файлам
Синтаксис YAML профиля
Доступность расширений в системе