Развертывание базы данных
Перед тем как приступить к развертыванию базы данных, необходимо запустить контейнер PostgreSQL. Для этого выполните следующую команду на хост-машине:
sudo docker-compose up -d postgresql
Подготовка к выполнению скрипта
Скрипт deploy-db.sh автоматически восстанавливает базу из копии, назначает права и обновляет лицензии. Данный скрипт адаптирован под работу в Docker-контейнере и находится по пути: ./DockerCompose/Postgres/Initdb.
Для подготовки к запуску скрипта:
1. Разместите дамп: поместите файл базы в формате .pg в директорию ../Backup/. Файл базы можно взять из папки Backup десктопного клиента Business Studio 7. В данной папке хранятся пустые базы данных (префикс: «empty») и демонстрационные базы данных (префикс: «demo»).
Примечание: если вы хотите создать новую базу данных с нуля, пропустите данный шаг.
2. Перейдите к скрипту: откройте директорию ./DockerCompose/Postgres/Initdb.
3. Дайте права на запуск скрипта, выполнив команду:
chmod +x deploy-db.sh
4. Настройте параметры. Откройте скрипт на редактирование и заполните следующие поля:
CONTAINER— имя контейнера (postgresql).DB_NAME— имя создаваемой или обновляемой базы.BACKUP_DEFAULT— путь до файла базы.NEW_USERиNEW_PASS— учетная запись, через которую приложение будет работать с базой.LICENSE— IP-адрес машины, на которой была активирована лицензия (см. Настройка сервера лицензий).
5. Убедитесь, что параметры подключения, которые вы заполнили для файла скрипта, совпадают с теми, которые были указаны в appsettings.json (см. Настройка файла appsettings.json). Проверьте параметры: Db, SqlUser, SqlPass.
Запуск развертывания
1. Убедитесь, что контейнер PostgreSQL запущен при помощи команды:
docker ps | grep postgresql
2. Запустите процесс развертывания командой:
./deploy-db.sh --start
Внимание! Если вы хотите перезаписать базу данных (удалить существующую и создать на ее месте новую), добавьте к команде ключ --FORCE-DROP-EXISTING-DATABASE. Команда примет следующий вид: ./deploy-db.sh --start --FORCE-DROP-EXISTING-DATABASE
Скрипт выполняет следующие действия:
- Проверяет наличие файла базы данных и доступ к Docker-контейнеру. Если такая база данных уже существует — выполнение скрипта будет остановлено, чтобы предотвратить потерю данных.
- При запуске с флагом
--FORCE-DROP-EXISTING-DATABASEскрипт принудительно завершает все активные сессии и пересоздаёт базу данных. - Отображает индикатор прогресса восстановления базы данных в консоли.
- Восстанавливает структуру и данные базы.
- Автоматически создаёт необходимые роли и назначает пользователю права владельца на все таблицы, функции, процедуры и последовательности.
- Обновляет IP-адрес сервера лицензий в таблице
public.pinger. - Логирует все действия в отдельный файл.
Примечание: отчет о работе скрипта сохраняется автоматически в лог-файл deploy-db<имя_базы_данных>.log.
Часто встречающиеся проблемы и рекомендации к работе
Рекомендация №1: для корректной работы Business Studio все подключённые базы данных должны использовать один и тот же сервер лицензий (см. Настройка сервера лицензий).
Рекомендация №2: скрипт ./deploy-db.sh --start автоматически приводит имена баз и пользователей к нижнему регистру (строчные буквы). Это сделано для того, чтобы избежать ошибок авторизации в Linux и PostgreSQL. При настройке подключения в файле appsettings.json также рекомендуется использовать только нижний регистр.