При развертывании инфраструктуры для работы платформы 1С:Предприятие на операционной системе Ubuntu, системные администраторы часто сталкиваются с необходимостью установки специальной сборки PostgreSQL. Эти сборки, как правило, предоставляются фирмой "1С" через ИТС или компанией Postgres Professional, и они значительно отличаются от "ванильного" PostgreSQL из стандартных репозиториев Ubuntu. Рассмотрим подробно, как осуществить такую установку, какие особенности следует учесть и как решить возможные проблемы.
Почему обычный PostgreSQL не подходит для 1С?
Прежде всего, давайте выясним, почему мы не можем использовать стандартную версию PostgreSQL, доступную в репозиториях Ubuntu. Платформа 1С:Предприятие предъявляет особые требования к СУБД, и сборки от 1С или Postgres Professional содержат специфические патчи и оптимизации. Эти патчи затрагивают методы экранирования символов, нюансы обработки строковых данных, кодировок и другие аспекты, критичные для стабильной и производительной работы 1С. Использование "ванильной" версии может привести к проблемам с производительностью, некорректной работой индексов и другим ошибкам, о чем мы читаем в обсуждении темы.
Перед началом установки необходимо убедиться, что у нас есть правильный дистрибутив и система готова к его развертыванию. Фирма "1С" распространяет свою сборку PostgreSQL с патчами, оптимизированными для работы платформы "1С:Предприятие", через портал ИТС. Эти патчи значительно повышают производительность PostgreSQL при работе с типовыми решениями "1С". Помимо сборки от 1С, существует также сборка Postgres Pro для 1С, которая также оптимизирована и поддерживается компанией Postgres Professional. Разработчики Postgres Professional активно участвовали в адаптации PostgreSQL для 1С.
deb-пакетов, а Postgres Pro — через собственные репозитории, что упрощает обновление и решение проблем с зависимостями.deb-файлы с ИТС. Если это Postgres Pro, то мы будем работать с их репозиториями.Рассмотрим пошаговую инструкцию по установке специальной сборки PostgreSQL от 1С, которая поставляется в виде deb-пакетов. Этот метод требует внимательности при работе с зависимостями.
Мы должны скачать все необходимые deb-файлы из дистрибутива, полученного с ИТС. Обычно это несколько пакетов, включая libpq5, postgresql-client и postgresql.
Критически важно соблюдать правильную последовательность установки пакетов. Сначала устанавливаем библиотеки, затем клиентские утилиты, и только после этого сам сервер PostgreSQL. Выполнять все команды необходимо с правами суперпользователя (root).
sudo dpkg -i libpq5_*.deb
sudo dpkg -i postgresql-client_*.deb
sudo dpkg -i postgresql_*.deb
Если мы не хотим указывать каждый файл по отдельности, мы можем попытаться установить все сразу, но это может вызвать проблемы с зависимостями, так как dpkg устанавливает пакеты в алфавитном порядке, а не в порядке зависимостей:
sudo dpkg -i *.deb
В процессе установки через 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
Если мы планируем использовать pgadmin для управления базами данных, могут возникнуть дополнительные сложности, связанные с версиями библиотек. Один из участников обсуждения упомянул, что иногда требуется "захолдить" (закрепить определенную версию) одну из библиотек, чтобы pgadmin работал корректно. К сожалению, точное название библиотеки не указано, поэтому при возникновении проблем с pgadmin нам потребуется дополнительно исследовать логи ошибок и искать информацию по конкретной версии Ubuntu и pgadmin.
Как мы видим из обсуждения, установка из deb-пакетов от 1С может быть сопряжена с определенными трудностями. Существует более удобный и часто рекомендуемый вариант — использование сборки Postgres Pro для 1С. Эта сборка также оптимизирована, но ее установка и обновление значительно упрощены благодаря использованию репозиториев.
Разработчики Postgres Professional участвовали в адаптации PostgreSQL для 1С. Их сборка распространяется через репозитории, что автоматически решает большинство проблем с зависимостями и упрощает процесс обновления. Кроме того, Postgres Pro часто поставляется со скриптами, которые автоматизируют не только установку, но и базовую настройку, оптимизированную для 1С.
Для установки 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.
После добавления репозитория мы можем установить сам сервер PostgreSQL, оптимизированный для 1С, с помощью команды apt:
sudo apt install postgrespro-1c-XX
Здесь XX будет соответствовать версии PostgreSQL (например, 14, 15 или 16). Система автоматически разрешит все зависимости.
Сборки Postgres Pro для 1С часто имеют автоматическую настройку конфигурации базы данных, оптимизированную для 1С, в соответствии с ресурсами сервера. При установке может быть предложено запустить специальный скрипт, который поможет в первичной настройке. Вручную нам может потребоваться указать только параметры, касающиеся дисковой подсистемы (например, какие диски являются HDD, а какие SSD) для тонкой оптимизации производительности.
После установки PostgreSQL, независимо от выбранного метода, нам необходимо выполнить ряд настроек, чтобы обеспечить его оптимальную работу с платформой 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.
При создании нового кластера PostgreSQL для использования с 1С настоятельно рекомендуется использовать специальный параметр --tune=1c совместно с указанием локали. Это позволяет автоматически настроить основные параметры кластера для работы с 1С.
sudo pg_createcluster <ВЕРСИЯ_PG> main --tune=1c --locale=ru_RU.UTF-8
Где <ВЕРСИЯ_PG> - это номер версии PostgreSQL (например, 14 или 15).
Для достижения максимальной производительности и избежания непредсказуемых задержек ответов базы данных, рекомендуется выполнить следующие аппаратные настройки:
Крайне важно помнить, что базы данных для 1С не являются "нормальными" для чистого PostgreSQL. Их создание должно осуществляться исключительно средствами 1С:Предприятия, а не через утилиты psql или pgAdmin. Платформа 1С сама формирует структуру базы данных с учетом своих специфических требований. В процессе работы также может потребоваться установка или снятие блокировок у БД.
Даже после успешной установки и базовой настройки, мы можем столкнуться с проблемами, о которых упоминается в форуме, такими как "индексы не устраивают" или общая низкая производительность. Разберем, как подходить к их решению.
Сообщения о том, что "1С то индексы не устраивают, то еще что-то", указывают на потенциальные проблемы с производительностью запросов или даже на логические ошибки в работе базы данных. Возможные причины и пути решения:
postgresql.conf. Параметры, такие как shared_buffers, work_mem, maintenance_work_mem, effective_cache_size, wal_buffers, должны быть настроены в соответствии с объемом оперативной памяти сервера и нагрузкой. Сборки Postgres Pro для 1С часто имеют автоматическую настройку конфигурации базы данных, которая уже оптимизирована для 1С, но всегда полезно перепроверить.ANALYZE: Для эффективного использования индексов оптимизатору запросов PostgreSQL необходима актуальная статистика по таблицам. Команда ANALYZE собирает эту статистику. Начиная с платформы 1С:Предприятие 8.3.13, платформа сама выполняет ANALYZE после вставки во временную таблицу, что снижает остроту проблемы с устаревшей статистикой. Однако для больших постоянных таблиц ручной запуск ANALYZE или настройка автоанализа остаются важными.online_analyze: Ранее для повышения производительности 1С активно использовался модуль online_analyze, который автоматически обновлял статистику. С появлением встроенного ANALYZE в платформе 8.3.13 его актуальность снизилась, но в некоторых случаях он все еще может быть полезен.EXPLAIN ANALYZE). В этом случае может потребоваться перестроение индексов, что может временно блокировать таблицу для записи.Если после всех настроек производительность остается неудовлетворительной, мы должны провести замер производительности контура 1С и более глубокий анализ:
htop, iotop, pg_activity, vmstat, а также специализированные мониторы кластеров) для выявления узких мест: CPU, RAM, дисковые операции.checkpoint_timeout, max_wal_size, effective_io_concurrency и т.д.Установка и настройка специальной сборки PostgreSQL для 1С на Ubuntu — это задача, требующая внимательности и понимания специфических требований платформы. Следуя этим подробным инструкциям, мы сможем успешно развернуть надежную и производительную базу данных для нашей системы 1С:Предприятие, минимизируя риски возникновения распространенных проблем.