Skip to main content

Настройка базы данных

Выбор СУБД

Все данные приложения после установки хранятся в файле data/application.db базы данных SQLite. Она входит в дистрибутив и не требует дополнительной настройки. Этот вариант подходит для ознакомления с системой, а также когда ТехноДок работает на одном сервере с небольшим количеством пользователей. Файл базы данных доступен только тому серверу, на котором он лежит, а репликации у SQLite нет, поэтому для кластера серверов приложений и для резервирования базы данных SQLite не подходит. Переходить на PostgreSQL или MariaDB стоит, когда нужен кластер серверов приложений или резервирование базы данных, когда число одновременно работающих пользователей растёт либо когда хранение и резервное копирование данных организация ведёт централизованно.

СУБДКогда подходит
SQLiteТехноДок работает на одном сервере, пользователей немного, резервирование базы данных не требуется. Отдельный сервер базы данных ставить не нужно.
PostgreSQLНужен кластер серверов приложений или резервирование базы данных и PostgreSQL принят в организации как корпоративный стандарт. Переключение между основным и резервным сервером базы данных настраивается отдельно, например через Patroni.
MariaDBНужен кластер серверов приложений или резервирование базы данных и настроить отказоустойчивую схему хочется с наименьшими усилиями: репликацию Master-Master MariaDB поддерживает сама.
Предупреждение

Перенести данные из одной СУБД в другую средствами ТехноДок невозможно. После смены СУБД система начинает работу с пустой базой данных.

Подключение к базе данных

Чтобы подключить ТехноДок к сторонней СУБД, выполните следующие шаги:

  1. Остановите сервер приложений ТехноДок.
  2. Откройте файл application.conf, найдите секцию [Database:Connections:Primary] и раскомментируйте ключи Type и ConnectionString для выбранной СУБД. Строки, относящиеся к остальным СУБД, оставьте закомментированными.
    [Database:Connections:Primary]
    Type = PostgreSql
    ConnectionString = Server=db.server;Database=technodoc;User Id=postgres;Password=password;SearchPath=td
  3. Сохраните изменения в файле application.conf.
  4. Для MariaDB добавьте в секцию [mysqld] конфигурационного файла my.cnf настройку sql-mode="ANSI_QUOTES" и перезапустите сервер MariaDB.
  5. Запустите скрипт run-migrator из директории scripts. Он создаёт базу данных, её структуру и начальные данные.
  6. Запустите сервер приложений и войдите в систему.
  7. Откройте страницу «Администрирование» → «Диагностика» → «Сервер» и убедитесь, что подключение отмечено как доступное.
Примечание

Поддерживаются PostgreSQL 11 и выше, MariaDB 10.3 и выше. Создавать базу данных заранее не нужно: скрипт run-migrator создаёт её с нуля по имени, указанному в строке соединения. Достаточно установленного сервера СУБД.

Предупреждение

Чтобы создать базу данных, run-migrator подключается к служебной базе данных СУБД postgres в PostgreSQL и mysql в MariaDB под той же учётной записью, что указана в строке соединения. Поэтому в строке соединения указывается административная учётная запись СУБД: postgres для PostgreSQL и root для MariaDB. С ней же ТехноДок работает и после установки.

Строка соединения

Строка соединения состоит из параметров, разделённых точкой с запятой. Набор параметров зависит от СУБД.

SQLite

Type             = SqLite
ConnectionString = Data Source=/opt/technodoc/data/application.db

Data Source — путь к файлу базы данных. Файл создаётся автоматически, каталог должен существовать и быть доступен серверу приложений на запись.

Полный перечень параметров приведён в документации Microsoft.Data.Sqlite.

PostgreSQL

Type             = PostgreSql
ConnectionString = Server=db.server;Database=technodoc;User Id=postgres;Password=password;SearchPath=td
  • Server — адрес сервера базы данных, при необходимости с портом: Server=db.server;Port=5432.
  • Database — имя базы данных.
  • User Id и Password — имя пользователя и его пароль.
  • SearchPath — схема, в которой размещаются таблицы ТехноДок. Скрипт run-migrator всегда создаёт схему td, поэтому и в строке соединения указывается td.

Полный перечень параметров приведён в документации Npgsql.

MariaDB

Type             = MariaDb
ConnectionString = Server=db.server;Database=technodoc;Uid=root;Password=password
  • Server — адрес сервера базы данных, при необходимости с портом: Server=db.server;Port=3306.
  • Database — имя базы данных.
  • Uid и Password — имя пользователя и его пароль.

Полный перечень параметров приведён в документации MySqlConnector.

Повторные попытки подключения

Если сеть между сервером приложений и сервером базы данных работает с перебоями, задайте в той же секции повторные попытки подключения:

ConnectionAttemptsCount  = 3
ConnectionAttemptsPeriod = 00:00:02
  • ConnectionAttemptsCount — количество попыток подключения. По умолчанию 3.
  • ConnectionAttemptsPeriod — пауза между попытками в формате [чч:мм:сс]. По умолчанию 2 секунды.

Пауза отсчитывается после неудачной попытки. Сколько времени занимает сама попытка, задаёт параметр строки соединения Timeout для PostgreSQL и Connection Timeout для MariaDB, по умолчанию 15 секунд для обеих СУБД. Пока попытки не исчерпаны, ТехноДок считает базу данных доступной и не сообщает пользователю об ошибке. Когда попытки исчерпаны, база данных считается недоступной: сервер приложений переключается на резервную базу данных, если она настроена.

Резервная база данных

Кроме основной базы данных можно настроить резервную в секции [Database:Connections:Standby]: набор ключей в ней тот же, что и у основной. Когда основная база данных перестаёт отвечать, сервер приложений продолжает работу с резервной. Репликацию между базами данных администратор должен настроить средствами СУБД. Резервирование базы данных и репликация для MariaDB и PostgreSQL описаны в статье Высокая доступность.