Как установить специальную сборку PostgreSQL для 1С на Ubuntu с ИТС?

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

При развертывании инфраструктуры для работы платформы 1С:Предприятие на операционной системе Ubuntu, системные администраторы часто сталкиваются с необходимостью установки специальной сборки PostgreSQL. Эти сборки, как правило, предоставляются фирмой "1С" через ИТС или компанией Postgres Professional, и они значительно отличаются от "ванильного" PostgreSQL из стандартных репозиториев Ubuntu. Рассмотрим подробно, как осуществить такую установку, какие особенности следует учесть и как решить возможные проблемы.

Почему обычный PostgreSQL не подходит для 1С?

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

Подготовка к установке PostgreSQL для 1С

Перед началом установки необходимо убедиться, что у нас есть правильный дистрибутив и система готова к его развертыванию. Фирма "1С" распространяет свою сборку PostgreSQL с патчами, оптимизированными для работы платформы "1С:Предприятие", через портал ИТС. Эти патчи значительно повышают производительность PostgreSQL при работе с типовыми решениями "1С". Помимо сборки от 1С, существует также сборка Postgres Pro для 1С, которая также оптимизирована и поддерживается компанией Postgres Professional. Разработчики Postgres Professional активно участвовали в адаптации PostgreSQL для 1С.

  1. Выбор дистрибутива: Мы можем выбрать между сборкой от "1С" (доступной на ИТС) или сборкой от Postgres Pro для 1С. Каждая имеет свои преимущества. Сборка от 1С чаще всего поставляется в виде набора deb-пакетов, а Postgres Pro — через собственные репозитории, что упрощает обновление и решение проблем с зависимостями.
  2. Поддерживаемые версии Ubuntu: В документации к сборкам PostgreSQL от 1С обычно указываются поддерживаемые версии Ubuntu. Нам следует проверить, что наша версия Ubuntu соответствует требованиям. Как правило, поддерживаются актуальные версии, такие как Ubuntu 16.04, 18.04, 20.04, 22.04 и 24.04.
  3. Получение пакетов: Если мы выбрали сборку от 1С, нам потребуется скачать deb-файлы с ИТС. Если это Postgres Pro, то мы будем работать с их репозиториями.

Установка PostgreSQL от 1С с помощью DEB-пакетов

Рассмотрим пошаговую инструкцию по установке специальной сборки PostgreSQL от 1С, которая поставляется в виде deb-пакетов. Этот метод требует внимательности при работе с зависимостями.

  1. Скачивание DEB-пакетов:

    Мы должны скачать все необходимые deb-файлы из дистрибутива, полученного с ИТС. Обычно это несколько пакетов, включая libpq5, postgresql-client и postgresql.

  2. Последовательная установка пакетов:

    Критически важно соблюдать правильную последовательность установки пакетов. Сначала устанавливаем библиотеки, затем клиентские утилиты, и только после этого сам сервер PostgreSQL. Выполнять все команды необходимо с правами суперпользователя (root).

    
    sudo dpkg -i libpq5_*.deb
    sudo dpkg -i postgresql-client_*.deb
    sudo dpkg -i postgresql_*.deb
    

    Если мы не хотим указывать каждый файл по отдельности, мы можем попытаться установить все сразу, но это может вызвать проблемы с зависимостями, так как dpkg устанавливает пакеты в алфавитном порядке, а не в порядке зависимостей:

    sudo dpkg -i *.deb
  3. Решение проблем с зависимостями:

    В процессе установки через dpkg очень часто возникают ошибки, связанные с неудовлетворенными зависимостями. Это означает, что для работы устанавливаемых пакетов требуются другие пакеты, которых нет в системе. В такой ситуации нам следует использовать команду apt install -f, которая автоматически попытается найти и установить недостающие зависимости из стандартных репозиториев Ubuntu.

    sudo apt install -f

    После того как apt install -f установит недостающие зависимости, нам потребуется повторить установку наших deb-пакетов PostgreSQL, чтобы завершить процесс.

    sudo dpkg -i *.deb

    Иногда необходимые пакеты-зависимости могут находиться в каталоге дистрибутива 1С, например, в /1c/soft/postgres_lib. В этом случае, мы должны установить их явно, указывая полный путь к deb-файлу:

    sudo apt install -y /путь/к/пакету.deb
  4. Особенности установки PGAdmin:

    Если мы планируем использовать pgadmin для управления базами данных, могут возникнуть дополнительные сложности, связанные с версиями библиотек. Один из участников обсуждения упомянул, что иногда требуется "захолдить" (закрепить определенную версию) одну из библиотек, чтобы pgadmin работал корректно. К сожалению, точное название библиотеки не указано, поэтому при возникновении проблем с pgadmin нам потребуется дополнительно исследовать логи ошибок и искать информацию по конкретной версии Ubuntu и pgadmin.

Альтернативный подход: Установка Postgres Pro для 1С

Как мы видим из обсуждения, установка из deb-пакетов от 1С может быть сопряжена с определенными трудностями. Существует более удобный и часто рекомендуемый вариант — использование сборки Postgres Pro для 1С. Эта сборка также оптимизирована, но ее установка и обновление значительно упрощены благодаря использованию репозиториев.

  1. Преимущества Postgres Pro для 1С:

    Разработчики Postgres Professional участвовали в адаптации PostgreSQL для 1С. Их сборка распространяется через репозитории, что автоматически решает большинство проблем с зависимостями и упрощает процесс обновления. Кроме того, Postgres Pro часто поставляется со скриптами, которые автоматизируют не только установку, но и базовую настройку, оптимизированную для 1С.

  2. Добавление репозитория Postgres Pro:

    Для установки Postgres Pro нам потребуется добавить их официальный репозиторий в нашу систему. Конкретные команды могут немного отличаться в зависимости от версии Ubuntu и версии Postgres Pro, но общий принцип таков:

    
    # Добавляем ключ репозитория
    wget -O - https://repo.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO | sudo apt-key add -
    
    # Добавляем репозиторий для вашей версии Ubuntu и Postgres Pro
    # Пример для Ubuntu 20.04 и Postgres Pro 1C (предположим, версия XX)
    echo "deb https://repo.postgrespro.ru/pgpro-1c/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/postgrespro.list
    
    # Обновляем список пакетов
    sudo apt update
    

    Нам необходимо будет заменить focal на кодовое имя нашей версии Ubuntu (например, jammy для 22.04) и убедиться, что путь к репозиторию соответствует выбранной версии Postgres Pro.

  3. Установка пакета Postgres Pro для 1С:

    После добавления репозитория мы можем установить сам сервер PostgreSQL, оптимизированный для 1С, с помощью команды apt:

    sudo apt install postgrespro-1c-XX

    Здесь XX будет соответствовать версии PostgreSQL (например, 14, 15 или 16). Система автоматически разрешит все зависимости.

  4. Особенности настройки Postgres Pro:

    Сборки Postgres Pro для 1С часто имеют автоматическую настройку конфигурации базы данных, оптимизированную для 1С, в соответствии с ресурсами сервера. При установке может быть предложено запустить специальный скрипт, который поможет в первичной настройке. Вручную нам может потребоваться указать только параметры, касающиеся дисковой подсистемы (например, какие диски являются HDD, а какие SSD) для тонкой оптимизации производительности.

Оптимальная настройка PostgreSQL для работы с 1С

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

  1. Настройка системной локали:

    Для корректной работы 1С с PostgreSQL абсолютно необходимо, чтобы в системе была установлена и выбрана как локаль по умолчанию ru_RU.UTF-8 UTF-8. Если эта локаль не установлена или выбрана другая, могут возникнуть проблемы с сортировкой, сравнением строк и другими операциями, что часто приводит к ошибкам или некорректному поведению 1С.

    
    sudo locale-gen ru_RU.UTF-8
    sudo update-locale LANG=ru_RU.UTF-8 LC_ALL=ru_RU.UTF-8
    

    Затем мы можем проверить активные локали:

    locale

    Убедимся, что LANG и LC_ALL установлены в ru_RU.UTF-8.

  2. Создание кластера PostgreSQL с параметрами 1С:

    При создании нового кластера PostgreSQL для использования с 1С настоятельно рекомендуется использовать специальный параметр --tune=1c совместно с указанием локали. Это позволяет автоматически настроить основные параметры кластера для работы с 1С.

    sudo pg_createcluster <ВЕРСИЯ_PG> main --tune=1c --locale=ru_RU.UTF-8

    Где <ВЕРСИЯ_PG> - это номер версии PostgreSQL (например, 14 или 15).

  3. Настройка серверного оборудования:

    Для достижения максимальной производительности и избежания непредсказуемых задержек ответов базы данных, рекомендуется выполнить следующие аппаратные настройки:

    • Отключение HyperThreading: Эта технология может иногда снижать производительность на серверах баз данных, создавая дополнительные накладные расходы на переключение контекста. Рекомендуется отключать ее в BIOS/UEFI.
    • Отключение энергосбережения: Сервер БД должен работать на максимальной производительности постоянно. Отключение режимов энергосбережения (например, C-states, EIST) в BIOS/UEFI гарантирует, что процессор всегда работает на максимальной частоте.
    • Использование SSD-дисков: Для размещения баз данных 1С критически важно использовать быстрые накопители. Рекомендуется вынести базы данных на отдельный SSD-диск, что значительно повысит скорость операций ввода-вывода.
  4. Создание баз данных 1С:

    Крайне важно помнить, что базы данных для 1С не являются "нормальными" для чистого PostgreSQL. Их создание должно осуществляться исключительно средствами 1С:Предприятия, а не через утилиты psql или pgAdmin. Платформа 1С сама формирует структуру базы данных с учетом своих специфических требований. В процессе работы также может потребоваться установка или снятие блокировок у БД.

Решение распространенных проблем с 1С и PostgreSQL

Даже после успешной установки и базовой настройки, мы можем столкнуться с проблемами, о которых упоминается в форуме, такими как "индексы не устраивают" или общая низкая производительность. Разберем, как подходить к их решению.

  1. Проблемы с индексами:

    Сообщения о том, что "1С то индексы не устраивают, то еще что-то", указывают на потенциальные проблемы с производительностью запросов или даже на логические ошибки в работе базы данных. Возможные причины и пути решения:

    • Некорректные настройки PostgreSQL: Проверьте файл postgresql.conf. Параметры, такие как shared_buffers, work_mem, maintenance_work_mem, effective_cache_size, wal_buffers, должны быть настроены в соответствии с объемом оперативной памяти сервера и нагрузкой. Сборки Postgres Pro для 1С часто имеют автоматическую настройку конфигурации базы данных, которая уже оптимизирована для 1С, но всегда полезно перепроверить.
    • Особенности запросов 1С: Платформа 1С генерирует достаточно сложные запросы. Иногда проблемы с индексами могут быть вызваны тем, что существующие индексы не используются эффективно или вовсе не подходят для определенных типов запросов.
    • Роль ANALYZE: Для эффективного использования индексов оптимизатору запросов PostgreSQL необходима актуальная статистика по таблицам. Команда ANALYZE собирает эту статистику. Начиная с платформы 1С:Предприятие 8.3.13, платформа сама выполняет ANALYZE после вставки во временную таблицу, что снижает остроту проблемы с устаревшей статистикой. Однако для больших постоянных таблиц ручной запуск ANALYZE или настройка автоанализа остаются важными.
    • Модуль online_analyze: Ранее для повышения производительности 1С активно использовался модуль online_analyze, который автоматически обновлял статистику. С появлением встроенного ANALYZE в платформе 8.3.13 его актуальность снизилась, но в некоторых случаях он все еще может быть полезен.
    • Пропавшие индексы дескрипторов: Иногда причиной падения производительности или ошибок могут быть пропавшие индексы дескрипторов. Для выявления таких проблем потребуется анализ технологического журнала 1С и планов запросов (с помощью EXPLAIN ANALYZE). В этом случае может потребоваться перестроение индексов, что может временно блокировать таблицу для записи.
  2. Общая производительность:

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

    • Мониторинг ресурсов: Используйте утилиты мониторинга (htop, iotop, pg_activity, vmstat, а также специализированные мониторы кластеров) для выявления узких мест: CPU, RAM, дисковые операции.
    • Настройки кластера Postgres Pro: Для увеличения производительности в зависимости от конфигурации 1С могут потребоваться дополнительные настройки кластера Postgres Pro, которые выходят за рамки базовой установки. Например, тонкая настройка checkpoint_timeout, max_wal_size, effective_io_concurrency и т.д.
    • Анализ технологического журнала 1С: Технологический журнал 1С предоставляет подробную информацию о времени выполнения запросов, блокировках и других событиях, которые могут указывать на проблемы производительности.
    • Проверка аппаратного обеспечения: Убедитесь, что серверное оборудование соответствует требованиям к производительности 1С, особенно если количество пользователей или объем баз данных растет.

Установка и настройка специальной сборки PostgreSQL для 1С на Ubuntu — это задача, требующая внимательности и понимания специфических требований платформы. Следуя этим подробным инструкциям, мы сможем успешно развернуть надежную и производительную базу данных для нашей системы 1С:Предприятие, минимизируя риски возникновения распространенных проблем.

← На главную