PostgreSQL для 1С: установка на Windows и Linux, настройка и создание базы
PostgreSQL — бесплатная альтернатива MS SQL для клиент-серверной 1С, но работает она только в специальных сборках и с правильной локалью. В статье — какой Postgres подходит для 1С, установка на Linux и Windows, настройка pg_hba.conf и основных параметров postgresql.conf, создание базы в кластере через консоль и rac, обслуживание, резервное копирование и типичные ошибки.
Какой PostgreSQL подходит для 1С
Платформа 1С:Предприятие работает не с любым PostgreSQL. Обычная сборка из репозитория дистрибутива в список поддерживаемых СУБД не входит: 1С требует сборки с патчами, которые добавляют нужные платформе возможности и ускоряют типовые запросы. Актуальный перечень публикуется на странице системных требований к СУБД. Основные варианты:
| Сборка | Кто выпускает | Особенности |
|---|---|---|
| PostgreSQL с патчем от 1С | Фирма «1С» | Бесплатна, в том числе для коммерческих систем. Публикуется на портале «1С:Обновление программ» для Windows и Linux |
| Postgres Pro 1С, Standard, Enterprise | Postgres Professional | Коммерческие редакции с поддержкой вендора, условия лицензирования уточняйте у Postgres Professional |
| Tantor, Jatoba, Pangolin и другие | Российские вендоры | Сертифицированные варианты, конкретные версии перечислены в требованиях 1С |
По состоянию на ноябрь 2026 года в требованиях 1С перечислены сборки PostgreSQL с патчем от 1С основных версий с 14 по 18. Каждая версия платформы поддерживает свой диапазон версий СУБД, поэтому перед установкой сверьте номер релиза платформы и номер сборки PostgreSQL. Если базу переводите с MS SQL или файлового варианта, порядок переноса через выгрузку .dt описан в статье про файловую и клиент-серверную базу.
Подготовка сервера
- Отдельный сервер или общий. Для небольших баз PostgreSQL и сервер 1С можно поставить на одну машину. При росте нагрузки СУБД выносят на отдельный сервер с быстрыми дисками.
- Диски. Под каталог данных используйте SSD. Временные таблицы, которые 1С создаёт очень активно, полезно вынести на отдельный быстрый диск через
temp_tablespaces. - Локаль. Кластер баз данных должен быть инициализирован с русской локалью
ru_RU.UTF-8и кодировкой UTF8. От локали зависит сортировка строк в запросах 1С, и поменять её у готового кластера нельзя. - Энергосбережение. Отключите режимы энергосбережения процессора в BIOS и в ОС — Postgres Professional рекомендует это в документации по настройке для 1С.
Установка PostgreSQL для 1С на Linux
Порядок для Debian и Ubuntu. Сначала включите русскую локаль:
sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=ru_RU.UTF-8
locale -a | grep ru_RU
Скачайте с портала обновлений архив сборки для своего дистрибутива, распакуйте его и установите пакеты. Состав и имена пакетов меняются от версии к версии, поэтому ориентируйтесь на файлы в архиве и инструкцию к сборке. После установки инициализируйте кластер с нужной локалью, если пакет не сделал этого сам:
sudo mkdir -p /var/lib/pgsql/data
sudo chown postgres:postgres /var/lib/pgsql/data
sudo -u postgres /путь/к/bin/initdb --locale=ru_RU.UTF-8 --encoding=UTF8 -D /var/lib/pgsql/data
Для Postgres Pro инициализация выполняется утилитой pg-setup из каталога /opt/pgpro/<редакция>/bin после экспорта переменной LANG="ru_RU.UTF-8". Затем включите автозапуск службы и задайте пароль суперпользователю:
sudo systemctl enable --now postgresql # имя юнита зависит от сборки
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'СложныйПароль';"
sudo -u postgres psql -c "SHOW lc_collate;"
Последняя команда должна вернуть ru_RU.UTF-8. Если вы видите C или en_US.UTF-8, кластер инициализирован неправильно — пересоздайте его до загрузки данных.
Установка PostgreSQL для 1С на Windows
Сборка для Windows поставляется с установщиком. При установке:
- Запустите установщик от имени администратора и выберите каталог данных на быстром диске.
- Укажите порт (по умолчанию
5432) и пароль пользователяpostgres. - Выберите кодировку UTF8 и русскую локаль (Russian, Russia).
- Оставьте установку службы — PostgreSQL будет запускаться вместе с Windows.
- Если сервер 1С стоит на другой машине, откройте порт 5432 в брандмауэре только для его адреса.
PostgreSQL на Windows работает с 1С полноценно, но для нагруженных баз чаще выбирают Linux: под эту ОС больше опыта эксплуатации и инструментов.
Сетевой доступ: postgresql.conf и pg_hba.conf
Если сервер 1С и СУБД на разных машинах, разрешите PostgreSQL принимать сетевые подключения и пропишите правило доступа для сервера 1С:
# postgresql.conf
listen_addresses = '*' # или конкретный адрес интерфейса
port = 5432
# pg_hba.conf: доступ с сервера 1С по паролю
# TYPE DATABASE USER ADDRESS METHOD
host all usr1c 192.168.10.21/32 scram-sha-256
Метод аутентификации должен поддерживаться вашей версией платформы. Если подключение не проходит именно на этапе проверки пароля, проверьте, каким методом сохранён пароль пользователя (password_encryption), и при необходимости задайте пароль заново. Изменения pg_hba.conf применяются без перезапуска: SELECT pg_reload_conf();. Для 1С удобно завести отдельного пользователя с правом создавать базы:
CREATE ROLE usr1c WITH LOGIN CREATEDB PASSWORD 'СложныйПароль';
Настройка PostgreSQL для 1С: основные параметры
Стандартный postgresql.conf рассчитан на маленький сервер и для 1С не подходит. Ниже параметры, которые меняют в первую очередь. Отправная точка — методика 1С на ИТС и рекомендации Postgres Professional для решений 1С; конкретные значения подбирайте под объём памяти и нагрузку.
| Параметр | Ориентир | Зачем |
|---|---|---|
shared_buffers | RAM/4 | Общий кэш страниц данных |
effective_cache_size | Объём памяти, который реально остаётся под кэш ОС | Оценка для планировщика, память не выделяет |
work_mem | Начните с умеренного значения и увеличивайте под контролем памяти | Память на сортировку и хеширование в одной операции запроса |
temp_buffers | до 256MB | Буферы временных таблиц сеанса — 1С использует их постоянно |
maintenance_work_mem | RAM/16 | Ускоряет VACUUM и создание индексов |
max_connections | С запасом к числу соединений рабочих процессов 1С | Каждый рабочий процесс держит собственные соединения |
max_locks_per_transaction | Увеличьте при ошибке «out of shared memory» | Транзакции 1С затрагивают много временных таблиц |
random_page_cost | 1.1 для NVMe, около 1.3 для SATA SSD, 4 для HDD | Подсказывает планировщику, что случайное чтение на SSD дешёвое |
autovacuum | on | Очистка «мёртвых» строк и обновление статистики |
fsync | on | Отключение грозит потерей базы при сбое питания |
Пример фрагмента для выделенного сервера с 32 ГБ памяти и SSD (значения — стартовые, а не окончательные):
shared_buffers = 8GB
effective_cache_size = 20GB
work_mem = 64MB
temp_buffers = 256MB
maintenance_work_mem = 2GB
max_connections = 500
max_locks_per_transaction = 256
random_page_cost = 1.1
autovacuum = on
После изменения параметров памяти и max_connections нужен перезапуск службы. Проверить применённые значения можно запросом SELECT name, setting, unit FROM pg_settings WHERE name IN ('shared_buffers','work_mem');.
Создание базы 1С в кластере на PostgreSQL
Базу данных в PostgreSQL заранее создавать не обязательно — её создаст сервер 1С. В консоли «Администрирование серверов 1С:Предприятия» откройте кластер, в разделе «Информационные базы» выберите «Создать» и заполните поля:
- Имя — имя информационной базы в кластере (его указывают клиенты в строке соединения);
- Защищённое соединение — по необходимости;
- Сервер баз данных — адрес сервера PostgreSQL, при нестандартном порте укажите его в формате, принятом в вашей версии;
- Тип СУБД — PostgreSQL;
- База данных, Пользователь, Пароль — имя базы в PostgreSQL и учётные данные созданной роли;
- Разрешить выдачу лицензий сервером 1С:Предприятия — обычно «Да»;
- Создать базу данных в случае ее отсутствия — отметьте для новой базы.
То же самое из командной строки на Linux выполняет утилита rac (сервер администрирования ras должен быть запущен):
rac cluster list
rac infobase --cluster=<id_кластера> create --create-database \
--name=trade --dbms=PostgreSQL --db-server=pg01 --db-name=trade \
--db-user=usr1c --db-pwd='СложныйПароль' --locale=ru --license-distribution=allow
Третий способ — окно запуска 1С: «Добавить → Создание новой информационной базы → На сервере 1С:Предприятия» с теми же полями. После создания загрузите конфигурацию или выгрузку .dt через Конфигуратор.
Обслуживание и резервное копирование
Главная регламентная операция PostgreSQL — VACUUM: он освобождает место от удалённых и изменённых версий строк и обновляет статистику. Обычно с этим справляется autovacuum. Для больших таблиц, которые меняются постоянно (регистры, временные данные), полезно настроить его агрессивнее и раз в неделю, в период низкой нагрузки, выполнять ручной проход:
vacuumdb --all --analyze --jobs=4 -U postgres
Резервную копию базы средствами СУБД делают утилитой pg_dump в формате custom, а восстанавливают через pg_restore:
pg_dump -h pg01 -U postgres -Fc -f /backup/trade_2026-11-11.dump trade
pg_restore -h pg01 -U postgres -d trade_test -j 4 /backup/trade_2026-11-11.dump
Регулярно проверяйте, что копия разворачивается. Выгрузка .dt из Конфигуратора тоже нужна — например, для переноса на другую СУБД, — но для ежедневных копий большой базы она медленнее и требует монопольного режима.
Какие таблицы занимают место: код на встроенном языке
Имена таблиц в PostgreSQL обезличены (_document123, _accumrg456). Сопоставить их с объектами конфигурации и оценить размер можно средствами платформы. Функция ПолучитьРазмерДанныхБазыДанных доступна начиная с версии 8.3.15:
&НаСервере
Процедура ПоказатьКрупныеОбъекты()
Объекты = Новый Массив;
Объекты.Добавить("РегистрНакопления.ТоварыНаСкладах");
Объекты.Добавить("Документ.РеализацияТоваровУслуг");
Для Каждого ИмяОбъекта Из Объекты Цикл
Массив = Новый Массив;
Массив.Добавить(ИмяОбъекта);
РазмерБайт = ПолучитьРазмерДанныхБазыДанных(Новый Массив, Массив);
Сообщить(ИмяОбъекта + ": " + Формат(РазмерБайт / 1024 / 1024, "ЧДЦ=1") + " МБ");
КонецЦикла;
// Соответствие объектов метаданных и таблиц СУБД
Структура = ПолучитьСтруктуруХраненияБазыДанных(Объекты, Истина);
Для Каждого Строка Из Структура Цикл
Сообщить(Строка.Метаданные + " → " + Строка.ИмяТаблицыХранения);
КонецЦикла;
КонецПроцедуры
Второй параметр Истина возвращает имена в терминах СУБД — в таком виде они видны в psql. Как читать данные 1С прямыми SQL-запросами и почему не стоит в них писать, рассказано в статье про SQL-запросы к базе 1С.
Типичные ошибки
| Ошибка | Причина и решение |
|---|---|
no pg_hba.conf entry for host | Нет правила доступа для адреса сервера 1С. Добавьте строку в pg_hba.conf и выполните pg_reload_conf(). |
password authentication failed for user | Неверный пароль или несовместимый метод аутентификации. Задайте пароль заново и проверьте метод в pg_hba.conf. |
| Неверная сортировка строк, ошибки при загрузке .dt | Кластер создан не с локалью ru_RU.UTF-8. Пересоздайте кластер с правильной локалью. |
out of shared memory с подсказкой про max_locks_per_transaction | Не хватает слотов блокировок. Увеличьте параметр и перезапустите службу. |
| Медленная работа после переноса с MS SQL | Не настроены параметры памяти, не собрана статистика. Выполните vacuumdb --analyze и пересмотрите postgresql.conf. |
| Сервер 1С не создаёт базу | У роли нет права CREATEDB или указана сборка PostgreSQL, не поддерживаемая вашим релизом платформы. |
Актуальность для новых версий
Список поддерживаемых сборок PostgreSQL меняется с выходом новых релизов платформы: в системных требованиях 1С на ноябрь 2026 года указаны сборки PostgreSQL с патчем от 1С основных версий 14–18, а также Postgres Pro и другие российские дистрибутивы. Перед обновлением СУБД или платформы сверяйте пару «релиз платформы — версия PostgreSQL» по требованиям на v8.1c.ru. Функция ПолучитьРазмерДанныхБазыДанных доступна с версии 8.3.15.
Частые вопросы
Можно ли поставить для 1С обычный PostgreSQL из репозитория?
Нет. Для 1С нужна сборка с патчами: PostgreSQL с патчем от 1С, Postgres Pro или другой дистрибутив из списка системных требований. Обычный PostgreSQL в этот список не входит, и платформа с ним работать не будет.
Сколько стоит PostgreSQL для 1С?
PostgreSQL с патчем от 1С бесплатен, в том числе в коммерческих системах; его скачивают с портала «1С:Обновление программ». Редакции Postgres Pro и другие коммерческие дистрибутивы лицензируются по условиям своих вендоров.
Какую локаль выбрать при установке PostgreSQL для 1С?
Русскую локаль ru_RU.UTF-8 с кодировкой UTF8. Её задают при инициализации кластера, и поменять её потом нельзя. Проверить текущую локаль можно командой SHOW lc_collate.
Нужно ли создавать базу в PostgreSQL заранее?
Не обязательно. При создании информационной базы в консоли кластера отметьте «Создать базу данных в случае ее отсутствия», и сервер 1С создаст её сам. У пользователя СУБД должно быть право CREATEDB.
Как часто нужно делать VACUUM для базы 1С?
Основную работу выполняет autovacuum, его отключать нельзя. Ручной vacuumdb с анализом полезно запускать раз в неделю в период низкой нагрузки, а также после массовой загрузки или удаления данных.