Модуль 3. Инфраструктура и развертывание Postgres Pro
Успешная реализация хранилища данных на базе Postgres Pro требует не только грамотного моделирования, но и правильной инфраструктурной подготовки. От того, как развернута система, какие параметры конфигурации заданы и как организовано физическое хранение данных, напрямую зависит производительность аналитических запросов, устойчивость к нагрузкам и удобство сопровождения.
В этом модуле рассмотрим пошагово:
- установку Postgres Pro;
- настройку параметров под аналитические нагрузки;
- принципы организации физического хранения данных, включая tablespaces и секционирование.
Раздел 1. Установка Postgres Pro
1.1 Поддерживаемые операционные системы
Postgres Pro поддерживается на следующих дистрибутивах Linux:
- Astra Linux (Смоленск, Орел)
- РЕД ОС
- Альт Линукс
- ROSA
- CentOS 7 и 8
- Rocky Linux 8 и 9
- Ubuntu 20.04 и 22.04
- Debian 10 и 11
1.2 Установка из официальных репозиториев
Пример для Debian/Ubuntu:
- Добавить репозиторий:
echo "deb https://repo.postgrespro.ru/deb/ stable main" | sudo tee /etc/apt/sources.list.d/postgrespro.list wget -q https://repo.postgrespro.ru/keys/ACCC4CF8.asc -O- | sudo apt-key add - sudo apt update
- Установить пакет:
sudo apt install postgrespro-std-15
Аналогично можно установить версии enterprise, certified и их комбинации.
1.3 Инициализация кластера
sudo /opt/pgpro/std-15/bin/initdb -D /var/lib/pgpro/std-15/data
1.4 Запуск службы
sudo systemctl start postgrespro-std-15 sudo systemctl enable postgrespro-std-15
Установка Postgres Pro может быть выполнена различными способами в зависимости от ваших потребностей и операционной системы. Ниже приведены основные методы установки:
Установка из двоичных пакетов
Postgres Pro предоставляет двоичные пакеты для различных дистрибутивов Linux, включая:
- Red Hat Enterprise Linux (RHEL) и производные: CentOS, Rocky Linux, Oracle Linux.
- Debian и производные: Ubuntu, Astra Linux.
- Альт Линукс.
- SUSE Linux Enterprise Server (SLES).
Быстрая установка
Для быстрой установки выполните следующие шаги:
- Подключите репозиторий пакетов, предназначенный для вашей операционной системы.
- Установите пакет postgrespro-std-<версия> или postgrespro-ent-<версия>, в зависимости от выбранной редакции.
При установке по зависимостям установятся все требуемые компоненты, будет создана база данных по умолчанию, запущен сервер баз данных и настроен автозапуск сервера при загрузке системы.
Расширенная установка
Для более гибкой настройки:
- Подключите репозиторий пакетов, предназначенный для вашей операционной системы.
-
Выберите и установите необходимые пакеты, такие как:
- postgrespro-std-<версия>-server
- postgrespro-std-<версия>-client
- postgrespro-std-<версия>-libs
- postgrespro-std-<версия>-contrib
- postgrespro-std-<версия>-devel
- Инициализируйте кластер баз данных с помощью команды:
/opt/pgpro/std-<версия>/bin/pg-setup initdb
- Запустите сервер:
/opt/pgpro/std-<версия>/bin/pg-setup service start
Установка с использованием Docker
Postgres Pro предоставляет официальные образы Docker. Для установки выполните:
docker pull postgrespro/postgrespro-std:<версия>
docker run --name pgpro -e POSTGRES_PASSWORD=yourpassword -d postgrespro/postgrespro-std:<версия>:contentReference[oaicite:81]{index=81}
Замените <версия> на нужную вам версию, например, 14.
Установка из исходного кода
Если вам требуется собрать Postgres Pro из исходников:
- Скачайте исходный код с официального сайта.
- Распакуйте архив и перейдите в каталог с исходниками.
- Выполните команду конфигурации:
./configure --prefix=/usr/local/pgsql
- Соберите и установите:
make
make install:contentReference[oaicite:106]{index=106}- Создайте кластер баз данных:
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
- Запустите сервер:
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
Дополнительные настройки
- Для настройки автоматического запуска сервера используйте системные средства управления службами, такие как systemctl.
- Убедитесь, что каталоги данных и табличных пространств исключены из проверки антивирусным программным обеспечением, чтобы избежать проблем с производительностью.
Для получения более подробной информации и инструкций, пожалуйста, обратитесь к официальной документации Postgres Pro, соответствующей вашей версии и редакции.
2. Конфигурация параметров для аналитических нагрузок
Postgres Pro предоставляет гибкую систему настройки конфигурации через файл postgresql.conf. Параметры следует адаптировать под аналитические задачи с учетом объема памяти, типов запросов и частоты агрегаций.
2.1 shared_buffers
- Описание: объем памяти, выделяемый под кэш буферов данных.
- Рекомендуемое значение: от 25 до 40 процентов доступной оперативной памяти.
- Пример:
shared_buffers = 8GB
2.2 work_mem
- Описание: объем памяти, выделяемый под сортировку и хэш-операции в рамках одного запроса.
- Важно: применяется на каждый узел плана запроса.
- Для аналитики часто увеличивают до 64MB и более.
- Пример:
work_mem = 128MB
2.3 maintenance_work_mem
- Описание: память для операций VACUUM, CREATE INDEX, CLUSTER.
- Для крупных таблиц рекомендуется увеличить до нескольких гигабайт.
- Пример:
maintenance_work_mem = 2GB
2.4 effective_cache_size
- Описание: предположительный объем кэша ОС, доступный PostgreSQL.
- Обычно задается как 50-75 процентов всей памяти.
- Пример:
effective_cache_size = 24GB
2.5 parallel_workers, max_parallel_workers, parallel_setup_cost
- Описание: параметры для управления параллельным выполнением запросов.
- Пример конфигурации:
max_parallel_workers = 16 parallel_workers = 8 parallel_setup_cost = 1000 parallel_tuple_cost = 0.05
2.6 random_page_cost и seq_page_cost
- Описание: стоимость случайного и последовательного доступа к диску.
- Для SSD можно снизить random_page_cost.
- Пример:
random_page_cost = 1.1 seq_page_cost = 1.0
2.7 jit и jit_provider
- Описание: включение JIT-компиляции запросов.
- JIT стоит включать при наличии CPU с поддержкой LLVM.
- Пример:
jit = on jit_provider = llvmjit
Раздел 3. Организация хранения данных
3.1 Tablespaces
Tablespace — это логическое имя для набора файлов данных, хранящихся в определенной директории. Используется для распределения данных по разным дискам или файловым системам.
Создание tablespace:
mkdir /mnt/disk1/pgdata_ts chown postgres:postgres /mnt/disk1/pgdata_ts
CREATE TABLESPACE fast_space LOCATION '/mnt/disk1/pgdata_ts';
Использование tablespace:
CREATE TABLE big_fact_table (
id BIGINT,
value NUMERIC
) TABLESPACE fast_space;
Tablespaces часто применяются:
- для разгрузки основного тома;
- для размещения таблиц с высокой частотой чтения или записи;
- для хранения индексов отдельно от данных.
3.2 Секционирование (partitioning)
Секционирование позволяет разбивать одну логическую таблицу на множество физических подтаблиц (партиций) для повышения производительности.
Типы секционирования:
- Range (по диапазону значений)
- List (по значениям из списка)
- Hash (по хэшу значения)
Пример range-секционирования:
CREATE TABLE sales (
id SERIAL,
sale_date DATE,
amount NUMERIC
) PARTITION BY RANGE (sale_date);
CREATE TABLE sales_2023_01 PARTITION OF sales
FOR VALUES FROM ('2023-01-01') TO ('2023-02-01');
CREATE TABLE sales_2023_02 PARTITION OF sales
FOR VALUES FROM ('2023-02-01') TO ('2023-03-01');
Преимущества:
- быстрый доступ к нужному разделу;
- эффективная очистка устаревших данных (DROP PARTITION);
- параллельная обработка разделов;
- возможность использования отдельных индексов на партициях.
Управление:
В Postgres Pro можно автоматизировать создание и удаление секций через pg_pathman или планировщик pgpro_scheduler.
Раздел 4. Практические рекомендации
- Используйте секционирование для всех крупных таблиц с временным признаком.
- Настраивайте tablespaces так, чтобы разделы и индексы хранились на отдельных томах.
- Увеличивайте work_mem и shared_buffers в зависимости от объема запросов и отчетов.
- Применяйте JIT только если нагрузка состоит из сложных вычислений.
- Используйте логическую репликацию и WAL-архивацию для резервирования.
- Мониторьте pg_stat_statements, pgpro_stats и используйте pgpro_scheduler для планирования задач.
Заключение
Инфраструктура Postgres Pro дает широкие возможности для адаптации под высоконагруженные аналитические задачи. Благодаря грамотной настройке параметров и применению современных механизмов хранения данных — таких как секционирование и tablespaces — можно добиться высокой производительности, отказоустойчивости и масштабируемости хранилища.
Postgres Professional — это российская промышленная СУБД, созданная на базе открытого PostgreSQL, но значительно расширенная для корпоративного применения. В отличие от классического PostgreSQL, решения от Postgres Professional включают в себя поддержку российских ГОСТов и сертификацию ФСТЭК, повышенную надёжность, оптимизации под высоконагруженные системы (в том числе 1С и DWH), инструменты резервного копирования, мониторинга и отказоустойчивости. За платформой стоит команда ядра PostgreSQL в России, что гарантирует актуальность, стабильность и экспертную техническую поддержку 24/7.
Для компаний, которым важно не просто использовать PostgreSQL, а внедрить его на уровне корпоративных стандартов — с гарантией, сопровождением, документированными улучшениями и адаптацией под российское законодательство — Postgres Pro Enterprise становится логичным выбором. Это не просто бесплатная база данных, а полноценный продуктовый стек, совместимый с BI, аналитикой, ERP, 1С и другими системами, в том числе импортозамещёнными.



