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

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

Как перенести базу 1С на PostgreSQL

Перенос базы 1С на PostgreSQL: выгрузка через dt, настройка сервера СУБД, создание базы в кластере, типичные ошибки и проверка результата.

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

Главная особенность связки 1С и PostgreSQL состоит в том, что платформа 1С работает не с любой сборкой PostgreSQL, а только со специально пропатченной версией от 1С или с Postgres Pro. Обычная сборка с официального сайта postgresql.org не подойдёт — сервер 1С откажется создавать базу. Это первое, что нужно проверить до начала работ.

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

Когда перенос на PostgreSQL оправдан

Файловый режим работы 1С имеет жёсткие ограничения: при одновременной работе более 5–10 пользователей заметно растут блокировки, замедляются проведение документов и формирование отчётов, повышается риск повреждения файла базы при сбоях сети. Переход на клиент-серверную архитектуру с PostgreSQL снимает эти проблемы и даёт нормальные средства резервного копирования на уровне СУБД.

PostgreSQL выбирают вместо MS SQL в первую очередь из-за отсутствия лицензионных платежей за СУБД. Для небольших и средних компаний это существенная экономия. При этом производительность связки 1С + PostgreSQL при грамотной настройке вполне достаточна для баз размером в десятки гигабайт и десятков одновременных пользователей.

Сравнение вариантов

Файловый режим

Подходит для 1–5 пользователей и небольших баз. Не требует сервера СУБД, но ограничен по производительности и надёжности.

PostgreSQL

Бесплатная СУБД, требует специальной сборки и настройки. Оптимальный вариант по соотношению цена/возможности для большинства компаний.

MS SQL Server

Платная СУБД, проще в сопровождении для администраторов Windows-инфраструктуры, поддерживается «из коробки» без специальных сборок.

Требования к серверу и совместимые версии

Для работы сервера 1С с PostgreSQL нужна специальная сборка СУБД: либо дистрибутив PostgreSQL с патчами от фирмы «1С» (распространяется через портал 1С), либо Postgres Pro Standard/Certified. Версия СУБД должна совпадать с версией, поддерживаемой вашей версией платформы 1С — эта информация указана в документации к платформе и в системных требованиях.

Операционная система сервера может быть как Windows, так и Linux. На практике Linux-развёртывание встречается чаще из-за отсутствия лицензии на ОС, но и Windows-вариант полностью работоспособен. Важно, чтобы разрядность сервера 1С и СУБД совпадала, а локаль кластера PostgreSQL соответствовала требованиям платформы (обычно ru_RU.UTF-8 на Linux).

По аппаратным ресурсам ориентируйтесь на объём базы: оперативной памяти должно хватать для размещения активной части данных в кэше СУБД. Для небольшой базы достаточно 8–16 ГБ ОЗУ, для баз в десятки гигабайт желательно от 32 ГБ. Дисковая подсистема критична — используйте SSD, так как PostgreSQL чувствителен к скорости записи журнала транзакций.

Подготовка: резервная копия и установка PostgreSQL

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

Установите совместимую сборку PostgreSQL на сервер. При установке на Linux задайте правильную локаль до инициализации кластера — сменить её потом без пересоздания кластера нельзя. Создайте пользователя СУБД (обычно postgres) и задайте ему пароль: эти данные потребуются при создании информационной базы в консоли серверов 1С.

После установки проверьте, что служба PostgreSQL запущена и принимает подключения. На Linux это делается командой проверки статуса службы, на Windows — через оснастку служб. Порт по умолчанию — 5432, убедитесь, что он доступен с сервера 1С, если они разнесены на разные машины.

bash
sudo systemctl status postgresql && sudo -u postgres psql -c "SELECT version();"

Выгрузка базы в файл .dt

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

Для больших баз выгрузка занимает от десятков минут до нескольких часов. Не прерывайте процесс и не выключайте машину, на которой запущен конфигуратор. Если база очень большая, планируйте перенос на нерабочее время — ночь или выходные, с запасом времени на загрузку и проверку.

Создание базы в кластере серверов 1С

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

Если сервер 1С и PostgreSQL установлены на одной машине, в качестве сервера СУБД укажите localhost или имя сервера. При раздельном размещении проверьте сетевую доступность и настройки pg_hba.conf — файл аутентификации PostgreSQL должен разрешать подключение с адреса сервера 1С. Ошибки вида «no pg_hba.conf entry» означают именно эту проблему.

Порядок действий
  1. 1
    Сделайте резервную копию исходной базы и выгрузку в .dt
  2. 2
    Установите совместимую сборку PostgreSQL и проверьте её запуск
  3. 3
    Создайте информационную базу в консоли кластера серверов 1С
  4. 4
    Откройте новую базу в конфигураторе и загрузите файл .dt
  5. 5
    Дождитесь окончания реструктуризации и проверьте работу базы
  6. 6
    Настройте регламентные задания, права пользователей и резервное копирование

Загрузка данных и проверка результата

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

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

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

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

Сальдо по ОСВ
Норма

Совпадает с исходной базой по всем счетам

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

Расхождения даже по одному счёту — загрузка прошла с ошибками

Открытие документов
Норма

Документы открываются и проводятся без ошибок

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

Ошибки при проведении, пустые движения

Список пользователей
Норма

Все пользователи на месте, роли сохранены

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

Потерянные пользователи или сброшенные права

Регламентные задания
Норма

Задания активны и выполняются по расписанию

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

Задания заблокированы после переноса

Типичные ошибки и их устранение

Самая частая ошибка — попытка использовать неподходящую сборку PostgreSQL. Признак: база в кластере не создаётся, сервер 1С сообщает о несовместимости версии СУБД. Решение — установить сборку от 1С или Postgres Pro нужной версии. Вторая распространённая проблема — неверная локаль кластера PostgreSQL на Linux, из-за чего сортировка и сравнение строк работают некорректно; лечится только пересозданием кластера с правильной локалью.

Ошибки нехватки памяти или дискового пространства при загрузке .dt проявляются как внезапное прерывание процесса. Проверьте свободное место, увеличьте параметры work_mem и maintenance_work_mem в postgresql.conf в разумных пределах. Также после переноса рекомендуется выполнить полный VACUUM ANALYZE базы и перестроить индексы — это заметно ускоряет первые дни работы.

Типичные ошибки
01
Установка PostgreSQL с официального сайта вместо сборки от 1С — база не создаётся в кластере
02
Перенос без резервной копии — при сбое загрузки данные оказываются недоступны в обеих базах
03
Загрузка при работающих пользователях в исходной базе — несогласованные данные в .dt
04
Имя базы с кириллицей или пробелами — ошибки при создании базы в PostgreSQL
05
Забытые регламентные задания — после переноса не выполняются обмены и расчёты

Настройка после переноса

Перенос не заканчивается загрузкой данных. Настройте регулярное резервное копирование средствами PostgreSQL (pg_dump или физические копии с WAL-архивацией), включите автоочистку и проверьте параметры shared_buffers и effective_cache_size под объём памяти сервера. Разрешите пользователям доступ к новой базе, обновив список баз на клиентских машинах или опубликовав базу на веб-сервере заново.

Первые дни после перехода наблюдайте за производительностью: медленные запросы часто указывают на отсутствие статистики (решается ANALYZE) или на нехватку памяти. Старую файловую базу не удаляйте сразу — сохраните её в архиве минимум на период сверки итогов.

Итог

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

Перенос базы 1С на PostgreSQL выполняется через выгрузку в .dt и загрузку в новую базу кластера. Критичны три вещи: совместимая сборка PostgreSQL, полная резервная копия до начала работ и тщательная проверка данных после загрузки.

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

Можно ли перенести базу 1С на PostgreSQL без выгрузки в .dt?

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

Подойдёт ли PostgreSQL с официального сайта postgresql.org?

Нет. Сервер 1С требует специальные патчи, которых нет в стандартной сборке. Используйте дистрибутив PostgreSQL, публикуемый фирмой «1С» для своей платформы, или Postgres Pro совместимой версии.

Сколько времени занимает перенос базы?

Зависит от размера базы и скорости дисков. Небольшая база переносится за 1–2 часа, база в десятки гигабайт может потребовать целой ночи с учётом выгрузки, загрузки и реструктуризации. Закладывайте запас времени на проверку и возможный откат.

Что делать, если загрузка .dt прервалась с ошибкой?

Проверьте свободное место на диске PostgreSQL и логи сервера 1С — чаще всего причина в нехватке места или памяти. Устраните причину, удалите недогруженную базу в кластере и повторите загрузку с начала. Исходная база при этом не пострадает, если вы не удаляли её.

Нужно ли менять лицензии 1С при переходе на PostgreSQL?

Сама СУБД PostgreSQL бесплатна, но для клиент-серверного режима требуется лицензия на сервер 1С:Предприятие. Клиентские лицензии сохраняются. Проверьте, есть ли у вас лицензия на сервер, до начала перехода.

Можно ли вернуться обратно на файловый режим после переноса?

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