Показать / скрыть оглавление

    Установка сервера БД Колибри

    Колибри-Сфера использует PostgreSQL 16 или выше в качестве системного хранилища данных. Перед установкой Системы требуется установить и настроить системное ХД.

    Замечание

    Далее по тексту приведён пример установки сервера PostgreSQL 16 для Ubuntu 22.04, установка на других ОС может отличаться.
    Инструкции по установке можно найти по адресу https://www.postgresql.org/download/

    Установка PostgreSQL

    Эта инструкция описывает установку PostgreSQL 16 на Ubuntu 22.04.

    1. Добавление репозитория PostgreSQL:

    По умолчанию Ubuntu 22.04 предоставляет только определенные версии PostgreSQL через apt. Чтобы установить PostgreSQL 16, необходимо добавить репозиторий PostgreSQL.

    sudo apt update
    sudo apt install -y ca-certificates gnupg
    sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
    

    2. Импорт ключа GPG:

    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    

    3. Обновление списка пакетов:

    sudo apt update
    

    4. Проверка доступности версии 16:

    Перед установкой убедитесь, что версия 16 доступна для установки:

    apt-cache policy postgresql
    

    В выводе команды вы должны увидеть что-то подобное:

    postgresql:
      Installed: (none)
      Candidate: 16-1.pgdg110+1
      Version table:
         16-1.pgdg110+1 500
            500 http://apt.postgresql.org/pub/repos/apt jammy-pgdg/main amd64 Packages
         14-1.pgdg100+1 500
            500 http://apt.postgresql.org/pub/repos/apt jammy-pgdg/main amd64 Packages
    

    Это подтверждает, что версия 16 доступна для установки. Если вы видите только другие версии, убедитесь, что вы правильно добавили репозиторий и обновили список пакетов.

    5. Установка PostgreSQL 16:

    sudo apt install postgresql-16 postgresql-contrib-16
    

    6. Проверка установки:

    sudo systemctl status postgresql
    

    Если PostgreSQL запущен, вы увидите статус active (running). Чтобы убедиться, что установлена именно версия 16, можно проверить версию сервера:

    psql --version
    

    В выводе должно быть указано psql (PostgreSQL) 16.x.

    Настройка доступа

    По умолчанию PostgreSQL настроен на локальные подключения. Чтобы разрешить подключения из других компьютеров, нужно настроить файл postgresql.conf.

    1. Нахождение файла postgresql.conf:

    Расположение файла зависит от версии PostgreSQL. Для версии 16 обычно находится в /etc/postgresql/16/main/postgresql.conf.

    2. Редактирование postgresql.conf:

    Откройте файл postgresql.conf в текстовом редакторе с правами root:

    sudo nano /etc/postgresql/16/main/postgresql.conf
    

    3. Изменение настроек:

    Найдите строку listen_addresses = 'localhost' и измените её, чтобы разрешить подключения с других компьютеров. Например, чтобы разрешить подключения со всех адресов, измените её на listen_addresses = '*' (это небезопасно для production, рекомендуется указать конкретные IP-адреса).

    4. Настройка файла pg_hba.conf:

    Этот файл контролирует доступ к базе данных. Расположение файла аналогично postgresql.conf. Откройте его:

    sudo nano /etc/postgresql/16/main/pg_hba.conf
    

    Добавьте строки, разрешающие подключения с других компьютеров. Например, чтобы разрешить подключения с IP-адреса 192.168.1.100 к базе данных all с использованием пароля, добавьте:

    host    all             all             192.168.1.100/32            md5
    

    Замените 192.168.1.100 на IP-адрес подключающегося клиента. /32 указывает на конкретный IP-адрес. Для разрешения подключения с целой подсети, измените маску подсети. md5 указывает на использование MD5 для аутентификации паролем.

    5. Перезапуск PostgreSQL:

    После внесения изменений в postgresql.conf и pg_hba.conf, перезапустите PostgreSQL, чтобы изменения вступили в силу:

    sudo systemctl restart postgresql
    

    Конфигурирование

    Настройка PostgreSQL для оптимальной производительности требует тщательной настройки параметров конфигурации. Примерные значения, которые могут быть изменены в postgresql.conf:

    Свойство Значение
    listen_addresses Список разрешённых адресов для подключения или '*' Например, listen_addresses = '*'
    work_mem 512MB (Регулирует объем памяти, выделяемый для сортировки и хэширования данных. Увеличивайте, если возникают проблемы с сортировкой больших объемов данных.)
    shared_buffers 25% от RAM сервера (Кэширует данные. Увеличьте, если у вас достаточно RAM.)
    maintenance_work_mem 1GB (Используется для операций обслуживания, таких как VACUUM и CREATE INDEX. Увеличивайте, если эти операции занимают много времени.)
    effective_cache_size от 50 до 75 процентов от RAM (Указывает PostgreSQL, сколько памяти доступно для кеширования данных операционной системой.)
    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' (Сообщения на русском языке)

    Важно: Эти значения являются лишь отправной точкой. Оптимальные значения зависят от вашей нагрузки и аппаратного обеспечения. Мониторинг производительности и корректировка настроек необходимы для достижения оптимальной производительности.

    Просмотр журнала

    Журналы PostgreSQL обычно находятся в каталоге /var/log/postgresql/16/main/. Можно просматривать их в реальном времени с помощью команды:

    sudo tail -f /var/log/postgresql/16/main/postgresql.log
    

    Восстановление БД из резервной копии

    Для восстановления базы данных из резервной копии, используйте утилиту pg_restore или psql. Если резервная копия была создана с помощью pg_dump, используйте pg_restore.

    Пример использования pg_restore:

    pg_restore -U postgres -d <имя_базы_данных> <путь_к_резервной_копии.dump>
    

    Замените <имя_базы_данных> на имя базы данных, в которую вы хотите восстановить данные, и <путь_к_резервной_копии.dump> на путь к файлу резервной копии. Укажите имя пользователя (например, postgres) с достаточными правами.

    Если резервная копия - это простой SQL-файл, можно восстановить её с помощью psql:

    psql -U postgres -d <имя_базы_данных> -f <путь_к_резервной_копии.sql>
    

    Опять же, замените <имя_базы_данных> и <путь_к_резервной_копии.sql> на соответствующие значения.

    Совет

    Для отображения системных ошибок на английском в свойстве lc_messages укажите 'en_US.UTF-8'.
    При этом необходимо убедиться в наличии указанной локали:

    locale -a
    

    Если в перечне отсутствует локаль 'en_US.UTF-8', её необходимо сгенерировать. Для этого добавляем локаль в список, открыв файл со списком и убрав знак комментария # в строке с нужной локалью.

    sudo nano -l /etc/locale.gen
    

    После сохранения файла, сгенерируем локаль:

    sudo locale-gen
    
    В начало страницы