Как поставить PostgreSQL для 1С и подключить к нему базу

· 9 мин

Содержание

Есть два способа поставить СУБД под 1С: на Windows запустить готовый установщик, на Linux поставить пакеты из репозитория. Результат один: сервер PostgreSQL слушает порт 5432, а сервер 1С:Предприятия создаёт в нём базы. Для файловой базы PostgreSQL не нужен совсем, он нужен клиент-серверному режиму.

Главное условие: берите сборку PostgreSQL, которую поддерживает 1С для вашей версии платформы. Обычный PostgreSQL из репозитория дистрибутива с 1С работает хуже и не всегда поддерживается. Подходят сборки, которые 1С прикладывает к платформе, и сборки Postgres Pro для 1С. Совместимость версии СУБД с платформой смотрите в документации к вашей платформе.

Ниже порядок такой: подготовка сервера, установка, кодировка и кластер, пользователь и доступ, параметры, создание базы в консоли, обслуживание.

Подготовка: сколько ресурсов нужно и что проверить до установки

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

Ориентиры для старта (это не нормативы, а практика):

НагрузкаПользователейПамятьДиск
Небольшаядо 108 ГБSSD, от 100 ГБ
Средняя10-5016-32 ГБSSD или NVMe, от 300 ГБ
Крупнаяот 5064 ГБ и большеNVMe, отдельный том под данные

Что проверить заранее:

  • 🧱 Версия платформы 1С и поддерживаемая ею версия PostgreSQL.
  • 🌐 Статический IP или стабильное имя сервера в сети.
  • 🔥 Порты. PostgreSQL использует 5432. Сервер 1С: 1540 (агент), 1541 (менеджер кластера), диапазон 1560-1591 (рабочие процессы).
  • 💾 Отдельный диск или раздел под каталог данных. Если база вырастет, перенести его проще, чем растягивать системный том.
  • 🔑 Лицензии: сервер 1С и клиентские лицензии должны быть готовы, иначе проверить подключение не получится.

Диск важнее процессора. База 1С в основном ждёт чтения и записи. SSD вместо HDD даёт больше, чем лишние ядра.

Установка сервера PostgreSQL на Windows и Linux

Windows

  1. Возьмите дистрибутив PostgreSQL для 1С. Он идёт отдельным архивом рядом с платформой или скачивается как сборка Postgres Pro для 1С.
  2. Запустите установщик от имени администратора.
  3. Выберите каталог данных. Лучше не на системный диск.
  4. Задайте пароль суперпользователя postgres. Запишите его, он понадобится при создании базы.
  5. Порт оставьте 5432, если он не занят.
  6. Локаль выберите русскую. Кодировка базы будет UTF-8, это задаёт сама 1С при создании базы.
  7. После установки проверьте, что служба PostgreSQL запущена: оснастка «Службы», статус «Выполняется».

Linux (на примере Ubuntu/Debian)

Если у вас сборка в виде набора .deb-пакетов, ставьте их из каталога, где они лежат:

sudo apt update
sudo apt install ./postgresql-*.deb

Если используете репозиторий Postgres Pro, подключите его по инструкции производителя и поставьте нужную версию пакетом. Названия пакетов зависят от версии, поэтому сверяйтесь с описанием сборки.

После установки проверьте службу:

systemctl status postgresql
sudo -u postgres psql -c "select version();"

Вторая команда покажет версию сервера. Если она ответила, СУБД работает.

Не ставьте PostgreSQL «на всякий случай» двух версий на одну машину без нужды. Две службы с разными портами путают при обслуживании и легко приводят к тому, что 1С подключается не туда.

Кодировка, локаль и создание кластера баз данных

Кластер баз данных PostgreSQL это каталог данных плюс служба, которая его обслуживает. Не путайте с кластером серверов 1С: это другая сущность.

Установщик на Windows создаёт кластер сам. На Linux пакет обычно тоже инициализирует его при установке. Если нужно создать вручную или пересоздать, делайте так:

sudo -u postgres /usr/lib/postgresql/<версия>/bin/initdb \
  -D /var/lib/postgresql/data --locale=ru_RU.UTF-8 --encoding=UTF8

Путь к initdb зависит от сборки, у Postgres Pro он другой. Проверьте через which initdb или поиск по /usr.

Что важно по кодировке:

  • 🔤 Кодировка баз UTF8.
  • 🌍 Локаль ru_RU.UTF-8 на Linux. На Windows сборка использует русскую локаль системы.
  • ⚙️ Если локаль не установлена в системе, initdb выдаст ошибку. На Ubuntu поставьте её командой sudo locale-gen ru_RU.UTF-8.

Сам кластер 1С создаёт базу данных внутри PostgreSQL и сама задаёт ей нужную кодировку. Руками создавать пустую базу в psql не требуется, если пользователь имеет право CREATEDB.

Пользователь для 1С и права доступа

Работать из-под postgres можно, но для боевой системы лучше завести отдельную роль. Ей достаточно права создавать базы.

CREATE ROLE user1c WITH LOGIN PASSWORD 'сложный_пароль' CREATEDB;

Пароль не используйте простой, он будет храниться в настройках кластера 1С.

Теперь нужно разрешить подключение с сервера 1С. Откройте два файла в каталоге данных.

postgresql.conf, параметр слушаемых адресов:

listen_addresses = '*'

Либо укажите конкретный IP сервера, это строже.

pg_hba.conf, добавьте строку для сети, где стоит сервер 1С:

host    all    user1c    192.168.1.0/24    md5

Адрес сети замените на свой. Метод md5 это проверка по паролю. Если ваша сборка по умолчанию использует scram-sha-256, тогда укажите его, и пароль роли создавайте уже после смены метода.

Применяйте изменения перезагрузкой конфигурации:

sudo systemctl reload postgresql

После смены listen_addresses нужен полный перезапуск: sudo systemctl restart postgresql.

Не открывайте порт 5432 в интернет. Закройте его межсетевым экраном и разрешите только адрес сервера 1С и админов. Открытая СУБД с паролем это приглашение к перебору.

Проверьте доступ с сервера 1С командой psql -h <адрес> -U user1c -d postgres. Если соединение прошло, сеть и права настроены верно.

Параметры производительности PostgreSQL для 1С

По умолчанию PostgreSQL настроен на скромное железо. Для 1С параметры нужно поднять. Ниже примерные значения для сервера с 16 ГБ памяти, под выделенную СУБД. Их стоит рассматривать как стартовую точку, а потом смотреть на реальную нагрузку.

ПараметрОриентирЧто делает
shared_buffersоколо 25% памяти, то есть 4 ГБОсновной кеш данных
effective_cache_size50-75% памяти, то есть 8-12 ГБПодсказка планировщику о доступном кеше ОС
work_mem16-64 МБПамять на сортировки и хеш-соединения в одном запросе
maintenance_work_mem512 МБ-1 ГБДля VACUUM и построения индексов
temp_buffers32-256 МБВременные таблицы, которых в 1С много
max_connections100-200Достаточно, 1С держит соединения через рабочие процессы

Для работы 1С нужно ещё отключить два параметра, которые влияют на обработку строк:

standard_conforming_strings = off
escape_string_warning = off

И полезно добавить:

  • 🧹 autovacuum = on и не отключать его. Автоочистка нужна 1С, у неё много обновлений.
  • 📝 synchronous_commit = on на боевой базе. Отключение ускоряет запись, но при сбое можно потерять последние транзакции.
  • 🔒 fsync = on. Отключать только на тестовом стенде.

Пересчитайте work_mem на вашу ситуацию: он выделяется на каждую операцию в каждом запросе. Если одновременно работает 50 пользователей, а у каждого по нескольку сортировок, память расходуется быстро. 64 МБ на 100 соединений это уже до 6,4 ГБ в пике. Поэтому не ставьте значение «на глаз» в сотни мегабайт.

После правки postgresql.conf нужен перезапуск службы. Параметры, которые подхватываются на лету, помечены в документации как не требующие перезапуска, но проще перезапустить.

Создание информационной базы в консоли серверов 1С

Теперь подключаем базу. Предполагается, что сервер 1С:Предприятия уже установлен и служба ragent запущена.

  1. Откройте консоль администрирования серверов 1С (оснастка в составе платформы или веб-интерфейс, если вы его развернули).
  2. Добавьте сервер: укажите его имя и порт агента, обычно 1540.
  3. Раскройте кластер и найдите узел «Информационные базы».
  4. Через правую кнопку выберите создание новой информационной базы.
  5. Заполните поля:
    • Имя: так база будет видна пользователям в списке;
    • Защищённое соединение: отключено, если вы не настраивали TLS;
    • Тип СУБД: PostgreSQL;
    • Сервер баз данных: адрес или имя машины с PostgreSQL, при нестандартном порте через двоеточие;
    • База данных: имя базы в СУБД, латиницей без пробелов;
    • Пользователь и пароль: роль, созданная выше;
    • Смещение дат: 0 для PostgreSQL;
    • флаг создания базы данных, если её ещё нет, поставьте.
  6. Подтвердите. 1С создаст базу в PostgreSQL и таблицы служебных данных.

После этого добавьте базу в список запуска. В клиенте 1С выберите добавление существующей базы, тип «На сервере 1С:Предприятия», укажите кластер и имя базы.

Загрузить данные можно из выгрузки .dt: в конфигураторе пункт загрузки информационной базы. Для большой базы операция идёт долго, поэтому запускайте её в тихое время.

Проверка после создания базы
Выполнено: 0 / 6

Обслуживание и диагностика типовых проблем

PostgreSQL требует регулярного присмотра. Без него база распухает, а запросы замедляются.

Регулярные задачи

  • 🧹 Автоочистка autovacuum справляется с текущей нагрузкой. Раз в неделю или раз в месяц делают ручной VACUUM ANALYZE, чтобы обновить статистику планировщика.
  • 📦 Резервные копии делайте через pg_dump или средствами выгрузки 1С. Копировать файлы каталога данных при работающей службе нельзя: копия будет неконсистентной.
  • 🔁 Переиндексация: при сильном раздувании индексов помогает REINDEX. Запускайте в нерабочее время.
  • 📊 Следите за свободным местом. Когда диск заполнен, PostgreSQL останавливается.

Пример выгрузки одной базы:

pg_dump -h localhost -U user1c -Fc -f /backup/base1c.dump base1c

Формат -Fc сжимает дамп, а восстанавливается он через pg_restore.

Типичные проблемы

Диагностика: выберите симптом

Если не помогло: другие варианты

Когда не получается ужиться с Linux или нет администратора, есть запасные пути:

  • 🖥️ Поставить PostgreSQL на Windows-сервер с готовым установщиком. Меньше ручной работы, больше расход ресурсов.
  • ☁️ Арендовать готовый сервер 1С у облачного провайдера. Администрирование СУБД тогда на нём.
  • 📁 Остаться на файловом варианте, если пользователей мало (до 5-10) и нет требований к отказоустойчивости. Для небольшой базы он проще.

Если сомневаетесь, выбирайте по числу пользователей и размеру базы. Маленькой фирме с тремя бухгалтерами клиент-серверный режим даёт мало. Когда пользователей становится десяток и база растёт, переходить на него пора.

Частые вопросы

Можно ли использовать обычный PostgreSQL вместо сборки для 1С?
Технически база создаётся, но поддержка 1С гарантирована для специальных сборок. На обычном PostgreSQL возможны проблемы с производительностью и блокировками.
Какой порт нужно открыть для сервера 1С и PostgreSQL?
Для PostgreSQL это 5432, для сервера 1С: 1540, 1541 и диапазон 1560-1591. Клиентам нужен доступ к портам 1С, СУБД им открывать не нужно.
Нужно ли ставить PostgreSQL на тот же сервер, что и 1С?
Для небольшой базы можно. Для средней и крупной разделяйте: у СУБД и сервера 1С разные потребности в памяти.
Как перенести базу из MS SQL в PostgreSQL?
Выгрузите базу в файл .dt из конфигуратора, создайте новую базу на PostgreSQL и загрузите выгрузку. Прямого переноса таблиц нет.
Как часто делать резервную копию?
Минимум раз в сутки. Для активно работающей базы с ежедневными вводами имеет смысл копировать чаще и держать несколько последних копий.