Удаление информационной базы из кластера 1С и из СУБД без хвостов

· 10 мин

Содержание

Базу на сервере 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" от имени администратора. Номер версии в пути подставьте свой. Версия консоли должна совпадать с версией сервера.

Пошагово

  1. Разверните дерево: Central 1C:Enterprise 8.3 servers → имя сервера → Кластеры → кластер → Информационные базы.
  2. Найдите базу. Если список длинный, отсортируйте его по имени щелчком по заголовку колонки.
  3. Правый щелчок по базе → Удалить.
  4. Если у кластера есть администратор, консоль запросит его логин и пароль.
  5. Откроется окно «Удаление информационной базы». Введите имя и пароль пользователя базы с административными правами.
  6. Выберите режим работы с базой данных СУБД (см. таблицу ниже).
  7. Нажмите «ОК» и дождитесь исчезновения базы из списка.

Три режима удаления

РежимЧто происходит в кластереЧто происходит в СУБДКогда выбирать
Удалить базу данныхРегистрация снятаБаза данных удалена целикомОкончательный вывод из эксплуатации
Очистить базу данныхРегистрация снятаТаблицы 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):

ОСТиповой путь
WindowsC:\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, и убрать строку из списка баз.

  1. Убедитесь, что базу никто не открыл. Признак работы — заблокированный файл 1Cv8.1CD и каталоги сеансов рядом с ним.
  2. Сохраните копию: скопируйте каталог целиком или выгрузите .dt.
  3. Удалите каталог базы.
  4. Уберите базу из списка в окне запуска.

Если файловая база опубликована на веб-сервере, снимите и публикацию. В 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 обычно регистрируют службой, чтобы он поднимался вместе с сервером.

Порядок команд

  1. Узнать идентификатор кластера:
rac localhost:1545 cluster list
  1. Найти базу и её идентификатор:
rac localhost:1545 infobase summary list --cluster=<uuid_кластера>
  1. Заблокировать вход и регламентные задания:
rac localhost:1545 infobase update --cluster=<uuid_кластера> \
  --infobase=<uuid_базы> --infobase-user=Админ --infobase-pwd=Пароль \
  --sessions-deny=on --scheduled-jobs-deny=on
  1. Завершить сеансы. Список — rac session list --cluster=<uuid_кластера> --infobase=<uuid_базы>, завершение каждого — rac session terminate --cluster=<uuid_кластера> --session=<uuid_сеанса>.

  2. Удалить базу вместе с базой данных СУБД:

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 и подставляйте переменными.

Проверка, что база удалена полностью

Контроль после удаления
Выполнено: 0 / 7

Отдельно проверьте задания резервного копирования. План обслуживания в SQL Server или скрипт pg_dump по крону, который ссылается на удалённую базу, начнёт падать каждую ночь. Удалите эту базу из заданий сразу.

Ошибки при удалении базы и что с ними делать

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

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

Крайняя мера — перезапуск службы «Агент сервера 1С:Предприятия 8.3». Перезапуск оборвёт сеансы во всех базах кластера, а не только в удаляемой. Делайте его вне рабочего времени и с предупреждением пользователей всех баз.

Частые вопросы

Можно ли восстановить базу после удаления с сервера 1С?
Если выбран режим «Не изменять базу данных», достаточно заново зарегистрировать базу в кластере с тем же именем базы данных. После режима «Удалить базу данных» восстановить её можно только из резервной копии: .dt или бэкапа СУБД.
Удаляет ли удаление базы из кластера хранилище конфигурации?
Нет. Хранилище — отдельный каталог или отдельный сервер хранилища. Его удаляют самостоятельно, когда разработка по этой конфигурации завершена и версии больше не нужны.
Как удалить базу, если нет пароля администратора базы?
Если в базе заведены пользователи, кластер требует учётку с административными правами для любого режима удаления, даже для снятия регистрации. Сначала восстановите доступ к базе, затем удаляйте. Данные в СУБД администратор СУБД может удалить и без пароля 1С, но регистрация в кластере при этом останется.
Можно ли удалить базу кластера, просто удалив её на SQL-сервере?
Технически да, но регистрация в кластере останется. Пользователи при входе получат ошибку подключения к СУБД. Правильный порядок обратный: сначала кластер, потом СУБД.
Освобождается ли место на диске сразу после удаления?
В SQL Server и PostgreSQL файлы данных удаляются сразу при DROP DATABASE. Место из журнала регистрации освобождается после удаления каталога базы в reg_1541.