К статье
Практический материал

Администрирование · 11 мин

Как скопировать базу 1С на сервере

Способы скопировать базу 1С на сервере: выгрузка через конфигуратор, копирование средствами MS SQL и PostgreSQL, регламентные задания и проверка результата.

Копирование базы 1С на сервере — стандартная задача администратора: она нужна для резервного копирования, переноса базы на другой сервер, создания тестовой копии для разработчиков или подготовки к обновлению конфигурации. Порядок действий зависит от того, как развёрнута база: в файловом варианте или в клиент-серверном (MS SQL Server, PostgreSQL, IBM DB2, Oracle).

Главное отличие от копирования обычного файла в том, что работающую базу нельзя просто перетащить мышкой: данные могут находиться в несогласованном состоянии, а сервер СУБД блокирует файлы. Поэтому используются штатные механизмы — выгрузка в файл .dt через конфигуратор или резервное копирование средствами самой СУБД.

Ниже разобраны оба подхода с конкретными шагами, условиями выбора, проверкой результата и типичными ошибками. Материал ориентирован на администраторов, работающих с платформой 1С:Предприятие 8.3.

Определите вариант развёртывания базы

Перед копированием выясните, где физически хранятся данные. Откройте список информационных баз в окне запуска 1С, выделите нужную базу и нажмите «Изменить»: в параметрах будет указано «На сервере 1С:Предприятия» (клиент-серверный вариант) или «На данном компьютере или на компьютере в локальной сети» (файловый вариант).

Для клиент-серверного варианта дополнительно уточните тип СУБД и имя базы данных. Это видно в консоли кластера серверов 1С: откройте свойства информационной базы — там указаны сервер СУБД, имя базы данных и тип СУБД. Эти сведения понадобятся при копировании средствами SQL.

Файловая база — это каталог с файлом 1Cv8.1CD. Её можно скопировать как обычный файл, но только при условии, что с базой никто не работает: иначе копия может оказаться повреждённой или содержать незавершённые транзакции.

Способ 1: выгрузка базы в файл .dt через конфигуратор

Это универсальный способ, который работает независимо от типа СУБД и подходит, когда нужно перенести базу на другой сервер, изменить тип СУБД или получить копию для загрузки в тестовую среду. Существенное ограничение — скорость: выгрузка большой базы (десятки и сотни гигабайт) занимает часы и требует много свободного места на диске.

Перед выгрузкой завершите все активные сеансы пользователей. В клиент-серверном варианте это делается через консоль кластера: откройте ветку «Сеансы», удалите активные сеансы и установите для базы блокировку начала сеансов, чтобы пользователи не подключились во время выгрузки. В файловом варианте достаточно попросить всех выйти и убедиться, что база не открыта.

Далее запустите конфигуратор, авторизуйтесь с правами администратора и выполните пункт меню «Администрирование → Выгрузить информационную базу». Укажите путь и имя файла .dt. Дождитесь завершения операции — прогресс отображается в окне состояния. После окончания проверьте, что файл создан и его размер не нулевой.

Выгрузка через конфигуратор
  1. 1
    Завершите сеансы пользователей и установите блокировку соединений с базой
  2. 2
    Откройте базу в конфигураторе под учётной записью с полными правами
  3. 3
    Выберите «Администрирование → Выгрузить информационную базу»
  4. 4
    Укажите каталог с достаточным свободным местом и имя файла .dt
  5. 5
    Дождитесь завершения и проверьте наличие и размер файла
  6. 6
    Снимите блокировку сеансов, если копирование было разовой операцией

Способ 2: копирование средствами MS SQL Server

Для базы на MS SQL Server самый быстрый и надёжный способ — штатный backup средствами СУБД. Он выполняется без выгрузки в .dt, работает значительно быстрее и позволяет копировать базу, не останавливая работу пользователей: SQL Server делает согласованный снимок данных на момент начала копирования.

Откройте SQL Server Management Studio (SSMS), подключитесь к серверу, найдите нужную базу в разделе «Databases». Щёлкните по ней правой кнопкой мыши и выберите «Tasks → Back Up». Укажите тип «Full», задайте путь к файлу .bak и запустите операцию. Полученный файл — полная копия базы, которую можно восстановить на этом или другом сервере через «Tasks → Restore → Database».

Ту же операцию удобно выполнять скриптом, особенно если копирование нужно делать регулярно по расписанию через планировщик Windows или задание SQL Server Agent.

sql
BACKUP DATABASE [MyBase1C] TO DISK = N'D:\Backup\MyBase1C_full.bak' WITH FORMAT, COMPRESSION, CHECKSUM;

После восстановления копии на другом сервере не забудьте, что база данных SQL — это ещё не информационная база 1С. Для работы с копией создайте в консоли кластера 1С новую информационную базу, указав существующую базу данных SQL, либо добавьте базу в список запуска с параметрами нового сервера.

Способ 3: копирование базы на PostgreSQL

Для связки 1С с PostgreSQL (включая сборку PostgresPro, адаптированную под 1С) используется утилита pg_dump или pg_dumpall. Копирование выполняется на сервере СУБД под пользователем с правами на чтение базы, обычно postgres.

Команда выгрузки одной базы в файл выглядит так:

bash
pg_dump -U postgres -F c -f /backup/mybase1c.dump mybase1c

Формат -F c (custom) создаёт сжатый архив, который восстанавливается утилитой pg_restore с возможностью выборочного восстановления объектов. Для восстановления сначала создайте пустую базу (createdb), затем выполните pg_restore с указанием файла дампа.

Учтите важный нюанс: базы 1С на PostgreSQL создаются с определёнными параметрами (локаль, кодировка). При восстановлении копии на другом сервере убедитесь, что параметры нового кластера PostgreSQL совпадают, иначе база может не подключиться или работать с ошибками сортировки.

Создание тестовой копии для разработки

Частая практическая задача — сделать копию рабочей базы для тестирования обновлений или доработок. Здесь есть нюанс: в тестовой копии остаются регламентные задания, настройки обменов и подключения к внешним системам. Если запустить такую копию без подготовки, она может начать выполнять обмены с реальными системами, отправлять письма или загружать данные в рабочие базы.

Правильный порядок: скопируйте базу любым способом, подключите копию как отдельную информационную базу, затем до запуска пользователей отключите регламентные задания и заблокируйте обмены. В типовых конфигурациях для этого есть обработка «Блокировка работы с внешними ресурсами» (входит в состав Библиотеки стандартных подсистем) — она автоматически отключает синхронизации и рассылки при определении, что база является копией.

Автоматизация регулярного копирования

Разовое копирование вручную не заменяет регламентное резервное копирование. Для клиент-серверных баз настройте план обслуживания в MS SQL Server (Maintenance Plan) или задание SQL Server Agent с выполнением BACKUP DATABASE по расписанию — обычно полная копия ежедневно в нерабочее время и, при необходимости, копии журнала транзакций в течение дня.

Для PostgreSQL регулярное копирование настраивается через планировщик cron (Linux) или планировщик заданий Windows с вызовом pg_dump и ротацией файлов — храните несколько последних копий, чтобы можно было откатиться не только на вчерашний день.

Храните копии не на том же диске и не на том же сервере, где работает база: при отказе диска или сервера вы потеряете и базу, и резервные копии. Минимальное требование — отдельный физический носитель или сетевое хранилище, лучше — дополнительно копия в другом помещении или облачном хранилище.

Проверка результата копирования

Сам факт завершения операции без ошибок не гарантирует, что копия рабочая. Обязательная проверка — восстановить копию в тестовое окружение и открыть базу. Для файла .dt выполните «Администрирование → Загрузить информационную базу» в пустую базу и убедитесь, что загрузка прошла до конца без сообщений об ошибках.

Для backup SQL восстановите базу под другим именем, создайте для неё информационную базу в кластере 1С и войдите в режиме предприятия. Проверьте ключевые данные: откройте несколько документов за последние дни, сформируйте оборотно-сальдовую ведомость или другой итоговый отчёт и сравните итоги с рабочей базой на ту же дату.

Контрольные точки

Как проверить результат

Файл копии создан
Норма

Файл .dt или .bak существует, размер сопоставим с размером базы

Тревожный признак

Файл отсутствует, нулевого размера или значительно меньше ожидаемого

Восстановление копии
Норма

База восстанавливается и открывается без ошибок

Тревожный признак

Ошибки при загрузке .dt или restore, база не открывается

Целостность данных
Норма

Итоги отчётов в копии совпадают с рабочей базой на дату копирования

Тревожный признак

Расхождения в остатках, отсутствуют документы за последний период

Типичные ошибки при копировании

Большинство проблем при копировании баз 1С связано не с самой процедурой, а с нарушением условий её выполнения. Разберём самые частые.

Типичные ошибки
01
Копирование файла 1Cv8.1CD при работающих пользователях — копия получается повреждённой или с незавершёнными транзакциями
02
Выгрузка .dt без блокировки сеансов — данные в копии несогласованны, часть изменений потеряна
03
Запуск тестовой копии без отключения регламентных заданий — копия выполняет обмены с реальными системами
04
Хранение копий на том же диске, что и рабочая база — при отказе диска теряется всё сразу
05
Отсутствие проверки восстановления — в момент аварии выясняется, что копия нерабочая
06
Копирование только базы SQL без учёта того, что часть данных (например, файлы в томах) хранится вне СУБД

Отдельно отметим ситуацию с присоединёнными файлами: если в конфигурации настроено хранение файлов в томах на диске, а не в базе, то копия базы не будет содержать этих файлов. Каталоги томов нужно копировать отдельно вместе с базой.

Итог

Что важно запомнить

Перед копированием определите вариант развёртывания базы и завершите сеансы пользователей. Универсальный способ — выгрузка в .dt через конфигуратор, быстрый для больших баз — backup средствами СУБД. Тестовую копию запускайте только после отключения регламентных заданий и обменов. Любую копию проверяйте восстановлением и сверкой итогов.

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

Можно ли скопировать базу 1С, не выгоняя пользователей?

Да, если использовать резервное копирование средствами СУБД (BACKUP DATABASE в MS SQL, pg_dump в PostgreSQL) — эти механизмы создают согласованный снимок данных на лету. Выгрузка в .dt через конфигуратор и копирование файла файловой базы требуют завершения всех сеансов, иначе копия будет несогласованной или повреждённой.

Чем выгрузка .dt отличается от бэкапа SQL?

Файл .dt — платформенный формат 1С: он содержит данные и конфигурацию и позволяет переносить базу между разными СУБД и разрядностями платформы. Бэкап SQL — низкоуровневая копия базы данных, восстанавливается только на тот же тип СУБД совместимой версии, но создаётся и восстанавливается значительно быстрее, что критично для больших баз.

Сколько места нужно для копии базы?

Ориентируйтесь на размер самой базы: файл .dt обычно занимает от половины до полного размера базы данных, сжатый backup SQL с опцией COMPRESSION — заметно меньше исходной базы. Перед копированием убедитесь, что на целевом диске свободно не меньше объёма базы с запасом, иначе операция прервётся на середине.

Как перенести копию базы на другой сервер 1С?

Выгрузите базу в .dt, на новом сервере создайте пустую информационную базу в кластере и загрузите в неё файл через конфигуратор. Альтернатива для той же СУБД: восстановите backup на новом сервере СУБД, затем в консоли кластера 1С создайте информационную базу, указав существующую базу данных.

Почему восстановленная копия не открывается в 1С?

Частые причины: версия платформы на новом сервере старше той, под которой работала база; несовпадение параметров кластера PostgreSQL (локаль, кодировка); база SQL восстановлена, но для неё не создана информационная база в кластере 1С. Проверьте версии платформы и корректность регистрации базы в кластере.

Копируются ли вместе с базой настройки пользователей и пароли?

Да, список пользователей информационной базы с хэшами паролей хранится внутри базы и переносится вместе с ней при любом способе копирования. Это стоит учитывать при создании тестовых копий: доступ к копии получат те же пользователи с теми же паролями, поэтому ограничьте доступ к тестовой среде.