Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.

PostgreSQL 57P03: The database system is starting up / shutting down в 1С

Обновлено: 14.09.2026  ·  Официальная база знаний

Симптомы ошибки 57P03 в связке 1С + PostgreSQL

При попытке пользователей запустить базу 1С клиент выдает ошибку: Ошибка СУБД: FATAL: the database system is starting up (или shutting down), SQLSTATE=57P03. Подключение к серверу СУБД невозможно ни через толстый/тонкий клиент 1С, ни через pgAdmin.

Статус PostgreSQLТекст логаЗначение
starting upFATAL: the database system is starting up, SQLState: 57P03Сервер СУБД проигрывает транзакционные логи WAL после аварийной остановки
shutting downFATAL: the database system is shutting down, SQLState: 57P03СУБД останавливается по команде systemctl stop или по сигналу SIGTERM/SIGINT
in recovery and not accepting connectionsFATAL: the database system is in recovery modeРеплика находится в режиме Standby или восстанавливается из контрольной точки

Алгоритм устранения ошибки 57P03

  1. Главное правило — ПОДОЖДИТЕ (Crash Recovery): если сервер СУБД был выключен некорректно (отключение питания, перезагрузка хоста по BSOD/Kernel Panic), PostgreSQL при старте находится в состоянии starting up, так как механизм REDO применяет транзакции из pg_wal (pg_xlog). Отслеживайте прогресс в реальном времени:
    tail -f /var/log/postgresql/postgresql-*.log

    Ни в коем случае не убивайте процесс kill -9 postgres на этом этапе, иначе база будет разрушена!

  2. Проверьте свободное место на диске с базой: PostgreSQL падает в emergency shutdown, если на разделе /var/lib/postgresql/ осталось 0 байт свободного пространства:
    df -hT /var/lib/postgresql
  3. Удаление зависшего файла postmaster.pid (только если процесс НЕ запущен): если процесс упал, но оставил lock-файл:
    # 1. Проверяем, что процессы postgres ТОЧНО не висят:
    ps aux | grep postgres
    # 2. Если процессов нет, удаляем pid-файл:
    rm /var/lib/postgresql/data/postmaster.pid
    # 3. Стартуем сервис:
    systemctl start postgresql-1С
  4. Сброс зависшего журнала транзакций (КРАЙНЯЯ МЕРА): если СУБД не стартует из-за поврежденного WAL-файла:
    # Только после создания полной резервной копии каталога data!
    su - postgres
    /usr/pgsql-XX/bin/pg_resetwal -f /var/lib/postgresql/data/

Внимание: Использование утилиты pg_resetwal -f очищает незафиксированные транзакции. После ее применения необходимо обязательно выполнить тестирование и исправление базы в конфигураторе 1С.

Практический опыт инженера: Практика ITSTM: Обязательно установите расширение PostgresPro для 1С (пакет postgrespro-1c), так как стандартная сборка PostgreSQL из ванильных репозиториев Linux не содержит патчей блокировок и автоэскалации для архитектуры метаданных 1С.

Частые вопросы (FAQ)

Сколько времени длится состояние 'the database system is starting up'?

Время зависит от объема не сброшенных на диск транзакций и скорости диска (IOPS). Для баз 1С объемом 500 ГБ процедура redo recovery может длиться от 5 минут до часа.

Почему эта ошибка часто возникает на серверах с 1С?

1С генерирует огромный объем мелких транзакций. Если параметры checkpoint_completion_target и max_wal_size настроены неверно, контрольные точки сбрасываются редко, увеличивая объем работы при аварийном старте.

Что означает, если ошибка 57P03 появляется при нормальной работе?

Служба СУБД была принудительно остановлена внешней системой: например, скриптом бэкапа, системой мониторинга или механизмом Linux OOM-Killer из-за нехватки оперативной памяти.

Как предотвратить падение СУБД по вине OOM Killer?

Задайте параметр vm.overcommit_memory = 2 в /etc/sysctl.conf и скорректируйте shared_buffers в postgresql.conf так, чтобы СУБД не потребляла всю RAM.