Установка сервера БД Колибри
В качестве системы управления базами данных, приложения, разработанные на базе системы Колибри, используют PostgreSQL 13 и выше.
Замечание
Далее по тексту приведён пример установки сервера PostgreSQL для Debian 10, установка на других ОС может отличаться.
Инструкции по установке можно найти по адресу https://www.postgresql.org/download/
Установка PostgreSQL
Создадим файл с конфигурацией репозитория PostgreSQL:
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Получим ключ репозитория PostgreSQL:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Обновим репозиторий
apt-get
:sudo apt-get update
Установим последнюю версию PostgreSQL:
sudo apt-get -y install postgresql
Для установки определенной версии, укажите её, например
postgresql-12
вместоpostgresql
.Замечание
Далее по тексту приведён пример установки PostgreSQL 12.
Перед первым запуском должен быть инициализирован кластер PostgreSQL.
На предыдущем шаге при установке сервера кластер должен быть инициализирован. Проверить это можно по наличию каталога, в котором будут находиться данные:sudo cd /var/lib/postgresql/12/main
Если каталог отсутствует, необходимо инициализировать кластер:
sudo /usr/lib/postgresql/12/bin/initdb -D /var/lib/postgresql/12/main --auth-local peer --auth-host md5
Запустим сервис PostgreSQL:
sudo systemctl start postgresql.service
Включим автозапуск сервиса PostgreSQL:
sudo systemctl enable postgresql.service
Проверить успешность запуска можно с помощью команды:
sudo systemctl status postgresql
Настройка доступа
Откроем файл настроек аутентификации в редакторе и добавим туда требуемые строки с настройками доступа:
sudo nano -l /etc/postgresql/12/main/pg_hba.conf
1.1. Для доступа без пароля с локального компьютера добавим строку:
local all postgres trust
1.2. Для доступа из локальной сети с паролем в самую последнюю строку добавим строку, указывая адрес и маску рабочей сети:host all all 192.168.121.1/24 md5
1.3. Сохраним файл.Перезагрузим PostgreSQL:
sudo systemctl restart postgresql
Подключимся локальным пользователем, должна появиться строка приглашения
postgres=#
:psql -U postgres
Проверим каталог данных (результат должен совпадать с каталогом кластера, п. 5 Установки PostgreSQL):
show data_directory;
Не выходя из консоли psql установим пароль для пользователя postgres:
alter user postgres with password 'password';
Теперь под этим пользователем с этим паролем можно подключиться из локальной сети.
Настроим доступ из сети и примитивную оптимизацию.
6.1. Откроем файл конфигурации в редакторе для внесения изменений.sudo nano -l /etc/postgresql/12/main/postgresql.conf
Устанавливаемые настройки приведены в таблице ниже.
Если строка со свойством закомментирована, уберём знак комментария#
в начале строки.Свойство Значение listen_addresses Список разрешённых адресов для подключения или '*'
Например,listen_addresses = '*'
work_mem 512MB shared_buffers 25% от RAM сервера maintenance_work_mem 1GB effective_cache_size от 50 до 75 процентов от RAM lc_monetary 'ru_RU.UTF-8' lc_numeric 'ru_RU.UTF-8' lc_time 'ru_RU.UTF-8' datestyle 'ISO, DMY' lc_messages 'ru_RU.UTF-8' Совет
Для отображения системных ошибок на английском в свойстве
lc_messages
укажите 'en_US.UTF-8'.
При этом необходимо убедиться в наличии указанной локали:locale -a
Если в перечне отсутствует локаль 'en_US.UTF-8', её необходимо сгенерировать. Для этого добавляем локаль в список, открыв файл со списком и убрав знак комментария
#
в строке с нужной локалью.sudo nano -l /etc/locale.gen
После сохранения файла, сгенерируем локаль:
sudo locale-gen
6.2. Сохраним файл.
6.3. Перезагрузим сервер:sudo systemctl restart postgresql
Просмотр журнала
В случае ошибок запуска сервера PostgreSQL или необходимости просмотреть журнал можно открыть его в редакторе:
sudo nano /var/log/postgresql/postgresql-12-main.log
Отключение firewall
Если сервер находится внутри защищённой сети возможно отключить фаервол:
systemctl disable firewalld & systemctl stop firewalld
Если фаервол отключать нельзя, то необходимо открыть порты для PostgreSQL.
Восстановление БД из резервной копии
Создадим новую базу данных, в которую будет восстановлена резервная копия:
createdb --username postgres colibri_db
Вместо colibri_db можно ввести любое другое название.
После создания базы данных, требуется восстановить резервную копию:
pg_restore --username postgres --no-owner --single-transaction --dbname "colibri_db" "~/colibri_db.backup"
Где colibri_db — это имя базы данных, созданной на предыдущем шаге, в конце команды полный путь к файлу резервной копии.