Как перенести базу данных 1С с MS SQL на PostgreSQL под управлением Linux?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Переход с операционной системы Windows и СУБД MS SQL на Linux (например, CentOS или Astra Linux) и PostgreSQL — это важный шаг в оптимизации ИТ-инфраструктуры и импортозамещении. Рассмотрим подробно, как правильно осуществить этот процесс, какие инструменты использовать и на что обратить внимание, чтобы избежать потерь данных и падения производительности.

Основной механизм переноса: использование файла .DT

Разберем классический и наиболее распространенный способ миграции — использование файла выгрузки информационной базы (.dt). Основное предназначение формата .dt в системе 1С:Предприятие заключается именно в обеспечении независимости данных от конкретной СУБД. Это своего рода универсальный контейнер, который «схлопывает» структуру базы данных в платформонезависимый формат.

Процесс выглядит следующим образом:

  1. Запустим Конфигуратор на исходной базе (Windows + MS SQL).
  2. Выполним команду Администрирование — Выгрузить информационную базу... и укажем путь для сохранения файла .dt.
  3. Подготовим целевой сервер на Linux, установим платформу 1С и СУБД PostgreSQL.
  4. Создадим пустую информационную базу на новом сервере через консоль администрирования или стартовое окно 1С.
  5. Запустим Конфигуратор в новой пустой базе и выберем Администрирование — Загрузить информационную базу..., указав наш файл.

Важный нюанс: Перед выгрузкой крайне рекомендуется выполнить операцию Тестирование и исправление (ТиИ). В MS SQL структура может «прощать» логические ошибки (например, битые ссылки или некорректные записи в таблицах), которые PostgreSQL может не принять при загрузке, что приведет к аварийному завершению процесса.

Особенности работы с большими базами данных

Проанализируем ситуацию, когда объем базы превышает 100–200 ГБ. В этом случае стандартная выгрузка через .dt может стать «бутылочным горлышком» по следующим причинам:

Рассмотрим альтернативный метод минимизации простоя, предложенный опытными специалистами:

  1. Создадим клон текущей базы на MS SQL средствами самой СУБД (через Backup/Restore).
  2. Из этого клона в спокойном режиме сделаем выгрузку в .dt и загрузим её в PostgreSQL. При этом основная рабочая база остается доступной для пользователей.
  3. После того как база в PostgreSQL развернута, нам нужно перенести «дельту» — данные, которые были набиты пользователями за время миграции.
  4. Для этого используем штатную обработку Выгрузка и загрузка данных XML. Выгружаем только измененные объекты по дате или ссылке и загружаем их в новую базу.

Прямое копирование базы данных (для платформы 8.3.22+)

В современных версиях платформы 1С появился более совершенный инструмент. Разберем его преимущества. Механизм Копирования базы данных позволяет передавать данные из одной СУБД в другую напрямую, минуя промежуточный файл .dt.

Этот способ надежнее, так как передача идет потоком. Чтобы воспользоваться им, в консоли администрирования кластера или через параметры запуска можно инициировать копирование, указав источник (MS SQL) и приемник (PostgreSQL). Это значительно снижает нагрузку на дисковую подсистему и риск повреждения файла архива.

Техническая подготовка PostgreSQL на Linux

Выясним, почему нельзя просто установить стандартный пакет PostgreSQL из репозитория CentOS. Для корректной работы 1С требуется специализированная сборка PostgreSQL. В ней должны быть наложены патчи, обеспечивающие правильную работу с блокировками 1С и корректную сортировку (ICU).

Основные моменты настройки среды:

Оптимизация производительности после переноса

Сразу после загрузки базы в PostgreSQL вы можете заметить, что система работает медленнее, чем на MS SQL. Это происходит потому, что планировщик запросов PostgreSQL еще не имеет статистики о распределении данных. Разберем шаги по оптимизации:

  1. Выполним ANALYZE и VACUUM: Это критически важная операция. Нужно запустить регламентное обслуживание средствами СУБД, чтобы PostgreSQL «увидел» ваши данные и начал строить оптимальные планы запросов.
  2. Настроим postgresql.conf: Параметры «из коробки» рассчитаны на очень слабые серверы. Нам необходимо отредактировать конфигурационный файл. Посмотрим на основные параметры:

# Примерные настройки для сервера с 32 ГБ RAM
shared_buffers = 8GB
temp_buffers = 256MB
work_mem = 64MB
maintenance_work_mem = 1GB
effective_cache_size = 24GB
autovacuum = on

Также в самой конфигурации 1С рекомендуется запустить Управление итогами и выполнить полный пересчет итогов для всех регистров. Это гарантирует корректность отображения остатков и ускорит работу отчетов сразу после миграции.

Подводя итог, можно сказать, что перенос через .dt — это легитимный и рабочий метод «комильфо», но он требует тщательной подготовки окружения PostgreSQL и обязательной пост-миграционной настройки производительности.

← На главную