Проблемы PostgreSQL
DataHUB не запускается: ошибка подключения к PostgreSQL
Симптом: в логах Connection refused, password authentication failed или database does not exist.
Проверить:
- PostgreSQL запущен:
docker psилиpg_isready -h localhost -p 5432. - Параметры подключения в конфигурации DataHUB: хост, порт, имя базы, пользователь, пароль.
- Пользователь существует и имеет права на базу:
- Сетевая доступность порта
5432если PostgreSQL на другом хосте.
Ошибка при обновлении: миграция не прошла
Симптом: DataHUB запускается, но падает при попытке выполнить Flyway/Liquibase миграцию.
Причины:
- База не пуста, а скрипт ожидает чистую схему.
- Пользователь не имеет прав CREATE TABLE / ALTER TABLE.
- Конфликт версий миграций (изменён чекsum уже применённого скрипта).
Действие: 1. Проверить логи DataHUB — там указана конкретная миграция и ошибка. 2. Предоставить необходимые права пользователю. 3. При конфликте чексуммы — выяснить, был ли скрипт изменён после применения; не изменять уже применённые миграции.
Медленные запросы
Симптом: DataHUB работает, но сообщения обрабатываются медленно при больших объёмах.
Анализ:
-- Медленные запросы (если включено pg_stat_statements)
SELECT query, calls, total_exec_time / calls AS avg_ms
FROM pg_stat_statements
ORDER BY avg_ms DESC
LIMIT 20;
-- Активные соединения
SELECT count(*) FROM pg_stat_activity WHERE state = 'active';
-- Размер таблиц
SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
FROM pg_stat_user_tables
ORDER BY pg_total_relation_size(relid) DESC;
Типичные причины: отсутствие вакуума на активно обновляемых таблицах; нехватка max_connections; блокировки.
Превышен лимит соединений
Симптом: FATAL: remaining connection slots are reserved for non-replication superuser connections.
Действие:
1. Увеличить max_connections в postgresql.conf (с перезапуском).
2. Настроить пул соединений (PgBouncer) если его ещё нет.
3. Проверить, нет ли утечки соединений в DataHUB: SELECT count(*) FROM pg_stat_activity WHERE application_name = 'DataHUB';
Смена пароля пользователя
Изменение переменной POSTGRES_PASSWORD в .env не меняет пароль в уже инициализированной базе. Пароль меняется только через SQL:
После смены — обновить пароль в конфигурации DataHUB и перезапустить сервис.