Перенос информационных баз 1С большого объема (от 500 Гб до нескольких терабайт) между различными системами управления базами данных (СУБД) всегда был серьезным вызовом для системных администраторов. Традиционный метод через создание файла .dt часто дает сбои: процесс выгрузки может занимать десятки часов, требовать огромного свободного места на диске и в итоге завершаться ошибкой из-за нехватки памяти или нестабильности соединения. В последних версиях платформы 1С:Предприятие (начиная с 8.3.24) появился принципиально новый механизм, который позволяет выполнять миграцию напрямую из одной СУБД в другую.
Разберем типичную ситуацию, с которой сталкиваются многие администраторы крупных инсталляций 1С. Когда возникает необходимость перенести базу с Microsoft SQL Server на PostgreSQL (например, в рамках импортозамещения), стандартный путь выглядит так: Выгрузка в .dt -> Создание пустой базы -> Загрузка из .dt. Рассмотрим основные недостатки этого метода:
.dt. Как отмечают участники обсуждения, процесс может длиться более 30 часов, и малейший сбой в сети или регламентное задание на сервере прерывает этот процесс..dt может просто не создаться, блокируя возможность миграции.Проанализируем новый инструмент, предложенный разработчиками 1С. Основным действующим лицом здесь выступает утилита командной строки ibcmd. В ней реализована команда infobase copy, которая кардинально меняет подход к переносу данных. Теперь данные передаются из СУБД-источника в СУБД-приемник "на лету", минуя промежуточное сохранение в файл.
Рассмотрим ключевые преимущества этого механизма:
Для выполнения миграции нам потребуется доступ к консоли сервера и установленная утилита ibcmd. Разберем примерный алгоритм действий. Предположим, нам нужно перенести базу с сервера MS SQL на сервер PostgreSQL.
Посмотрим на пример команды для запуска процесса:
ibcmd infobase copy
--src-db-type=MSSQLServer
--src-db-server=SQL-OLD
--src-db-name=Trade_Base
--src-db-user=sa
--src-db-pwd=password
--dst-db-type=PostgreSQL
--dst-db-server=PG-NEW
--dst-db-name=Trade_Base_New
--dst-db-user=postgres
--dst-db-pwd=secret
--threads=8
В данном примере параметр --threads=8 указывает утилите использовать 8 параллельных потоков для копирования данных, что значительно ускоряет процесс на мощном оборудовании.
Выясним важный момент: можно ли делать миграцию без остановки работы пользователей? Официальная рекомендация — использовать монопольный режим. Поскольку утилита выполняет последовательное чтение таблиц, изменение данных в источнике во время процесса приведет к нарушению логической целостности в базе-приемнике.
Однако, как справедливо замечают эксперты в обсуждении, если требуется минимизировать простой до нуля, можно рассмотреть комбинированный подход:
ibcmd.Большинству организаций будет достаточно стандартного использования ibcmd в технологическое окно, так как скорость работы нового механизма в 2–3 раза выше, чем у связки с .dt.
Рассмотрим основные сценарии, в которых ibcmd infobase copy станет незаменимым помощником:
mdf/ldf невозможно из-за различий в версиях серверов..dt из-за логических ошибок или мусора в таблицах, прямой перенос может помочь пересоздать структуру и перенести только валидные данные.Важное примечание: Перед запуском процесса убедитесь, что на машине, где запускается утилита, установлены клиентские библиотеки для обоих типов СУБД. Также рекомендуется предварительно проверить идентичность конфигураций (метаданных) в источнике и приемнике, если база-приемник уже была создана ранее.
Подводя итог, можно сказать, что появление прямой миграции — это долгожданный шаг в сторону упрощения эксплуатации высоконагруженных систем на платформе 1С. Использование ibcmd позволяет забыть о проблемах "невыгружающихся" терабайтных баз и значительно сократить время на регламентные работы по миграции данных.