Эксплуатация Arenadata PostgreSQL (ADPG)
Бизнес-применение, технические аспекты, мониторинг, отказоустойчивость и резервное копирование
Общее описание
Arenadata PostgreSQL (ADPG) — это корпоративная редакция PostgreSQL, адаптированная для задач с высокими требованиями к безопасности, доступности и масштабируемости. Поддерживает ФСТЭК-сертифицированные сценарии.
Эксплуатационные аспекты
1. Развёртывание и инфраструктура
Варианты установки:
- RPM/DEB (стенд или ручное управление)
- ADCM с ролями postgresql, monitoring, backup
- Поддержка установки в K8s через Helm (для cloud-native)
Подготовка среды:
- CPU: от 4 ядер
- RAM: от 16 ГБ
- Хранилище: SSD, поддержка WAL и архива отдельно
- Сеть: PostgreSQL (5432), Patroni (8008), Etcd (2379), Exporters
2. Конфигурация и управление
Файлы конфигурации:
|
Файл |
Назначение |
|---|---|
|
postgresql.conf |
Параметры СУБД: память, WAL, логгинг |
|
pg_hba.conf |
Доступ по IP и методам аутентификации |
|
patroni.yml |
Failover, API, узлы (если Patroni используется) |
Ключевые параметры:
shared_buffers = 4GB work_mem = 32MB wal_level = replica max_connections = 300 archive_mode = on
3. Мониторинг
Метрики:
- Активность запросов: pg_stat_activity
- Задержка репликации: pg_stat_replication
- Частота checkpointer: pg_stat_bgwriter
- Утилизация WAL: pg_wal_lsn_diff()
Инструменты:
- postgres_exporter → Prometheus
- Grafana Dashboards из ADCM Monitoring Bundle
- pg_stat_statements для анализа запросов
Алерты:
- Долгие транзакции > 60 сек
- Блокировки: pg_locks + pg_blocking_pids()
- WAL archive not running
- Репликация отстаёт > 1 минута
4. Резервное копирование
Подходы:
|
Метод |
Преимущества |
Инструмент |
|---|---|---|
|
pg_basebackup |
Быстрое бинарное копирование |
CLI / Cron |
|
pg_dump |
Логическое, выборочное |
Daily + перед обновлением |
|
pgBackRest |
Инкрементальное + WAL |
ADCM + S3 / MinIO |
Пример команды:
pg_basebackup -D /backup/adpg/2024-05-07 -Ft -z -X stream -U repl_user
5. Обновление и миграция
Через ADCM:
- Выгрузка bundle с новой версией
- Тест на стенде
- adpg-cluster → Operation → Upgrade
С точки зрения DevOps:
- Использовать pg_upgrade
- Проверить кастомные расширения (plv8, uuid-ossp, postgis)
- Перегенерация pg_stat_statements
6. Отказоустойчивость и HA
Подходы:
|
Технология |
Назначение |
Особенности |
|---|---|---|
|
Patroni |
Failover, REST API, Keepalive |
Использует Etcd / Consul |
|
Repmgr |
Менеджер потоковой репликации |
Лёгкая интеграция, CLI |
|
HAProxy + VIP |
Клиентская маршрутизация |
Для прозрачного переключения |
Проверка статуса:
patronictl list pg_stat_replication select * from pg_is_in_recovery();
7. Интеграции
- CDC: wal2json, pgoutput, Debezium → Kafka / NiFi
- MDM: Harmony использует ADPG как мастер-репозиторий
- BI: подключение через JDBC, ODBC, REST-обёртки (PostgREST)
- LogSearch: экспорт логов через stdout или rsyslog
Преимущества эксплуатации ADPG
|
Преимущество |
Описание |
|---|---|
|
✔ Полная совместимость с PostgreSQL |
Использование стандартных инструментов |
|
✔ Интеграция с экосистемой Arenadata |
Catalog, Harmony, ADB, BI, Kafka, LogSearch |
|
✔ Управляемое обновление и backup |
Через ADCM или DevOps-стек |
|
✔ Поддержка отказоустойчивости |
Patroni, репликация, WAL shipping |
|
✔ Безопасность и аудит |
TLS, RLS, SCRAM, GSSAPI, pg_audit |
Ограничения
|
Ограничение |
Способ обхода / комментарий |
|---|---|
|
Нет встроенного шардирования |
Использовать Citus, pg_shard |
|
Производительность при OLAP |
Использовать ADB или ADQM для аналитики |
|
Требует ручного failover без Patroni |
Внедрить Patroni |
Чек-лист администратора ADPG (PostgreSQL)
Ежедневные задачи
|
Проверка |
Команда / Метод |
Цель / Комментарий |
|---|---|---|
|
Состояние PostgreSQL |
|
Проверка доступности сервиса |
|
Активные сессии и блокировки |
|
Нет висящих транзакций и блокировок |
|
Долгие запросы |
|
Найти медленные / забытые запросы |
|
Состояние репликации |
|
Лаг < 10 секунд |
|
Использование памяти |
|
Не превышает лимиты |
|
Место на диске |
|
Не менее 20% свободного пространства |
|
Метрики и Grafana-дашборды |
Grafana / Prometheus |
Проверка: WAL, TPS, connections, cache hit ratio |
|
Алерты (если есть Prometheus Alertmanager) |
|
Отсутствие критических алертов |
Еженедельные задачи
|
Проверка / Операция |
Инструмент / Команда |
Комментарий |
|---|---|---|
|
Аудит ролей и пользователей |
|
Проверка на неиспользуемые / лишние роли |
|
Обзор статистики запросов ( |
|
Выявление тяжёлых запросов |
|
Анализ bloat'а таблиц и индексов |
|
Запланировать VACUUM FULL / REINDEX |
|
Тест восстановления |
|
Проверка валидности бэкапов |
|
Очистка старых логов |
|
Очистка логов >30 дней |
|
Обновление расширений |
|
Только если установлены новые версии |
Ежемесячные задачи
|
Проверка / Действие |
Инструмент / Метод |
Комментарий |
|---|---|---|
|
Проверка версий PostgreSQL / ADPG |
|
Сравнение с последними стабильными релизами |
|
Обновление |
ADCM UI → Upload Bundle |
Подготовка к обновлению кластера |
|
Оценка производительности |
|
Трендирование |
|
Проверка TLS / сертификатов |
|
Истечение срока, соответствие ГОСТ |
|
Аудит безопасности |
|
Проверка: нет ли анонимных или временных ролей |
Резервное копирование (по графику)
|
Тип |
Инструмент / Команда |
Частота |
|---|---|---|
|
Горячее бинарное |
|
Ежедневно (ночью) |
|
Логическая выгрузка |
|
Перед обновлениями |
|
WAL-архивирование |
|
Постоянно (streaming) |
|
✅ест восстановления |
|
Еженедельно |
DevOps/CI/CD задачи
|
Операция |
Инструмент / Платформа |
Частота |
|---|---|---|
|
Авто-тестирование функций |
|
Каждый билд |
|
Миграции схем и данных |
|
По мере релизов |
|
Проверка различий схем |
|
При тестировании |
|
Ротация конфигураций ADCM |
ADCM UI / CLI |
При изменении кластера |
Документация и журналирование
|
Описание |
Действие / Пример |
|---|---|
|
Ведение журнала действий |
Система логов, pg_audit или отдельный wiki |
|
Актуализация инструкций |
Обновление документации по backup/restore |
|
Хранение логов / отчётов |
Архивировать Grafana, pg_stat, VACUUM log |
Заключение
Arenadata PostgreSQL — мощная и гибкая СУБД, подходящая как для критичных бизнес-приложений, так и для инфраструктурных целей (MDM, API, аналитика, интеграция). Эксплуатация упрощена благодаря ADCM, глубокой поддержке мониторинга, инструментов DevOps и готовности к HA-сценариям.
Набор графиков мониторинга для Grafana: Arenadata PostgreSQL (ADPG)
Используется postgres_exporter от Prometheus, подключённый к каждому ADPG-инстансу.
1. Общая нагрузка
|
График |
Метрика Prometheus |
Комментарий |
|---|---|---|
|
PostgreSQL Uptime |
pg_up (0/1) |
Проверка доступности инстанса |
|
Connections (active/idle) |
pg_stat_activity_count{state="active"} и idle |
Следить за пиками |
|
TPS (Transactions/sec) |
rate(pg_stat_database_xact_commit[1m]) |
Оценка интенсивности операций |
|
Query Duration (avg/max) |
pg_stat_statements_mean_time_seconds |
Средняя и максимальная продолжительность |
2. WAL и репликация
|
График |
Метрика |
Комментарий |
|---|---|---|
|
WAL Write Rate |
rate(pg_stat_wal_bytes_written[1m]) |
Проверка интенсивности WAL-записи |
|
WAL Archive Lag |
pg_replication_lag_bytes / pg_last_wal_receive_lsn |
Задержка репликации (для standby) |
|
Replication Status per Replica |
pg_replication_lag_bytes, pg_replication_state |
Состояние реплик и их отставание |
|
Streaming Replication Delay |
pg_replication_lag{application_name="replicaX"} |
Следить за отставанием в байтах или секундах |
3. Запросы и активность
|
График |
Метрика |
Комментарий |
|---|---|---|
|
Slowest Queries (Top 10) |
pg_stat_statements_total_time, mean_time |
Требуется включение расширения |
|
Query Load by Database |
pg_stat_database_blks_hit, blks_read |
Использовать stacked bar |
|
Number of Deadlocks |
pg_stat_database_deadlocks |
Следить за ростом |
|
Query Plans Executed |
pg_stat_statements_plans |
Указывает на частоту новых планов |
4. Память и кэш
|
График |
Метрика |
Комментарий |
|---|---|---|
|
Shared Buffers Hit Ratio |
pg_stat_database_blks_hit / (blks_hit + blks_read) |
Норма > 0.99 |
|
Work Mem Usage (estimated) |
Custom или логика из query stats |
Используется для оценки настройки work_mem |
|
Autovacuum Activity |
pg_stat_user_tables_vacuum_count |
Рост → нагрузка, лучше cron/VACUUM FULL |
5. Диски и таблицы
|
График |
Метрика |
Комментарий |
|---|---|---|
|
Disk Usage (Total / Free) |
node_filesystem_avail_bytes{mountpoint="/var/lib/pgsql"} |
Проверка размера data_dir |
|
Table/Index Bloat |
Собственная метрика или интеграция с pgstattuple |
Вычисляется через custom job или SQL script |
|
Table Size (Top N) |
pg_relation_size через Exporter |
Иерархия: table, schema, size |
6. Безопасность и доступ
|
График |
Метрика |
Комментарий |
|---|---|---|
|
Login Attempts |
По логам / audit plugin (например pg_audit) |
Необходим логинг попыток входа |
|
Users and Roles Count |
pg_user и pg_roles |
Для аудита доступа |
|
Connections by User/Source |
pg_stat_activity (группировка по usename, client) |
Выявление аномалий или несанкционированных сессий |
7. Расширения и кастомные метрики
Если включены:
- pg_stat_statements → анализ производительности
- pg_stat_kcache → системные вызовы, CPU, IO
- pg_stat_activity → состояние сессий
Советы по реализации:
- Шаблоны Grafana: используйте Percona PostgreSQL Dashboard как основу.
-
Визуализация:
- Группировать панели по категориям: Сессии, Репликация, WAL, Таблицы, Запросы.
- Использовать templating ($instance, $database) для фильтрации.
- Алерты:
- TPS ниже X → тревога.
- Replication lag > 10 секунд.
- Slow queries > 1 секунда в течение 5 минут.
- Disk usage > 80%.



