Обновление системы управления базами данных (СУБД) — это ответственная процедура, которая часто вызывает вопросы у администраторов 1С, особенно если речь идет о работе в среде Windows. В этой статье мы подробно разберем, как правильно выполнить минорное обновление PostgreSQL (например, переход внутри одной мажорной версии, скажем, с 11.5 на 11.9), чтобы сохранить работоспособность системы 1С:Предприятие и минимизировать время простоя.
Прежде чем приступать к техническим манипуляциям, разберем ключевой момент: чем минорное обновление отличается от мажорного. В экосистеме PostgreSQL мажорные версии — это те, где меняется первая цифра (или вторая в старых версиях до 10-й), например, переход с 11 на 12. В таких случаях формат хранения данных на диске меняется, и требуется полная выгрузка/загрузка базы (pg_dump/pg_restore) или использование утилиты pg_upgrade.
Минорные обновления (например, с 11.5 до 11.9) не меняют внутреннюю структуру файлов данных. Это означает, что мы можем просто заменить исполняемые файлы (бинарники) сервера, сохранив старую папку data. Это значительно ускоряет процесс, так как не требует долгого ожидания выгрузки и загрузки огромных баз 1С.
Рассмотрим по шагам, что необходимо сделать перед началом любых работ. Даже если процедура кажется простой, всегда есть риск непредвиденных ошибок.
pg_dump с флагом -j N, где N — количество ядер процессора.postgresql.conf и pg_hba.conf в отдельную папку. В них содержатся настройки производительности и правила доступа, которые нам потребуются позже.postgresql. Это гарантирует, что в файлы данных не будут записываться изменения в процессе обновления.Проанализируем самый популярный способ, который часто выбирают новички. Он заключается в запуске установщика новой версии PostgreSQL.
Разберем алгоритм действий:
C:\Program Files\PostgreSQL\11.9-1.1C.postgresql.conf и pg_hba.conf. Нам нужно перенести наши оптимизированные настройки из старых файлов в новые.Выясним причину, почему это работает: новая служба PostgreSQL просто подхватывает старые файлы данных, так как они бинарно совместимы, и начинает работать с ними, используя обновленные алгоритмы и исправленные ошибки кода СУБД.
Для опытных администраторов существует более «чистый» метод, который не оставляет хвостов в реестре Windows от старых версий.
bin и lib в bin_old и lib_old.bin, lib, share из нового архива в рабочую директорию PostgreSQL.Этот метод хорош тем, что пути в реестре и настройки службы 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С.
Частая проблема на Windows Server после переноса папок или переустановки — это ошибка запуска службы, связанная с правами доступа. Выясним, как это исправить.
Служба PostgreSQL обычно запускается от имени пользователя NetworkService или локального пользователя postgres. Разберем действия для обеспечения доступа:
После успешного запуска новой версии службы и старта сервера 1С, необходимо выполнить несколько регламентных действий.
Обновление статистики. Несмотря на то, что это минорное обновление, планировщик запросов в новой версии может работать чуть иначе. Чтобы он строил оптимальные планы для тяжелых запросов 1С, обновите статистику. Для этого можно воспользоваться консольной утилитой:
vacuumdb.exe --all --analyze-only --username=postgres
Обновление расширений. Если в ваших базах используются расширения (например, pg_stat_statements), рекомендуется выполнить их обновление. Зайдите в каждую базу через psql или pgAdmin и выполните команду:
ALTER EXTENSION pg_stat_statements UPDATE;
Важно помнить, что для работы с «1С:Предприятие» необходимо использовать специальные сборки PostgreSQL (от самой фирмы 1С или Postgres Pro). В них включены патчи для корректной работы с блокировками, поддержки кириллицы и специфических типов данных 1С. При скачивании обновления всегда выбирайте дистрибутив из того же источника, из которого была установлена предыдущая версия, чтобы сохранить совместимость специфических функций.
Подведем итог: минорное обновление PostgreSQL — это быстрая процедура, если понимать принципы бинарной совместимости и следить за правами доступа к файловой системе Windows. Следуя нашему плану, вы сможете обновить сервер БД с минимальными рисками и обеспечить стабильную работу вашей системы 1С.