7.4 KiB
date, type, tags
| date | type | tags | ||||||
|---|---|---|---|---|---|---|---|---|
| 2026-05-08 | decision |
|
2026-05-08: Бэкап Бужарово 1С — переход с Effector Saver DT на native MS SQL Backup
Контекст
Вечером 2026-05-08, после починки rmngr-loop, регулярная задача Бэкап 1Cv8 в Effector Saver Free 4.8/2 на server1c.netbird.cloud (Win 2012 R2, MSSQL 2012 SP4, 1С 8.3.27.1606) отказывалась завершаться успешно. Шесть подряд запусков (19:51 → 22:21) падали с одной и той же связкой ошибок:
-
HRESULT=800401F3—V83.ComConnectorне зарегистрирован → Olег зарегистрировал через UI Effector Saver, переключился на 64-bit -
HRESULT=80004005— "Администратор кластера не аутентифицирован" — у кластера 1С есть проверка авторизации, но в кластере нет ни одного admin'а, а добавить нельзя:- В Серверной консоли 1С:
Локальный кластер → Администраторыпоказывает количество=0, форма "Новый администратор" заполнена, но при OK просит логин/пароль и не принимает agent-уровневый admin (создан Olегом отдельно) - Через COM
V83.COMConnector:AuthenticateAgent('admin', '1qaz!QAZ')проходит, ноRegClusterAdminпадает "пользователь не выполнил аутентификацию для требуемой операции" (chicken-and-egg: для создания первого cluster admin нужен уже cluster admin) - Через
racс--agent-user: cluster operations не принимают agent-уровневую аутентификацию (design choice 1С)
- В Серверной консоли 1С:
-
Ошибка исключительной блокировки информационной базы— даже без cluster admin'а Effector Saver продолжает выгрузку, но не может получить эксклюзив, потому что в БД активные сессии. Особенно "вечная" сессияКулябинПИ sid=4514, начат 12:55:42— после моего рестарта службы 1С в 19:30 и последующих SQLKILLсессий, она раз за разом возвращается (вероятно, реально открытый где-то тонкий клиент Павла Ивановича + persistent state в1CV8Clst.lst).
Что пробовали и почему не сработало
| Попытка | Результат |
|---|---|
regsvr32 x64 comcntr.dll |
✅ COM зарегистрирован, переключение Effector Saver на 64-bit убрало 800401F3 |
Restart-Service '1C:Enterprise 8.3 Server Agent' |
✅ rmngr вылечен, но session 4514 в реестре кластера persists между рестартами |
KILL SQL-сессий через sa/Qwer1122334400 |
✅ временно (sess=0, locks=0), но 1С rphost восстанавливает соединения за 1-2 мин и сессия 4514 reanimates |
rac cluster admin register без auth |
❌ "оператор не существует" |
RegClusterAdmin через COM с AuthenticateAgent |
❌ "пользователь не аутентифицирован для требуемой операции" |
| GUI Серверной консоли 1С — добавить cluster admin | ❌ форма не сохраняет, требует cluster auth (которой нет) |
Тупик: в кластере БД 1С нет cluster admin'а, и зарегистрировать первого нельзя ни через GUI, ни через rac, ни через COM. Возможный единственный путь — обнулить srvinfo\reg_1541\1CV8Clst.lst целиком (потеря и админов, и регистрации ИБ — нужна перерегистрация ИБ с SQL params; рискованно).
Решение: native MS SQL Backup
Effector Saver делает DT-выгрузку через 1С Конфигуратор (1cv8.exe DESIGNER /DumpIB), которая требует эксклюзив на ИБ. Это исторический способ для файловых ИБ. Для клиент-серверных ИБ на MS SQL правильный путь — BACKUP DATABASE на уровне SQL Server:
- ✅ Online backup — снимает копию во время работы, не требует эксклюзива
- ✅ Не зависит от 1С-кластера, cluster admin'а, активных сессий
- ✅ С
WITH COMPRESSIONфайл сжимается ~3:1 (3.8 GB → 1.1 GB) - ✅ Быстрее — у нас 2 секунды на 3.8 GB БД
- ✅ Восстанавливается одним запросом
RESTORE DATABASE
Реализация:
BACKUP DATABASE [RitmUl]
TO DISK = N'C:\backup\RitmUl_<ts>.bak'
WITH FORMAT, INIT, NAME = N'RitmUl-Full',
SKIP, NOREWIND, NOUNLOAD, COMPRESSION, COPY_ONLY,
STATS = 5
COPY_ONLY — чтобы наш бэкап не ломал log chain если потом настроят differential/log backups.
Запускается через WinRM python3 + System.Data.SqlClient с LXC 139 severny-les (бот). Storage: C:\backup\ на server1c (374 GB свободно).
Артефакт
- Первый успешный бэкап 2026-05-08:
C:\backup\RitmUl_2026-05-08_2225.bak(1105 MB) - Скрипт:
/root/clawd/scripts/sql_native_backup.pyна LXC 139
TODO (после возвращения Olега из Египта)
- Автоматизировать — добавить cron на LXC 139
severny-les: каждый день в 03:00 МСК запускатьsql_native_backup.py, ротировать (хранить N дней). Алерт в Telegram-группу при сбое. - Ротация и трансфер — настроить копирование
.bakфайлов на внешний носитель (Nextcloud / S3 / Gitea-LFS). - Тест восстановления — раз в N дней автоматически развернуть бэкап в тестовую БД и проверить целостность.
- Effector Saver оставить как есть, не чинить (чинить cluster admin = разбирать
1CV8Clst.lstбинарник, риск убить ИБ). Можно отключить регулярную задачуБэкап 1Cv8в Effector Saver чтобы не плодились алерты "ошибка". - TODO документировать SQL creds в
projects/dttb/credentials.md(см. блок Бужарово).
Связанные
- projects/buzharovo/server1c — обновлён с SQL backup как новый канон
- projects/buzharovo/severny-les-bot — бот теперь умеет бэкапить через WinRM+SQL
- decisions/2026-05-07-buzharovo-1c-rmngr-loop-after-crash — про rmngr (отдельная история, починена)