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

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

Пример заполнения 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