Администрирование · 9 мин
Как удалить базу 1С в PostgreSQL
Пошаговая инструкция по удалению базы 1С в PostgreSQL: резервное копирование, завершение сеансов, DROP DATABASE и удаление через консоль кластера 1С.
Удаление базы 1С, работающей на PostgreSQL, — типовая задача администратора при выводе информационной базы из эксплуатации, очистке тестовых копий или переносе данных на другой сервер. Процедура затрагивает два уровня: саму базу данных в PostgreSQL и запись об информационной базе в кластере сервера 1С. Если удалить только одну часть, останутся «мусорные» объекты, которые мешают дальнейшей работе.
Главное правило: удаление необратимо. Команда DROP DATABASE уничтожает все таблицы, индексы и данные без возможности отката средствами самой СУБД. Поэтому первый шаг всегда — резервная копия, даже если база кажется ненужной. Практика показывает, что «ненужная» база внезапно оказывается нужной именно на следующий день после удаления.
Ниже разобран полный цикл: от проверки и бэкапа до удаления базы через psql, pgAdmin и консоль кластера 1С, а также типичные ошибки и способы их обхода.
Подготовка: что проверить перед удалением
Прежде чем удалять базу, убедитесь, что вы точно знаете её имя в PostgreSQL. Имя базы данных не всегда совпадает с названием информационной базы в списке 1С. Точное соответствие видно в свойствах базы в консоли кластера серверов 1С — там указаны сервер СУБД и имя базы данных.
Также проверьте, не используется ли база в планах обмена, регламентных заданиях на уровне СУБД или внешних отчётах, которые подключаются напрямую. Если база участвует в репликации PostgreSQL, сначала нужно остановить и разорвать репликацию, иначе удаление будет заблокировано или приведёт к ошибкам на реплике.
Уточните, есть ли у учётной записи, под которой вы будете выполнять удаление, достаточные права. Удалить базу может её владелец или суперпользователь PostgreSQL (обычно postgres). Для баз, созданных сервером 1С, владельцем часто является служебный пользователь, указанный при создании информационной базы.
Резервное копирование перед удалением
Даже тестовую базу стоит сохранить перед удалением: копия занимает немного места, а восстановление из pg_dump занимает минуты. Стандартный способ — утилита pg_dump, которая входит в состав PostgreSQL.
Удаление базы через psql и pgAdmin
Самый прямой способ — подключиться к серверу PostgreSQL через psql и выполнить команду удаления. Подключаться нужно к служебной базе (postgres или template1), потому что удалить базу, находясь внутри неё, нельзя.
Проверка результата и очистка остатков
После удаления убедитесь, что база действительно исчезла. Выполните в psql команду \l или запрос к системному каталогу: в списке не должно быть базы с удалённым именем.
Частые вопросы
Можно ли восстановить базу после DROP DATABASE без бэкапа?
Штатными средствами PostgreSQL — нет: команда удаляет файлы данных. Теоретически данные могут извлечь специализированные утилиты восстановления файловой системы, если диск не перезаписывался, но это дорого и не гарантирует результата. Поэтому бэкап перед удалением обязателен.
Чем отличается удаление базы в PostgreSQL от удаления в консоли кластера 1С?
DROP DATABASE удаляет только данные на уровне СУБД, а регистрация базы в кластере 1С остаётся. Удаление через консоль кластера с соответствующей опцией очищает оба уровня сразу. Оптимально использовать консоль 1С, а прямое удаление в PostgreSQL — как запасной вариант.
Ошибка «database is being accessed by other users» — что делать?
К базе есть активные подключения. Завершите сеансы в консоли кластера 1С, затем принудительно разорвите оставшиеся соединения через pg_terminate_backend, либо используйте DROP DATABASE ... WITH (FORCE) в PostgreSQL 13 и новее.
Нужно ли останавливать сервер 1С или PostgreSQL для удаления базы?
Нет, останавливать службы не требуется. Достаточно завершить сеансы конкретной информационной базы и убедиться в отсутствии подключений к ней на уровне СУБД. Остальные базы продолжат работать.
Как удалить базу, если забыт пароль postgres?
Можно временно настроить доверительную аутентификацию (trust) для локальных подключений в файле pg_hba.conf, перезагрузить конфигурацию PostgreSQL, выполнить удаление и вернуть настройки обратно. Либо удалить базу от имени владельца базы, если известен его пароль.
Освобождается ли место на диске сразу после удаления?
Да, при DROP DATABASE PostgreSQL удаляет каталог базы в каталоге данных, и место возвращается операционной системе сразу. В отличие от удаления строк таблицами DELETE, здесь не требуется VACUUM FULL.
Что важно запомнить
Сначала бэкап, потом завершение сеансов, затем DROP DATABASE и очистка записи в кластере 1С. Удаление необратимо, поэтому проверяйте имя базы дважды и не пропускайте резервное копирование даже для тестовых баз.