Перейти к основному содержимому

Подключение 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)

Предварительная подготовка:

  • Установить nodejs v20.11
  • В нужной директории выполнить и установить дополнительные пакеты:
    npm init -y
    npm install pg big-json
  • Если PostgreSQL-пользователь доступен под обычным пользователем, sudo не требуется. При запуске с sudo возможны ошибки, если нет соответствующих ~/.npm и прав на чтение.

Важно: при использовании управления пользователями через файл необходимо сделать бэкап и директории database, и самого файла users.csv.

Миграция данных

  • Остановить коробку
  • Перейти в каталог 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", если база данных находится на другом сервере.

Дополнительная информация о подключении к PostgreSQL

Количество соединений, необходимых сервису

YouGile использует встроенный пул подключений к PostgreSQL, поэтому нагрузка на базу оптимизирована самим сервисом.

  • Для стабильной работы требуется в среднем 2–4 активных соединения на один серверный процесс (нод).

  • Использование PgBouncer не является обязательным, так как встроенный пуллер уже обеспечивает эффективное распределение подключений.

  • Если у вас развернуты несколько компонент (AN, CN, UE), каждая из них создаёт свой собственный пул соединений, независимый от других модулей.

Таким образом, итоговое количество подключений будет зависеть от количества нод и используемых компонентов.

Какой режим PgBouncer необходим для работы с YouGile?

Если вы планируете использовать PgBouncer поверх PostgreSQL, необходимо учитывать особенности работы YouGile.

YouGile поддерживает работу через PgBouncer только в режиме session pooling