Возврат кластера 1С:Предприятия на прежнюю сборку платформы после неудачного обновления

· 10 мин

Содержание

Откатить версию сервера 1С проще всего так: оставить старую сборку платформы установленной, остановить службу агента сервера , переключить службу обратно на ragent.exe из каталога прежней версии и запустить её. На Linux то же самое делается переключением systemd-юнита на каталог старой версии в /opt/1cv8/x86_64/. Если старую сборку уже удалили, её ставят заново тем же дистрибутивом, а настройки кластера восстанавливают из копии каталога srvinfo.

Из трёх способов — переключить службу, переустановить старую платформу, восстановить снимок виртуальной машины — первый самый быстрый: 5–10 минут простоя. Снимок ВМ выбирают, когда после обновления успели поменять что-то ещё, кроме платформы. Но откат платформы не спасает, если вместе с ней обновили конфигурацию до релиза, который требует новую версию. Тогда возвращают и базу.

Когда откат версии сервера 1С помогает, а когда нет

Платформа и информационная база — разные вещи. При смене сборки платформы данные баз в СУБД остаются на месте, кластер и список баз хранятся в каталоге srvinfo. Поэтому вернуть старую сборку обычно можно без потери данных.

Типичные поводы для отката:

  • 🐞 после обновления посыпались ошибки рабочих процессов, rphost падает или съедает память;
  • 🐢 заметно выросло время проведения документов, закрытия месяца, отчётов;
  • 🔌 перестал работать внешний компонент, торговое оборудование или COM-обмен со сторонней программой;
  • 🔑 сервер не видит лицензии после переустановки (чаще это вопрос не версии, а изменившихся параметров оборудования — проверьте до отката);
  • 🌐 модуль веб-сервера новой версии не встаёт на IIS или Apache.

Когда откат не поможет или навредит:

  • ❌ конфигурацию уже обновили на релиз с минимальной версией платформы выше той, на которую вы возвращаетесь. База на старой сборке просто не откроется;
  • ❌ в конфигураторе подняли режим совместимости под новую платформу;
  • ❌ проблема в СУБД, в нехватке памяти или в обновлении Windows, а платформа лишь совпала по времени.

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

Подготовка к откату платформы: резервные копии и проверка

Откат — это тоже вмешательство в работающий сервер. Остановка службы агента обрывает все сеансы пользователей, поэтому планируйте окно вне рабочего времени и предупредите людей заранее. Фоновые и регламентные задания на это время лучше заблокировать в свойствах баз через консоль кластера.

Что сохранить до начала работ:

  1. 📁 Каталог srvinfo целиком. На Windows по умолчанию это C:\Program Files\1cv8\srvinfo, на Linux — /home/usr1cv8/.1cv8/1C/1cv8. В нём лежит реестр кластера 1CV8Clst.lst в подкаталоге reg_1541.
  2. 💾 Бэкапы СУБД всех баз кластера: средствами MS SQL или PostgreSQL, не выгрузкой .dt (для крупной базы выгрузка идёт часами).
  3. 📝 Строку запуска службы: точный путь к ragent.exe, порты, диапазон рабочих процессов, путь к srvinfo. Её видно в свойствах службы, поле «Исполняемый файл».
  4. 🧾 Номер старой и новой сборки, а также минимальную версию платформы для текущего релиза конфигурации. Её указывают в описании релиза на портале поддержки.

Проверьте, что дистрибутив старой версии на месте. Без него откат превращается в поиск файла под давлением.

Если каталог srvinfo не скопировали до обновления, сохраните его хотя бы сейчас. Сервер новой версии мог уже переписать реестр кластера, и старой версии он может не подойти. Тогда пригодится копия, сделанная перед обновлением, если она осталась в бэкапах сервера.

Способы отката версии сервера 1С: что выбрать

СпособКогда подходитПростойРиски
Переключить службу на старую сборкуСтарая версия ещё установлена5–10 минутМинимальные, если не трогали конфигурацию
Переустановить старую платформуСтарую версию удалили15–30 минутНужен тот же дистрибутив и права администратора
Восстановить srvinfo из бэкапаРеестр кластера повреждён или не читается старой версией+5 минут к любому способуПотеряются изменения в кластере после бэкапа
Вернуть снимок ВМВместе с платформой меняли ОС, драйверы, СУБД10–60 минутЕсли база на той же ВМ — потеряете данные после снимка
Восстановить базы из бэкапа СУБДОбновили и конфигурацию, и платформуЧасыПотеря данных за период после бэкапа

Платформа 8.3 спокойно живёт в нескольких версиях на одном сервере: каждая ставится в свой каталог. Служба агента запускает ту, на чей ragent.exe указывает. На этом и держится быстрый откат.

Откат версии сервера 1С на Windows пошагово

Пример ниже — возврат с 8.3.25.1374 на 8.3.24.1691. Подставьте свои номера сборок.

Шаг 1. Остановите службу агента

Откройте services.msc, найдите службу «Агент сервера 1С:Предприятия 8.3» (в английском варианте 1C:Enterprise 8.3 Server Agent (x86-64)) и остановите её. То же из командной строки от администратора:

sc query state= all | findstr /i "1C:Enterprise"
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"

Через минуту проверьте в диспетчере задач, что не осталось процессов ragent.exe, rmngr.exe, rphost.exe. Зависший rphost завершите вручную — к этому моменту сеансы уже оборваны.

Шаг 2. Верните службу на старую сборку

Если старая версия установлена, достаточно поменять путь к исполняемому файлу службы. Сделать это можно двумя путями.

Через sc config. Строку берите из сохранённого «Исполняемого файла», меняя только номер версии:

sc config "1C:Enterprise 8.3 Server Agent (x86-64)" binPath= "\"C:\Program Files\1cv8\8.3.24.1691\bin\ragent.exe\" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d \"C:\Program Files\1cv8\srvinfo\" -debug"

После binPath= пробел обязателен — без него sc выдаст ошибку синтаксиса.

Через перерегистрацию службы. Удалите службу командой из новой версии и зарегистрируйте её из старой:

"C:\Program Files\1cv8\8.3.25.1374\bin\ragent.exe" -rmsrvc
"C:\Program Files\1cv8\8.3.24.1691\bin\ragent.exe" -instsrvc -usr ".\USR1CV8" -pwd "пароль" -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"

Учётную запись службы и пароль укажите те же, что были, иначе служба не получит доступ к srvinfo.

Если старой версии уже нет, запустите её установщик, отметьте компонент «Сервер 1С:Предприятия 8» и снимите галку установки службы, чтобы не плодить второй агент. Затем выполните одну из команд выше.

Шаг 3. Перерегистрируйте библиотеки

Консоль администрирования и COM-соединение привязаны к зарегистрированной DLL. После отката они продолжают смотреть на новую сборку, и консоль ругается на несовпадение версий. Командная строка от администратора:

regsvr32 "C:\Program Files\1cv8\8.3.24.1691\bin\radmin.dll"
regsvr32 "C:\Program Files\1cv8\8.3.24.1691\bin\comcntr.dll"

comcntr.dll нужен, если сторонние программы подключаются к базам через COM (V83.COMConnector). Для веб-публикаций переопубликуйте базы из конфигуратора старой версии или поправьте в настройках веб-сервера путь к модулю wsap24.dll на каталог старой сборки.

Шаг 4. Запустите службу и проверьте

net start "1C:Enterprise 8.3 Server Agent (x86-64)"

Откройте консоль кластера той же версии и убедитесь, что кластер и список баз на месте. Затем зайдите в одну базу с клиента нужной сборки и проведите пару документов. Если работает и служба RAS для удалённого администрирования, её тоже переключите на ras.exe из старого каталога.

Скрипт для отката сервера 1С на Windows

Когда серверов несколько или откат репетируют заранее, удобнее bat-файл. Переменные в начале — единственное, что нужно править. Запуск — от администратора, в окно обслуживания.

@echo off
set SVC=1C:Enterprise 8.3 Server Agent (x86-64)
set OLD=8.3.24.1691
set BASE=C:\Program Files\1cv8
set SRVINFO=C:\Program Files\1cv8\srvinfo
set BACKUP=D:\backup\srvinfo_%OLD%

echo Остановка службы...
net stop "%SVC%"
timeout /t 20 /nobreak >nul
taskkill /f /im rphost.exe 2>nul
taskkill /f /im rmngr.exe 2>nul

echo Возврат srvinfo из копии (если указана)...
if exist "%BACKUP%" robocopy "%BACKUP%" "%SRVINFO%" /MIR /R:1 /W:1

echo Переключение службы на %OLD%...
sc config "%SVC%" binPath= "\"%BASE%\%OLD%\bin\ragent.exe\" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d \"%SRVINFO%\" -debug"

echo Регистрация библиотек...
regsvr32 /s "%BASE%\%OLD%\bin\radmin.dll"
regsvr32 /s "%BASE%\%OLD%\bin\comcntr.dll"

echo Запуск службы...
net start "%SVC%"
sc query "%SVC%"

robocopy /MIR удаляет в srvinfo всё, чего нет в копии. Если кластер меняли после бэкапа (добавляли базы, менялись настройки), эти изменения пропадут. Если копии нет, просто не создавайте каталог из переменной BACKUP — шаг пропустится.

Откат сервера 1С на Linux

На Linux каждая сборка ставится в свой каталог /opt/1cv8/x86_64/<версия>/. Если пакеты старой версии удалили, поставьте их заново из того же дистрибутива (deb или rpm) — несколько версий уживаются рядом.

Остановка сервиса

systemctl list-units --all | grep -i 1cv8
sudo systemctl stop srv1cv8-8.3.25.1374@default
sudo systemctl disable srv1cv8-8.3.25.1374@default
ps aux | grep -E 'ragent|rmngr|rphost' | grep -v grep

Начиная с поздних версий 8.3 сервер запускается через systemd-юнит из каталога версии. На старых установках встречается init-скрипт srv1cv83 с настройками в /etc/sysconfig или /etc/default. Тогда останавливают его.

Восстановление каталога кластера из копии

Если реестр кластера после обновления не читается или повреждён, верните копию:

sudo cp -a /home/usr1cv8/.1cv8/1C/1cv8 /home/usr1cv8/.1cv8/1C/1cv8.after-update
sudo rsync -a --delete /backup/srvinfo/ /home/usr1cv8/.1cv8/1C/1cv8/
sudo chown -R usr1cv8:grp1cv8 /home/usr1cv8/.1cv8

Владелец каталога должен совпадать с пользователем, от которого работает сервер, иначе агент не стартует.

Переключение юнита и символических ссылок

Подключите юнит старой версии и включите его в автозапуск:

sudo systemctl link /opt/1cv8/x86_64/8.3.24.1691/srv1cv8-8.3.24.1691@.service
sudo systemctl enable srv1cv8-8.3.24.1691@default

Многие администраторы держат ссылку /opt/1cv8/current на рабочую версию и ссылаются на неё в своих скриптах и в настройках Apache. Тогда переставьте и её:

sudo ln -sfn /opt/1cv8/x86_64/8.3.24.1691 /opt/1cv8/current

Проверьте путь к wsap24.so в конфигурации Apache: если там указан каталог новой версии, публикации перестанут работать.

Запуск сервиса

sudo systemctl start srv1cv8-8.3.24.1691@default
sudo systemctl status srv1cv8-8.3.24.1691@default

Порты и каталог данных юнит берёт из своего файла настроек. Если вы их меняли в новой версии, перенесите те же значения. Список параметров смотрите в самом файле юнита.

Что ломается после отката и как это исправить

Большинство проблем после возврата на старую сборку — это несовпадение версий на разных участках. Сервер вернули, а клиенты, консоль или веб-модуль остались на новой.

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

Чистка snccntx* безопасна для данных, но делается только при остановленной службе: при работающем сервере каталоги заняты, а попытка удаления оборвёт сеансы.

Как обновлять платформу, чтобы не пришлось откатываться

Хорошее обновление готовит откат заранее. Если всё это сделано, возврат занимает минуты, а не ночь.

  • 🧪 Обновляйте сначала тестовый сервер с копией рабочей базы и гоняйте на нём типовой день: проведение, закрытие месяца, обмены, печать.
  • 📦 Не удаляйте старую сборку минимум месяц после перехода. Она занимает около гигабайта и экономит переустановку.
  • 📁 Копируйте srvinfo перед каждым обновлением и подписывайте копию номером версии.
  • 🔢 Не берите самую свежую сборку в первые недели: ставьте ту, что указана как рекомендуемая для вашего релиза конфигурации.
  • 🔁 Сначала платформа, потом конфигурация, с паузой в несколько дней. Тогда платформу можно вернуть без возврата базы.
  • 🗂 Храните дистрибутивы двух-трёх последних используемых сборок рядом с бэкапами.
Перед обновлением сервера 1С
Выполнено: 0 / 6

Частые вопросы об откате сервера 1С

Нужно ли откатывать клиентов на рабочих местах?
Да. Клиент и сервер должны совпадать по номеру сборки полностью. Удалять новую версию у клиентов не обязательно: достаточно, чтобы на компьютере была старая и в свойствах базы была указана именно она.
Слетят ли лицензии после отката?
Сама смена версии платформы лицензию не трогает. Файлы программных лицензий лежат отдельно от каталога версии. Лицензия может потребовать повторной активации, только если при работах изменились параметры оборудования или ОС.
Можно ли откатить сервер, не трогая файловые базы?
Сервер 1С с файловыми базами не работает, их открывает клиент. Файловая база, которую новая версия перевела в новый формат хранения, может не открыться старой. Тогда поможет только копия каталога базы.
Что делать, если старого дистрибутива нет?
Скачайте ту же сборку на портале поддержки по своей подписке. Без подписки дистрибутив законно не получить, поэтому храните установщики сами.
Можно ли держать две версии сервера на одной машине одновременно?
Можно, если у них разные порты агента, менеджера и разный диапазон рабочих процессов, а также свои каталоги srvinfo. Так делают для тестирования новой сборки рядом с рабочей.