Подключение PostgreSQL
Минимальная поддерживаемая версия PostgreSQL — 15.
Рекомендации по конфигурации сервера PostgreSQL
Производительность YouGile при работе с PostgreSQL зависит в первую очередь от объёма данных и интенсивности их изменения, а не от количества пользователей.
Рекомендуемая конфигурация:
- Процессор: от 4 ядер с тактовой частотой не менее 3 ГГц;
- Оперативная память: от 16 ГБ (DDR4 или выше);
- Дисковая подсистема: быстрый SSD или NVMe (критично для скорости работы с базой данных).
Указанная конфигурация подходит для большинства сценариев использования, включая работу большого числа пользователей при умеренном объёме данных.
Размещение базы данных:
Наиболее ресурсоёмкая операция — перезапуск YouGile, создающий пиковую нагрузку на чтение данных из PostgreSQL.
- Если PostgreSQL размещается на отдельном физическом или виртуальном сервере, рекомендуется обеспечить гигабитное сетевое подключение (1 Гбит/с и выше) между сервером YouGile и сервером БД. Это существенно сократит время запуска и перезапуска системы.
- Если YouGile и PostgreSQL работают на одном сервере, учитывайте суммарное потребление ресурсов обеих систем.
Мониторинг и оптимизация:
- Регулярно отслеживайте метрики производительности PostgreSQL (нагрузку на CPU, дисковые операции ввода-вывода IOPS, использование памяти и задержки запросов).
- При интенсивном использовании (большие объёмы данных с частыми изменениями) может потребоваться индивидуальная настройка параметров PostgreSQL на основе анализа узких мест.
Подключение PostgreSQL, если в текущей базе нет данных
Чтобы использовать PostgreSQL в качестве базы данных, необходимо в файл conf.json добавить следующий блок:
"database": {
"account": {
"user": "db-user",
"password": "user-password",
"database": "db-name",
"port": 5432,
"host": "yourhost"
},
"company": {
"master": {
"user": "db-user",
"password": "user-password",
"database": "db-name",
"port": 5432,
"host": "yourhost"
}
},
"userEvents": {
"master": {
"user": "db-user",
"password": "user-password",
"database": "db-name",
"port": 5432,
"host": "yourhost"
}
}
},
user— Имя пользователя PostgreSQL, от имени которого будет происходить подключение.password— Пароль пользователя для подключения к базе данных.database— Название базы данных, к которой должно быть установлено подключение.port— Порт PostgreSQL.host— адрес PostgreSQL.
Подключение PostgreSQL, если в текущей базе уже есть данные (миграция существующей базы в PostgreSQL)
Предварительная подготовка:
- Убедиться, что версия PostgreSQL не ниже 15
- Установить nodejs v20.11
- В нужной директории выполнить и установить дополнительные пакеты:
npm init -y
npm install pg big-json - Если PostgreSQL-пользователь доступен под обычным пользователем,
sudoне требуется. При запуске сsudoвозможны ошибки, если нет соответствующих~/.npmи прав на чтение.
Важно: при использовании управления пользователями через файл необходимо сделать бэкап и директории database, и самого файла users.csv.
Миграция данных
Важно: сервер между шагами запускать нельзя — ни до, ни во время миграции. Запускать сервер можно только после того, как оба скрипта миграции завершат работу и в основной
conf.jsonбудет добавлен блок подключения к PostgreSQL.
- Остановить коробку
- Перейти в каталог tasks/db
- В каталогах migrate-storage-to-db и migrate-user-events-to-db переименовать и заполнить файл example.conf.json в conf.json
- В migrate-storage-to-db/conf.json параметр storage — это путь до каталога companies (как правило, /opt/yougile/database/companies)
- В migrate-user-events-to-db/conf.json параметр storage — это путь до каталога user-events (как правило, /opt/yougile/database/user-events)
- В каждом каталоге (migrate-storage-to-db и migrate-user-events-to-db) нужно выполнить команду
node index.mjs - Добавить в основной файл conf.json, который лежит в корневом каталоге yougile следующий блок:
"database": {
"account": {
"user": "db-user",
"password": "user-password",
"database": "db-name",
"port": 5432,
"host": "yourhost"
},
"company": {
"master": {
"user": "db-user",
"password": "user-password",
"database": "db-name",
"port": 5432,
"host": "yourhost"
}
},
"userEvents": {
"master": {
"user": "db-user",
"password": "user-password",
"database": "db-name",
"port": 5432,
"host": "yourhost"
}
}
},
user— Имя пользователя PostgreSQL, от имени которого будет происходить подключение.password— Пароль пользователя для подключения к базе данных.database— Название базы данных, к которой должно быть установлено подключение.port— Порт PostgreSQL.host— адрес PostgreSQL.
Примечание: host рекомендуется указывать как "localhost", если база данных находится на том же сервере, где yougile, или же как адрес хоста "yourhost", если база данных находится на другом сервере.
- Запустить коробку
Пример заполнения migrate-storage-to-db/conf.json и migrate-user-events-to-db/conf.json
- migrate-storage-to-db/conf.json:
{
"database": {
"host": "yourhost",
"port": "5432",
"name": "db-name",
"user": "db-user",
"password": "***",
"ssl": {
"rejectUnauthorized": false
}
},
"storage": "/opt/yougile/database/companies"
}
- migrate-user-events-to-db/conf.json:
{
"database": {
"host": "yourhost",
"port": "5432",
"name": "db-name",
"user": "db-user",
"password": "***",
"ssl": {
"rejectUnauthorized": false
}
},
"storage": "/opt/yougile/database/user-events"
}
Дополнительная информация о подключении к PostgreSQL
Количество соединений, необходимых сервису
YouGile использует встроенный пул подключений к PostgreSQL, поэтому нагрузка на базу оптимизирована самим сервисом.
-
Для стабильной работы требуется в среднем 2–4 активных соединения на один серверный процесс (нод).
-
Использование PgBouncer не является обязательным, так как встроенный пуллер уже обеспечивает эффективное распределение подключений.
-
Если у вас развёрнуты несколько компонент (AN, CN, UE), каждая из них создаёт свой собственный пул соединений, независимый от других модулей.
Таким образом, итоговое количество подключений будет зависеть от количества нод и используемых компонентов.
Какой режим PgBouncer необходим для работы с YouGile?
Если вы планируете использовать PgBouncer поверх PostgreSQL, необходимо учитывать особенности работы YouGile.
YouGile поддерживает работу через PgBouncer только в режиме session pooling