Установка ApiDQ базы данных

Установка ApiDQ базы данных #

Инструкция написана для Ubuntu 24.04 LTS и PostgreSQL 18.

Установка postgresql #

PostgreSQL и PostGIS устанавливаются из официального репозитория PostgreSQL (pgdg).

sudo apt update
sudo apt install curl ca-certificates gnupg
sudo curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc -o /usr/share/keyrings/postgresql.asc
echo "deb [signed-by=/usr/share/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
sudo apt update
sudo apt install postgresql-18 postgresql-client-18 postgresql-contrib postgresql-18-postgis-3 postgresql-18-postgis-3-scripts

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

Настройки ApiDQ удобно держать в отдельном файле в каталоге conf.d - он подключается автоматически и не затрагивает основной postgresql.conf.

Создайте файл /etc/postgresql/18/main/conf.d/apidq.conf следующего содержания

# --- Сеть ---
listen_addresses = '*'
port = 5432

# --- Память ---
shared_buffers = 3GB
effective_cache_size = 5GB

# --- Расширения ---
shared_preload_libraries = 'pg_prewarm,pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = all

# Прогрев кэша после перезапуска PostgreSQL
pg_prewarm.autoprewarm = on
pg_prewarm.autoprewarm_interval = 300s

# --- Логирование медленных запросов (дольше 0.3 с) ---
logging_collector = on
log_min_duration_statement = 300

listen_addresses - указывает IP-адрес, на котором сервер должен прослушивать соединения от клиентских приложений. Значение принимает форму списка имен хостов и / или числовых IP-адресов, разделенных запятыми.

Параметры использования памяти задаются в процентах от RAM сервера:

shared_buffers = 25–40% RAM
effective_cache_size = 60–75% RAM

В примере выше приведены значения для сервера с 8 ГБ RAM.

Если база данных и приложение установлены на одном сервере, учитывайте память сервисов ApiDQ (около 2 ГБ) - для сервера с 8 ГБ RAM не задавайте shared_buffers больше 3 ГБ.

Необходимо добавить правило доступа и метод аутентификации для сервера базы данных. Отредактируйте /etc/postgresql/18/main/pg_hba.conf и добавьте новую строку

host    db_apidq        user_apidq      192.168.0.0/24          md5

192.168.0.0/24 - подсеть, из которой вы будете подключаться к базе данных

Если приложение установлено на том же сервере, что и база данных, сервисы подключаются из подсетей Docker - укажите подсеть 172.16.0.0/12

Перезагрузите сервер postgresql.

sudo systemctl restart postgresql@18-main

Создание базы данных и пользователя #

db_apidq - имя базы данных user_apidq - пользователь p_a_s_s_w_o_r_d - пароль

sudo su postgres
psql -c "CREATE ROLE user_apidq WITH LOGIN PASSWORD 'p_a_s_s_w_o_r_d';"
createdb -O user_apidq -E UTF8 db_apidq
psql db_apidq -c 'CREATE EXTENSION IF NOT EXISTS postgis;'
psql db_apidq -c 'CREATE EXTENSION IF NOT EXISTS hstore;'
psql db_apidq -c 'CREATE EXTENSION IF NOT EXISTS pg_trgm;'
psql db_apidq -c 'CREATE EXTENSION IF NOT EXISTS "uuid-ossp";'
psql db_apidq -c 'CREATE EXTENSION IF NOT EXISTS pg_prewarm;'
psql db_apidq -c 'CREATE EXTENSION IF NOT EXISTS pg_stat_statements;'
exit
Расширения создаются от имени postgres. Пользователю user_apidq права суперпользователя не требуются - достаточно быть владельцем базы данных.

Восстановление справочников из резервной копии #

Загрузите справочники по инструкции

Восстановите справочники из резервной копии. Список может отличаться в зависимости от подключенного функционала. Корректный набор справочников вы всегда можете уточнить в поддержке, актуальные версии - в блоке Требования к версиям справочников на странице История изменений.

Параметр -j задаёт число параллельных потоков восстановления - укажите количество CPU сервера. Восстановление справочника ru может занимать до 60 минут.

cd ~/apidq/dumps
export PGPASSWORD='p_a_s_s_w_o_r_d'
pg_restore --no-owner --no-acl -Fc -j 8 -U user_apidq -h 127.0.0.1 -d db_apidq services_20241030.dump
pg_restore --no-owner --no-acl -Fc -j 8 -U user_apidq -h 127.0.0.1 -d db_apidq ru_20260907.dump
pg_restore --no-owner --no-acl -Fc -j 8 -U user_apidq -h 127.0.0.1 -d db_apidq name_20210801.dump

Сбор статистики после восстановления #

Этот шаг обязателен. pg_restore не переносит статистику планировщика: без неё первые же запросы к справочнику адресов выполняются полным перебором таблиц и могут полностью загрузить CPU и память сервера.

Выполните VACUUM ANALYZE для восстановленных схем до запуска приложения:

vacuumdb --analyze --jobs=8 -U user_apidq -h 127.0.0.1 -d db_apidq --schema=services --schema=ru --schema=public

Перечислите через --schema все восстановленные схемы. Справочник name восстанавливается в схему public.

После этого рекомендуем прогреть кэш PostgreSQL - команды приведены в разделе Обновление и восстановление.