Как восстановить базу 1С из файлов данных PostgreSQL?

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

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

Основные условия совместимости

Прежде чем приступать к активным действиям, проанализируем вводные данные. Файловый перенос базы данных (так называемый «холодный бэкап») накладывает жесткие ограничения на среду исполнения. Рассмотрим их подробнее:

  1. Версия PostgreSQL: Она должна совпадать до мажорного номера (например, если база работала на 12.x, ставить нужно 12.x).
  2. Специфика сборки: Для работы с 1С используются пропатченные версии СУБД. Крайне важно использовать ту же сборку, которая была у оригинала: от самой компании «1С», Postgres Pro или Etersoft. Разные сборки могут иметь разную логику сортировки (collate) и обработки метаданных.
  3. Разрядность и ОС: Нельзя запустить файлы от 64-битной СУБД на 32-битной. Также перенос «папки данных» между Windows и Linux практически невозможен из-за принципиальных различий в файловых системах и форматах хранения.

Шаг 1: Подготовка чистого окружения

Рассмотрим процесс восстановления на новом сервере. Первым делом нам необходимо установить «чистый» экземпляр PostgreSQL. Выполним установку СУБД, убедившись, что версия и параметры локали (кодировка UTF-8) совпадают с исходными. После установки проверим работоспособность службы, зайдя в pgAdmin или используя psql.

Шаг 2: Подмена данных и работа с правами доступа

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

Удалим содержимое новой папки data и скопируем туда файлы из нашего бэкапа. Здесь нас подстерегает важный нюанс — права доступа. Проанализируем ситуацию для разных ОС:

Шаг 3: Удаление блокировок и проверка конфигурации

Если оригинальная база была скопирована в момент работы или после сбоя, внутри папки останется файл postmaster.pid. Проанализируем содержимое корня data: если этот файл присутствует, новая служба не запустится, считая, что экземпляр уже активен. Удалим postmaster.pid вручную.

Также обратим внимание на конфигурационные файлы postgresql.conf и pg_hba.conf, которые переехали вместе с базой. Выясним причину возможных конфликтов: если на новом сервере меньше оперативной памяти, параметры типа shared_buffers в старом конфиге могут помешать запуску. В таком случае рекомендуется временно использовать дефолтные конфиги от новой установки, предварительно прописав в pg_hba.conf правила авторизации для подключения 1С.

Шаг 4: Запуск СУБД и восстановление журналов транзакций

Попробуем запустить службу. Если база не поднимается, проверим наличие папки pg_wal (или pg_xlog в старых версиях). Эти журналы необходимы для консистентности данных. Если журналы утеряны, база может отказаться стартовать. В самом крайнем случае, когда данные нужно вытащить любой ценой, можно воспользоваться утилитой восстановления, но помните — это может привести к потере части транзакций:

sudo -u postgres pg_resetwal -f /var/lib/pgsql/data

Шаг 5: Подключение базы в консоли 1С

После успешного старта PostgreSQL база еще не является базой 1С в полном смысле этого слова. Теперь нам нужно зарегистрировать её на сервере приложений 1С. Рассмотрим порядок действий:

  1. Откроем «Консоль администрирования серверов 1С Предприятия».
  2. Создадим новую информационную базу.
  3. В поле «Имя базы данных» укажем точное имя папки/базы, как она называлась в PostgreSQL.
  4. Укажем параметры подключения (сервер, пользователь postgres).
  5. Важно: снимите галочку «Создать базу в случае отсутствия», чтобы сервер 1С просто «подцепился» к существующим таблицам.

Шаг 6: Финализация и проверка целостности

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

Первым делом выполним полную выгрузку в файл .dt. Это позволит пересобрать структуру данных заново. После этого создадим абсолютно чистую базу на SQL и загрузим в неё полученный .dt.

Обязательным финальным этапом является процедура Тестирование и исправление (ТиИ). Проанализируем состояние объектов, включив следующие опции:

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

← На главную