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 apply2. Попытка запуска 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 следует рассматривать как последнее средство, когда стандартные механизмы восстановления недоступны или не дают результата.