Как выполнить минорное обновление PostgreSQL на Windows Server для работы с 1С?

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

Обновление системы управления базами данных (СУБД) — это ответственная процедура, которая часто вызывает вопросы у администраторов 1С, особенно если речь идет о работе в среде Windows. В этой статье мы подробно разберем, как правильно выполнить минорное обновление PostgreSQL (например, переход внутри одной мажорной версии, скажем, с 11.5 на 11.9), чтобы сохранить работоспособность системы 1С:Предприятие и минимизировать время простоя.

Понимание минорных обновлений и бинарной совместимости

Прежде чем приступать к техническим манипуляциям, разберем ключевой момент: чем минорное обновление отличается от мажорного. В экосистеме PostgreSQL мажорные версии — это те, где меняется первая цифра (или вторая в старых версиях до 10-й), например, переход с 11 на 12. В таких случаях формат хранения данных на диске меняется, и требуется полная выгрузка/загрузка базы (pg_dump/pg_restore) или использование утилиты pg_upgrade.

Минорные обновления (например, с 11.5 до 11.9) не меняют внутреннюю структуру файлов данных. Это означает, что мы можем просто заменить исполняемые файлы (бинарники) сервера, сохранив старую папку data. Это значительно ускоряет процесс, так как не требует долгого ожидания выгрузки и загрузки огромных баз 1С.

Подготовительный этап: Безопасность превыше всего

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

  1. Резервное копирование. Обязательно сделайте бэкап всех баз данных 1С. Если базы большие, используйте многопоточный режим утилиты pg_dump с флагом -j N, где N — количество ядер процессора.
  2. Копирование конфигураций. Сохраните файлы postgresql.conf и pg_hba.conf в отдельную папку. В них содержатся настройки производительности и правила доступа, которые нам потребуются позже.
  3. Остановка сервисов. Прекратите работу службы 1С:Предприятие, а затем остановите службу postgresql. Это гарантирует, что в файлы данных не будут записываться изменения в процессе обновления.

Способ 1: Установка новой версии через инсталлятор (метод «Поверх»)

Проанализируем самый популярный способ, который часто выбирают новички. Он заключается в запуске установщика новой версии PostgreSQL.

Разберем алгоритм действий:

  1. Запускаем инсталлятор новой версии (например, сборку от Postgres Pro или 1С).
  2. При выборе пути установки не указываем папку старой версии, чтобы избежать путаницы. Рекомендуется установить в новую папку, например, C:\Program Files\PostgreSQL\11.9-1.1C.
  3. На этапе выбора пути к данным (Data Directory) указываем путь к существующей папке данных от старой версии.
  4. Важный момент: инсталлятор может предложить инициализировать новый кластер базы данных. Мы должны отказаться от этого (снять соответствующую галочку), так как мы планируем использовать уже имеющиеся данные.
  5. После завершения установки необходимо проверить конфигурационные файлы. Новый инсталлятор может создать свои postgresql.conf и pg_hba.conf. Нам нужно перенести наши оптимизированные настройки из старых файлов в новые.

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

Способ 2: Ручная подмена бинарных файлов (метод Copy-Paste)

Для опытных администраторов существует более «чистый» метод, который не оставляет хвостов в реестре Windows от старых версий.

  1. Скачиваем zip-архив с бинарными файлами нужной версии PostgreSQL.
  2. Останавливаем службу.
  3. Переименовываем старые папки bin и lib в bin_old и lib_old.
  4. Копируем содержимое папок bin, lib, share из нового архива в рабочую директорию PostgreSQL.
  5. Запускаем службу.

Этот метод хорош тем, что пути в реестре и настройки службы Windows остаются прежними, и вам не нужно перенастраивать переменные окружения.

Решение проблемы с путями и «привязкой» к версии

Рассмотрим ситуацию, когда папка с данными находится внутри директории с названием версии (например, .../PostgreSQL/11.5-12.1C/data). Это неудобно при последующих обновлениях. Проанализируем, как правильно отвязать данные от версии ПО.

Для этого в Windows удобно использовать символические ссылки (Junction points). Посмотрим на пример команды в командной строке (cmd от имени администратора):

mklink /J "C:\PostgreSQL_Data" "C:\Program Files\PostgreSQL\11.5-12.1C\data"

Теперь в настройках службы и конфигурационных файлах мы можем указывать путь C:\PostgreSQL_Data. При следующем обновлении нам достаточно будет изменить ссылку, и не придется править настройки в реестре или 1С.

Настройка прав доступа (NTFS)

Частая проблема на Windows Server после переноса папок или переустановки — это ошибка запуска службы, связанная с правами доступа. Выясним, как это исправить.

Служба PostgreSQL обычно запускается от имени пользователя NetworkService или локального пользователя postgres. Разберем действия для обеспечения доступа:

  1. Нажмите правой кнопкой на папку с данными -> Свойства -> Безопасность.
  2. Нажмите «Изменить» и добавьте пользователя, от которого запускается служба.
  3. Установите флаг «Полный доступ».
  4. Примените настройки ко всем вложенным объектам.

Завершающие штрихи: Аналитика и расширения

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

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

vacuumdb.exe --all --analyze-only --username=postgres

Обновление расширений. Если в ваших базах используются расширения (например, pg_stat_statements), рекомендуется выполнить их обновление. Зайдите в каждую базу через psql или pgAdmin и выполните команду:

ALTER EXTENSION pg_stat_statements UPDATE;

Специфика сборок для 1С

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

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

← На главную