1С + PostgreSQL не запускается после восстановления через dd

Описание

После восстановления системы поблочным способом (dd/dev/sdX) PostgreSQL (Postgres Pro для 1С) может не запускаться.

Типичный сценарий:

  • развёртывание на новой ВМ;
  • смена гипервизора или железа;
  • перенос системы без изменения конфигурации.

Контекст

Основные причины:

  • изменение имени сетевого интерфейса (predictable network interface names);
  • неконсистентное состояние WAL (Write-Ahead Log — журнал предзаписи);
  • повреждение служебных файлов репликации;
  • устаревшие или некорректные конфигурации.

⚠️ Риски

Работа с внутренними структурами PostgreSQL

  • pg_resetwal может привести к потере данных;
  • возможна логическая неконсистентность базы;
  • восстановление не гарантирует корректность данных.

Использовать только если:

  • нет валидного бэкапа;
  • стандартное восстановление невозможно.

Диагностика

Проверка статуса сервиса

systemctl status postgrespro-1c-14.service

Просмотр журнала

journalctl -xe | grep -v multipathd

Типичный симптом:

postgrespro-1c-14.service: Main process exited, status=1/FAILURE

Решение

1. Проверка сети

После восстановления через dd часто меняется имя интерфейса.

ip link show

Правка netplan:

vi /etc/netplan/00-installer-config.yaml

Пример:

network:
  ethernets:
    ens34:
      dhcp4: true
  version: 2

Применение:

netplan apply

2. Попытка запуска PostgreSQL

systemctl start postgrespro-1c-14.service

Если сервис не запускается — продолжаем диагностику.


3. Сброс WAL (последнее средство)

su - postgres
/opt/pgpro/1c-14/bin/pg_resetwal -f /var/lib/pgpro/1c-14/data/

4. Удаление повреждённого состояния репликации

mv /var/lib/pgpro/1c-14/data/pg_logical/replorigin_checkpoint /root/

5. Проверка конфигурации PostgreSQL

vi /var/lib/pgpro/1c-14/data/pg_hba.conf
vi /var/lib/pgpro/1c-14/data/postgresql.conf

Проверить:

  • listen_addresses
  • правила доступа (pg_hba.conf)
  • пути к каталогам
  • настройки портов

6. Повторный запуск

systemctl restart postgrespro-1c-14.service

Дополнительная диагностика

Запуск PostgreSQL вручную:

su - postgres
/opt/pgpro/1c-14/bin/postgres -D /var/lib/pgpro/1c-14/data/

Позволяет получить детальную ошибку запуска.


Ограничения

  • не исправляет повреждение данных;
  • не решает проблемы несовместимости версий;
  • требует последующей проверки базы.

Когда использовать

  • восстановление через dd;
  • PostgreSQL не запускается;
  • нет возможности штатного восстановления.

Когда НЕ использовать pg_resetwal

pg_resetwal — утилита аварийного восстановления PostgreSQL, которая принудительно сбрасывает состояние WAL (Write-Ahead Log — журнал предзаписи). Она позволяет запустить сервер в случае повреждения журнала, но при этом нарушает гарантии целостности данных.

Использование не рекомендуется в следующих случаях: • если есть актуальная резервная копия — корректнее выполнить штатное восстановление; • если причина сбоя не установлена — возможен запуск базы в неконсистентном состоянии; • если база находится в production — перед применением необходимо сделать копию каталога данных; • если используется репликация — возможна потеря согласованности между узлами; • если есть подозрение на проблемы с диском или файловой системой — сначала требуется диагностика хранилища; • если критична целостность данных — утилита не восстанавливает логическую корректность транзакций.

pg_resetwal следует рассматривать как последнее средство, когда стандартные механизмы восстановления недоступны или не дают результата.