# Запуск Pilot-Server в кластерном режиме

Для начала работы необходимо создать пользователя в PostgreSQL, от имени которого будет осуществляться подключение к базе данных. Пользователь должен обладать правами на создание базы данных.

## Создание базы данных

Временно не реализовано.

## Миграция базы данных

Осуществить миграцию базы данных из *.dbp файлов (если такой базы нет, то можно воспользоваться одной из демонстрационных баз) необходимо с помощью консольного приложения PostgresMigration, которое

- создаст базу данных в PostgreSQL и скопирует туда данные из *.dbp файлов базы данных;
- обновит *.dbp файлы базы данных до версии PostgresMigration, если версия базы данных ниже;
- создаст конфигурационную базу данных в PostgreSQL для хранения настроек кластера Pilot-Server;

Запуск консольного приложения PostgresMigration:

    PostgresMigration settingsFileName pgConnectionString redisConnectionString configDbName adminLogin adminPassword

Внимание! Перед запуском PostgresMigration необходимо выполнить остановку Pilot-Server, к которому подключены мигрируемые базы *.dbp.

Параметры запуска PostgresMigration:

- `settingsFileName` - путь к файлу settings.xml с подключенной к Pilot-Server базой данных *.dbp;
- `pgConnectionString` - строка подключения к PostgreSQL с параметрами:
  - `Host` - адрес сервера PostgreSQL;
  - `Username` - имя созданного пользователя PostgreSQL (например, pilotuser);
  - `Password` - пароль;
  - `Include Error Detail` - получение детализированных описаний ошибок PostgreSQL (рекомендуемое значение: true);
  - `DataBase` - имя служебной (default) базы PostgreSQL (по умолчанию ‘postgres’);
- `redisConnectionString` - строка подключения к Redis;
- `configDbName` - имя конфигурационной базы для хранения настроек кластера Pilot-Server (например, configurationdb);
- `adminLogin` - логин администратора Pilot-Server;
- `adminPassword` - пароль администратора Pilot-Server;

В результате миграции будет создана конфигурационная база данных с именем, указанным в параметре configDbName, к которой будет осуществлять подключение Pilot-Server, и смигрированные базы данных с именами, указанными в settings.xml.

Внимание! Консольное приложение PostgresMigration выполнит миграцию всех баз данных *.dbp, сохраненных Pilot-Server в settings.xml. Если какие-то базы не требуется мигрировать на PostgreSQL, то их необходимо отсоединить от Pilot-Server до запуска PostgresMigration.

Пример запуска миграции:

    chmod +x PostgresMigration
    ./PostgresMigration ./settings.xml "Host=mypostgres:5432; Username=pilotuser; Include Error Detail=true; Password=password; DataBase=postgres" "myredis:6379, password=password" configurationdb root root

Внимание! Если после миграции файловые архивы были перенесены в другое расположение, то в конфигурационной базе нужно также указать новый путь. Для этого необходимо воспользоваться командами -rc и -wc в Ascon.Pilot.Daemon или в консольном приложении pServerAdmin (информацию об этих командах смотрите https://help.pilotems.com/ru/Content/pServerAdmin.htm).

## Запуск Pilot-Server

После того как на PostgreSQL была мигрирована база данных, можно запускать Pilot-Server с параметрами:

- `--pgConnectionString` - строка подключения к конфигурационной базе PostgreSQL. В строке подключения параметром DataBase указать имя конфигурационной базы данных;
  - `Host` - адрес сервера PostgreSQL;
  - `Username` - имя созданного пользователя PostgreSQL (например, pilotuser);
  - `Include Error Detail` - получение детализированных описаний ошибок PostgreSQL (рекомендуемое значение: true);
  - `Pooling` - включение пуллинга (рекомендуемое значение: true)
  - `Connection Lifetime` - время жизни подключений к PostgreSQL (рекомендуемое значение: 0),
  - `Keepalive` - поддержание соединения к PostgreSQL (рекомендуемое значение: 3),
  - `Password` - пароль;
  - `DataBase` - имя конфигурационной базы для хранения настроек кластера Pilot-Server (например, configurationdb);
- `--indexPath` - путь для хранения индексов Pilot-Server;
- `--httpPort` - HTTP порт;
- `--httpsPort` - HTTPS порт;

Пример запуска Pilot-Server для работы с PostgreSQL:

    chmod +x Ascon.Pilot.Daemon
    ./Ascon.Pilot.Daemon --pgConnectionString="Host=mypostgres:5432;Username=pilotuser;Include Error Detail=true;Pooling=true;Connection Lifetime=0;Keepalive=3; Password=password; DataBase=configurationdb" --httpPort="5545" --httpsPort="5548" --indexPath=.\Indexes