Как настроить PostgresPro для работы с 1С и создать пользователя базы данных?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Переход с привычных коммерческих СУБД, таких как MS SQL Server или IBM DB2, на PostgresPro часто вызывает вопросы у системных администраторов и специалистов 1С. В этой статье мы подробно разберем процесс первоначальной настройки сервера баз данных, научимся создавать пользователя для подключения сервера приложений 1С и проанализируем ключевые параметры оптимизации, которые помогут избежать «тупняков» и деградации производительности.

Различие между системным пользователем и пользователем СУБД

Первое, с чем мы сталкиваемся при установке PostgresPro на Linux (например, Xubuntu) — это наличие двух уровней учетных записей. Разберем этот момент подробнее. Существует системный пользователь postgres в операционной системе, который создается автоматически при установке пакета, и существуют внутренние роли (пользователи) самой СУБД. Для того чтобы сервер приложений 1С мог создавать базы и управлять ими, нам необходимо создать именно внутреннюю роль с правами суперпользователя.

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

sudo -u postgres psql

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

Рассмотрим процесс создания учетной записи, от имени которой сервер 1С будет взаимодействовать с PostgresPro. В терминологии PostgreSQL пользователи называются «ролями» (roles). Для корректной работы платформы 1С, особенно при создании новых информационных баз через консоль администрирования 1С, пользователю требуются расширенные права.

Выполним следующую команду в консоли psql:

CREATE ROLE имя_пользователя WITH LOGIN SUPERUSER PASSWORD 'ваш_пароль';

Почему мы используем SUPERUSER? Разберем причину: сервер приложений 1С при создании базы данных выполняет ряд низкоуровневых операций, включая создание расширений (extensions), специфических схем и управление правами. Без прав суперпользователя процесс создания базы может завершиться ошибкой доступа.

Если вы предпочитаете использовать стандартные утилиты командной строки вместо SQL-запросов, рассмотрим альтернативный вариант через команду createuser:

sudo -u postgres createuser --superuser --pwprompt имя_пользователя

Настройка прав доступа в pg_hba.conf

Создания пользователя недостаточно для того, чтобы 1С смогла подключиться к серверу. Выясним причину: по умолчанию PostgreSQL часто настроен на авторизацию ident, которая проверяет соответствие имени пользователя ОС и имени в БД, что не подходит для подключения по сети. Нам нужно разрешить подключение по паролю.

Найдем и отредактируем файл pg_hba.conf (обычно он находится в /var/lib/pgpro/std-11/data/ или аналогичном пути в зависимости от версии). Нам нужно добавить или изменить строку для доступа по протоколу TCP/IP:


# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.1.0/24          md5

В данном примере мы разрешаем подключения со всех баз данных для всех пользователей из локальной сети 192.168.1.0/24, используя метод авторизации md5 (пароль). После изменения файла обязательно выполним перезагрузку службы или выполним команду SELECT pg_reload_conf(); в консоли psql.

Оптимизация производительности: почему 1С может тормозить на Postgres

Рассмотрим ситуацию, упомянутую опытными администраторами: на MS SQL запрос выполняется 2 минуты, а на Postgres — 17 часов. Основная причина кроется в работе планировщика запросов (Query Planner) и особенностях архитектуры PostgreSQL. В отличие от DB2, где параметр DB2_WORKLOAD=1C делает «магию» за вас, в PostgresPro нужно обратить внимание на несколько критических настроек в postgresql.conf.

Проанализируем ключевые параметры:

  1. standard_conforming_strings: Для многих версий платформы 1С этот параметр должен быть установлен в значение off.
  2. shared_buffers: Это объем памяти, который сервер выделяет для кэширования данных. Для 1С рекомендуется выделять около 25-30% от общего объема оперативной памяти сервера.
  3. temp_buffers и work_mem: Эти параметры отвечают за память для временных таблиц и сортировок. Если их значение слишком мало, Postgres будет постоянно сбрасывать данные на диск, что приведет к тем самым «тупнякам».
  4. autovacuum: В 1С таблицы очень часто обновляются. Если автовакуум не настроен агрессивно, таблицы начинают «распухать» (bloat), и чтение данных замедляется в десятки раз.

Разберем пример настройки секции в postgresql.conf для высоконагруженной базы:


max_connections = 500
shared_buffers = 16GB # если на сервере 64GB
temp_buffers = 128MB
work_mem = 64MB
autovacuum_max_workers = 4
autovacuum_naptime = 20s
jit = off # Отключаем JIT, так как для коротких запросов 1С он часто вреден

Работа с временными таблицами и статистикой

Посмотрим на специфику запросов 1С. Платформа активно использует временные таблицы. В PostgreSQL статистика по временным таблицам не всегда обновляется вовремя, что заставляет планировщик выбирать неэффективные планы (например, полный скан таблицы Seq Scan вместо использования индекса).

Для решения этой проблемы в сборках PostgresPro 1C включены специальные патчи, улучшающие работу с временными таблицами 1С. Также рекомендуется использовать модуль plantuner, который позволяет подсказывать планировщику, какие индексы стоит использовать приоритетно.

Проанализируем еще один важный момент — «разогрев» кэша. В MS SQL кэш наполняется довольно эффективно сам по себе, но в Postgres после перезагрузки сервера первые обращения к тяжелым отчетам (например, «Карточка счета») могут быть медленными. Рассмотрим использование расширения pg_prewarm, которое позволяет принудительно загружать нужные таблицы в память при старте системы.

Выводы

Мы выяснили, что установка PostgresPro — это только половина дела. Для успешной эксплуатации 1С нам необходимо:

  1. Создать роль с правами SUPERUSER.
  2. Настроить методы авторизации в pg_hba.conf, заменив ident на md5 или scram-sha-256.
  3. Тщательно адаптировать postgresql.conf под объемы данных и специфику 1С, обращая особое внимание на shared_buffers и autovacuum.
  4. Следить за актуальностью статистики и планами запросов, особенно при работе с крупными типовыми конфигурациями (ERP, ЗУП).

Помните, что Postgres — это мощный инструмент, который при правильной настройке не уступает MS SQL, но он требует более глубокого понимания внутренних процессов СУБД от системного администратора.

← На главную