Возврат кластера 1С:Предприятия на прежнюю сборку платформы после неудачного обновления
Содержание
Откатить версию сервера 1С проще всего так: оставить старую сборку платформы установленной, остановить службу агента сервера
, переключить службу обратно на ragent.exe из каталога прежней версии и запустить её. На Linux то же самое делается переключением systemd-юнита на каталог старой версии в /opt/1cv8/x86_64/. Если старую сборку уже удалили, её ставят заново тем же дистрибутивом, а настройки кластера восстанавливают из копии каталога srvinfo.
Из трёх способов — переключить службу, переустановить старую платформу, восстановить снимок виртуальной машины — первый самый быстрый: 5–10 минут простоя. Снимок ВМ выбирают, когда после обновления успели поменять что-то ещё, кроме платформы. Но откат платформы не спасает, если вместе с ней обновили конфигурацию до релиза, который требует новую версию. Тогда возвращают и базу.
Когда откат версии сервера 1С помогает, а когда нет
Платформа и информационная база — разные вещи. При смене сборки платформы данные баз в СУБД остаются на месте, кластер и список баз хранятся в каталоге srvinfo. Поэтому вернуть старую сборку обычно можно без потери данных.
Типичные поводы для отката:
- 🐞 после обновления посыпались ошибки рабочих процессов,
rphostпадает или съедает память; - 🐢 заметно выросло время проведения документов, закрытия месяца, отчётов;
- 🔌 перестал работать внешний компонент, торговое оборудование или COM-обмен со сторонней программой;
- 🔑 сервер не видит лицензии после переустановки (чаще это вопрос не версии, а изменившихся параметров оборудования — проверьте до отката);
- 🌐 модуль веб-сервера новой версии не встаёт на IIS или Apache.
Когда откат не поможет или навредит:
- ❌ конфигурацию уже обновили на релиз с минимальной версией платформы выше той, на которую вы возвращаетесь. База на старой сборке просто не откроется;
- ❌ в конфигураторе подняли режим совместимости под новую платформу;
- ❌ проблема в СУБД, в нехватке памяти или в обновлении Windows, а платформа лишь совпала по времени.
Перед откатом найдите в журнале регистрации и технологическом журнале первую ошибку после обновления. Если она появилась раньше, чем вы сменили платформу, причина в другом.
Подготовка к откату платформы: резервные копии и проверка
Откат — это тоже вмешательство в работающий сервер. Остановка службы агента обрывает все сеансы пользователей, поэтому планируйте окно вне рабочего времени и предупредите людей заранее. Фоновые и регламентные задания на это время лучше заблокировать в свойствах баз через консоль кластера.
Что сохранить до начала работ:
- 📁 Каталог
srvinfoцеликом. На Windows по умолчанию этоC:\Program Files\1cv8\srvinfo, на Linux —/home/usr1cv8/.1cv8/1C/1cv8. В нём лежит реестр кластера1CV8Clst.lstв подкаталогеreg_1541. - 💾 Бэкапы СУБД всех баз кластера: средствами MS SQL или PostgreSQL, не выгрузкой
.dt(для крупной базы выгрузка идёт часами). - 📝 Строку запуска службы: точный путь к
ragent.exe, порты, диапазон рабочих процессов, путь кsrvinfo. Её видно в свойствах службы, поле «Исполняемый файл». - 🧾 Номер старой и новой сборки, а также минимальную версию платформы для текущего релиза конфигурации. Её указывают в описании релиза на портале поддержки.
Проверьте, что дистрибутив старой версии на месте. Без него откат превращается в поиск файла под давлением.
Если каталог 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
Порты и каталог данных юнит берёт из своего файла настроек. Если вы их меняли в новой версии, перенесите те же значения. Список параметров смотрите в самом файле юнита.
Что ломается после отката и как это исправить
Большинство проблем после возврата на старую сборку — это несовпадение версий на разных участках. Сервер вернули, а клиенты, консоль или веб-модуль остались на новой.
1cestart.cfg.radmin.dll новой сборки. Выполните regsvr32 для radmin.dll из каталога старой версии.binPath, нет прав у учётной записи службы на srvinfo или порт 1540 занят зависшим процессом. Проверьте журнал событий Windows и список процессов.snccntx* внутри srvinfo\reg_1541 — это кэш, данные баз он не содержит.wsap24 новой сборки. Переопубликуйте базу из старой версии или исправьте путь к модулю.Чистка snccntx* безопасна для данных, но делается только при остановленной службе: при работающем сервере каталоги заняты, а попытка удаления оборвёт сеансы.
Как обновлять платформу, чтобы не пришлось откатываться
Хорошее обновление готовит откат заранее. Если всё это сделано, возврат занимает минуты, а не ночь.
- 🧪 Обновляйте сначала тестовый сервер с копией рабочей базы и гоняйте на нём типовой день: проведение, закрытие месяца, обмены, печать.
- 📦 Не удаляйте старую сборку минимум месяц после перехода. Она занимает около гигабайта и экономит переустановку.
- 📁 Копируйте
srvinfoперед каждым обновлением и подписывайте копию номером версии. - 🔢 Не берите самую свежую сборку в первые недели: ставьте ту, что указана как рекомендуемая для вашего релиза конфигурации.
- 🔁 Сначала платформа, потом конфигурация, с паузой в несколько дней. Тогда платформу можно вернуть без возврата базы.
- 🗂 Храните дистрибутивы двух-трёх последних используемых сборок рядом с бэкапами.
Частые вопросы об откате сервера 1С
Нужно ли откатывать клиентов на рабочих местах?
Слетят ли лицензии после отката?
Можно ли откатить сервер, не трогая файловые базы?
Что делать, если старого дистрибутива нет?
Можно ли держать две версии сервера на одной машине одновременно?
srvinfo. Так делают для тестирования новой сборки рядом с рабочей.