Удаление информационной базы из кластера 1С и из СУБД без хвостов
Содержание
Базу на сервере 1С 8.3 удаляют в консоли «Администрирование серверов 1С Предприятия»: Кластер → Информационные базы → правый щелчок по базе → Удалить. В окне удаления выбирают, что делать с данными в СУБД: удалить базу данных целиком, очистить её или не трогать. Без консоли то же самое делает утилита rac командой rac infobase drop.
Какой способ выбрать? Консоль удобна для разовой операции на Windows. rac нужен на Linux, при удалении десятка тестовых баз и в скриптах. Чистый SQL (DROP DATABASE) — только добивающий шаг, когда регистрация в кластере уже снята, а данные остались на сервере СУБД.
Что сделать до удаления базы с сервера
Удаление из кластера с режимом «Удалить базу данных» необратимо. Корзины нет: таблицы уходят вместе с файлами данных СУБД.
Перед удалением сделайте резервную копию, даже если база «точно не нужна». Через месяц выяснится, что в ней лежал единственный экземпляр доработанной обработки.
Резервная копия: два варианта
| Способ | Как сделать | Когда подходит |
|---|---|---|
Выгрузка .dt | Конфигуратор → Администрирование → Выгрузить информационную базу | Базы до 20–30 ГБ, перенос на другую СУБД |
| Бэкап средствами СУБД | BACKUP DATABASE в MS SQL, pg_dump в PostgreSQL | Крупные базы, быстрое восстановление |
Пример для MS SQL Server:
BACKUP DATABASE [buh_test]
TO DISK = N'D:\Backup\buh_test_final.bak'
WITH COMPRESSION, CHECKSUM;
Для PostgreSQL:
pg_dump -U postgres -Fc -f /backup/buh_test_final.dump buh_test
Что выяснить заранее
- 🔍 Точное имя базы в кластере и в СУБД. Они часто различаются: в кластере
buh_test, на SQL-сервереbuh_test_2023. Смотрите свойства базы в консоли, поле «База данных». - 👥 Кто работает в базе. Откройте ветку «Сеансы» под базой. Если там живые пользователи — договоритесь о времени.
- ⏱ Регламентные задания. Обмены, загрузка курсов, выгрузка в банк создают фоновые сеансы и мешают удалению.
- 🔑 Учётные данные. Нужны две пары: администратор кластера (если он задан) и пользователь базы с правом администрирования. Без второй пары консоль откажет.
- 📂 Хранилище конфигурации. Если база была подключена к хранилищу, само хранилище — отдельный каталог. Удаление базы его не затрагивает.
Блокируем вход
В свойствах базы в консоли включите флажки «Блокировка начала сеансов включена» и «Блокировка регламентных заданий включена». В поле сообщения напишите, например, «База выводится из эксплуатации». Новые пользователи больше не зайдут, а фоновые задания перестанут стартовать.
Оставшиеся сеансы завершите в ветке «Сеансы»: выделите их и выберите «Удалить» в контекстном меню.
Принудительное завершение обрывает работу пользователя без сохранения. Документ, который он сейчас редактирует, не запишется. Делайте это после предупреждения или вне рабочего времени.
Удаление базы в консоли администрирования серверов 1С
Консоль ставится вместе с сервером 1С. На Windows её ярлык — «Администрирование серверов 1С Предприятия» в меню «Пуск». Если консоль не открывается или пишет об ошибке оснастки, зарегистрируйте библиотеку из каталога bin нужной версии платформы:
"C:\Program Files\1cv8\8.3.25.1374\bin\RegMSC.cmd"
Либо вручную: regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll" от имени администратора. Номер версии в пути подставьте свой. Версия консоли должна совпадать с версией сервера.
Пошагово
- Разверните дерево:
Central 1C:Enterprise 8.3 servers → имя сервера → Кластеры → кластер → Информационные базы. - Найдите базу. Если список длинный, отсортируйте его по имени щелчком по заголовку колонки.
- Правый щелчок по базе →
Удалить. - Если у кластера есть администратор, консоль запросит его логин и пароль.
- Откроется окно «Удаление информационной базы». Введите имя и пароль пользователя базы с административными правами.
- Выберите режим работы с базой данных СУБД (см. таблицу ниже).
- Нажмите «ОК» и дождитесь исчезновения базы из списка.
Три режима удаления
| Режим | Что происходит в кластере | Что происходит в СУБД | Когда выбирать |
|---|---|---|---|
| Удалить базу данных | Регистрация снята | База данных удалена целиком | Окончательный вывод из эксплуатации |
| Очистить базу данных | Регистрация снята | Таблицы 1С удалены, пустая база осталась | Базу на SQL-сервере создавали вручную с особыми настройками, и её нужно переиспользовать |
| Не изменять базу данных | Регистрация снята | Ничего не меняется | Перенос на другой кластер, ошибочная регистрация, разбор проблемы |
💡 Режим «Не изменять базу данных» — главный приём при переезде. Снимаете регистрацию на старом сервере, затем на новом создаёте базу с тем же именем базы данных и подключаетесь к существующим таблицам. Данные не переливаются, .dt не нужен.
Пользователь СУБД, указанный в свойствах базы, должен иметь право удалять базы данных. Если у него только права владельца конкретной базы, режим «Удалить базу данных» может не сработать. Тогда регистрация снимется, а данные придётся удалять вручную.
Удаление базы данных на SQL Server и PostgreSQL вручную
Ручная очистка нужна в трёх случаях: выбрали «Не изменять базу данных», удаление на стороне СУБД упало с ошибкой, или регистрацию в кластере удалили давно, а база данных так и висит на диске.
Сначала убедитесь, что базу не использует ни один кластер. Если она зарегистрирована где-то ещё, DROP DATABASE уничтожит рабочие данные.
Microsoft SQL Server
В SQL Server Management Studio база удаляется через контекстное меню базы → Delete. Отметьте флажок закрытия существующих соединений, иначе получите ошибку «занято».
Скриптом:
USE master;
GO
ALTER DATABASE [buh_test] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE [buh_test];
GO
SINGLE_USER WITH ROLLBACK IMMEDIATE откатывает чужие транзакции и отключает всех, кто держит базу. Файлы .mdf и .ldf SQL Server удалит сам.
Если базу ранее переводили в режим OFFLINE, файлы данных при DROP DATABASE на диске останутся. Их удаляют вручную из каталога данных экземпляра.
Отдельно проверьте логин SQL Server. Если под каждую базу 1С заводили своего пользователя, после удаления он останется в разделе Security → Logins. Удалите его, если он больше нигде не используется:
DROP LOGIN [usr_buh_test];
PostgreSQL
Сначала отключите оставшиеся соединения:
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'buh_test' AND pid <> pg_backend_pid();
Затем удалите базу. Подключаться нужно к другой базе, например postgres:
DROP DATABASE buh_test;
В PostgreSQL 13 и новее оба шага объединяет одна команда:
DROP DATABASE buh_test WITH (FORCE);
Из командной строки сервера то же делает утилита dropdb:
sudo -u postgres dropdb buh_test
Имя базы в PostgreSQL чувствительно к регистру, если её создавали с заглавными буквами. Тогда пишите имя в двойных кавычках: DROP DATABASE "Buh_Test";.
Файловые хвосты: каталог кластера, кэш клиентов, файловые базы
После удаления базы из кластера на дисках остаются следы. Они не мешают работе, но занимают место и путают при следующей регистрации.
Каталог реестра кластера
Сервер 1С хранит служебные данные каждой базы в подкаталоге с её идентификатором (GUID):
| ОС | Типовой путь |
|---|---|
| Windows | C:\Program Files\1cv8\srvinfo\reg_1541\<GUID базы> |
| Linux | /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/<GUID базы> |
Внутри — журнал регистрации (1Cv8Log), полнотекстовый индекс и другие служебные файлы. Журнал крупной базы легко весит десятки гигабайт.
Обычно кластер удаляет этот каталог сам. Если каталог остался, сверьте GUID со списком баз (rac infobase summary list). GUID не найден — каталог можно удалить. Путь srvinfo у вас может быть другим: он задаётся при установке сервера, смотрите параметр -d в свойствах службы «Агент сервера 1С:Предприятия 8.3».
Не трогайте файлы 1CV8Clst.lst и 1CV8Reg.lst. Это реестр кластера: его порча ломает весь сервер, а не одну базу.
Список баз и кэш на рабочих местах
На компьютерах пользователей база останется в окне запуска. Её убирают кнопкой «Удалить» в стартовом окне 1С. Сам список хранится в файле %APPDATA%\1C\1CEStart\ibases.v8i. При общем списке через 1CEStart.cfg правьте общий файл, иначе база вернётся.
Кэш конфигурации лежит в каталогах %APPDATA%\1C\1cv8\<GUID> и %LOCALAPPDATA%\1C\1cv8\<GUID>. Его можно удалить вручную при закрытой 1С или при следующем запуске любой базы с параметром /ClearCache.
Если база файловая
Файловую базу
в кластере не регистрируют. Удалить её — значит удалить каталог, где лежит файл 1Cv8.1CD, и убрать строку из списка баз.
- Убедитесь, что базу никто не открыл. Признак работы — заблокированный файл
1Cv8.1CDи каталоги сеансов рядом с ним. - Сохраните копию: скопируйте каталог целиком или выгрузите
.dt. - Удалите каталог базы.
- Уберите базу из списка в окне запуска.
Если файловая база опубликована на веб-сервере, снимите и публикацию. В IIS удалите виртуальный каталог, в Apache — блок публикации из httpd.conf. Иначе по адресу публикации пользователи увидят ошибку подключения.
Удаление базы из командной строки через rac
Утилита rac работает через сервер администрирования ras. Без запущенного ras команды не выполнятся. По умолчанию ras слушает порт 1545.
Запуск ras на Linux в фоне:
/opt/1cv8/x86_64/8.3.25.1374/ras cluster --daemon
На Windows ras обычно регистрируют службой, чтобы он поднимался вместе с сервером.
Порядок команд
- Узнать идентификатор кластера:
rac localhost:1545 cluster list
- Найти базу и её идентификатор:
rac localhost:1545 infobase summary list --cluster=<uuid_кластера>
- Заблокировать вход и регламентные задания:
rac localhost:1545 infobase update --cluster=<uuid_кластера> \
--infobase=<uuid_базы> --infobase-user=Админ --infobase-pwd=Пароль \
--sessions-deny=on --scheduled-jobs-deny=on
Завершить сеансы. Список —
rac session list --cluster=<uuid_кластера> --infobase=<uuid_базы>, завершение каждого —rac session terminate --cluster=<uuid_кластера> --session=<uuid_сеанса>.Удалить базу вместе с базой данных СУБД:
rac localhost:1545 infobase drop --cluster=<uuid_кластера> \
--infobase=<uuid_базы> --infobase-user=Админ --infobase-pwd=Пароль \
--drop-database
Вместо --drop-database можно указать --clear-database — это режим «Очистить базу данных
». Без обоих ключей снимается только регистрация, как в режиме «Не изменять».
Если у кластера задан администратор, добавьте к командам --cluster-user и --cluster-pwd. Полный список параметров для вашей версии покажет rac help infobase.
Пакетное удаление тестовых баз
rac выводит данные блоками «параметр : значение». Удобно разбирать их скриптом. Пример для Linux: найти uuid базы по имени.
CL=$(rac localhost:1545 cluster list | awk -F': ' '/^cluster/{print $2; exit}')
rac localhost:1545 infobase summary list --cluster=$CL \
| awk -F': ' '/^infobase/{id=$2} /^name/{if($2=="buh_test") print id}'
Пароли в командной строке видны в истории оболочки и в списке процессов. Для скриптов храните их в файле с правами 600 и подставляйте переменными.
Проверка, что база удалена полностью
Отдельно проверьте задания резервного копирования. План обслуживания в SQL Server или скрипт pg_dump по крону, который ссылается на удалённую базу, начнёт падать каждую ночь. Удалите эту базу из заданий сразу.
Ошибки при удалении базы и что с ними делать
Ещё одна ситуация — удаление «зависает» без ошибки. Чаще всего база занята долгим фоновым заданием или зависшим сеансом в рабочем процессе. Проверьте ветку «Соединения» под базой: соединения, которые не исчезают после удаления сеансов, держит рабочий процесс.
Крайняя мера — перезапуск службы «Агент сервера 1С:Предприятия 8.3». Перезапуск оборвёт сеансы во всех базах кластера, а не только в удаляемой. Делайте его вне рабочего времени и с предупреждением пользователей всех баз.
Частые вопросы
Можно ли восстановить базу после удаления с сервера 1С?
.dt или бэкапа СУБД.Удаляет ли удаление базы из кластера хранилище конфигурации?
Как удалить базу, если нет пароля администратора базы?
Можно ли удалить базу кластера, просто удалив её на SQL-сервере?
Освобождается ли место на диске сразу после удаления?
reg_1541.