· 13 мин чтения

PostgreSQL для 1С: репликация и автоматический failover в офисе на 50 рабочих мест

Меня зовут Семёнов Евгений Сергеевич, я уже 15 лет занимаюсь обслуживанием корпоративных IT-инфраструктур в Москве и Подмосковье. В этой статье я подробно разберу один из моих любимых проектов 2025 года — развёртывание отказоустойчивой пары серверов PostgreSQL для 1С:Бухгалтерия и 1С:ЗУП в производственной компании на 45 рабочих мест. Расскажу, почему MS SQL Server мы заменили на PostgreSQL, как организовали репликацию, что было настроено по уму, а что — стоило нам пары бессонных ночей. Цифры, конфиги и бюджет — всё внутри.

Кто заказчик и что было до нас

Заказчик — компания, занимающаяся производством мебельной фурнитуры в Подмосковье. На момент обращения у них было 45 рабочих мест в офисе, 12 человек в цеху работали через терминальный сервер, плюс 6 удалённых сотрудников через VPN. Используют 1С:Бухгалтерия 8.3 (КОРП), 1С:ЗУП 3.1 и 1С:УНФ для оперативного учёта производства. Объём базы — 78 ГБ (бухгалтерия), 14 ГБ (ЗУП), 22 ГБ (УНФ). Активных сеансов в часы пик — 38–42.

До нашего прихода всё крутилось на одном сервере HP ProLiant DL380 Gen9 с MS SQL Server 2014 Standard и 1С:Сервером предприятия. Основная боль — устаревший SQL Server, лицензия которого закончилась в 2023 году, и единственная точка отказа: упал сервер — встал офис на полдня, потому что бэкап разворачивался долго, а резервного железа не было. В 2024 году такой инцидент уже был: 6 часов простоя, по оценке руководителя — около 380 тыс. руб. потерь.

Почему PostgreSQL, а не продление MS SQL

Мы рассмотрели три варианта: продление MS SQL Server 2019 Standard, миграция на PostgreSQL и переход в облако 1С:Фреш. Облако отвалилось из-за объёма базы и требований к интеграциям с производственным оборудованием. Между MS SQL и PostgreSQL цифры говорили сами за себя:

ПараметрMS SQL Server 2022 StdPostgres Pro 1C
Лицензия на 2 ядра≈ 480 000 ₽0 ₽ (входит в 1С)
Лицензия для реплики≈ 480 000 ₽ (Std нельзя AlwaysOn без Software Assurance)0 ₽
Поддержка от вендоразападный продукт, риск отзывароссийский, в реестре ПО
Совместимость с 1С 8.3.24+полнаяполная
Производительность для 45 РМс запасомс запасом (после тюнинга)

Экономия на лицензиях — около 960 тыс. руб. сразу, плюс отсутствие риска по санкциям. Производительность Postgres Pro для 1С на сравнимом железе у нас по другим клиентам идёт на уровне MS SQL ±10 %, что для офиса в 50 пользователей абсолютно несущественно.

Архитектура решения

Мы спроектировали схему из двух физических серверов, соединённых отдельной 10G-линией для репликации, плюс одна виртуальная машина-арбитр на офисном гипервизоре для кворума при failover. Сервера разнесены по двум независимым стойкам в серверной комнате клиента, каждый со своим UPS и независимой электролинией.

Спецификация серверов pg-1c-prod-01 и pg-1c-prod-02:

Операционная система — Astra Linux 1.7 SE (требование заказчика для импортозамещения), PostgreSQL — Postgres Pro Standard 16 для 1С (бесплатная сборка), 1С:Сервер 8.3.24 — отдельно на двух нодах в active-passive режиме через keepalived с виртуальным IP.

Настройка streaming replication: пошагово

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

На primary-сервере (pg-1c-prod-01) в файле postgresql.conf мы выставили:

wal_level = replica
max_wal_senders = 5
max_replication_slots = 5
wal_keep_size = 8GB
hot_standby = on
synchronous_commit = on
synchronous_standby_names = 'pg-1c-prod-02'
shared_buffers = 48GB
effective_cache_size = 144GB
work_mem = 64MB
maintenance_work_mem = 2GB
checkpoint_completion_target = 0.9
random_page_cost = 1.1
default_statistics_target = 200
max_connections = 200

Ключевой момент — synchronous_commit = on с явным указанием реплики. Это значит, что транзакция 1С получает подтверждение только после того, как WAL-запись физически приехала на реплику. Латентность по 10G-линку — менее 1 мс, поэтому замедления для пользователей 1С нет, зато при выходе primary из строя мы не теряем ни одной транзакции. Для бухгалтерии это критично.

В pg_hba.conf добавили строку для репликации:

host    replication     repl_user    10.30.0.2/32    scram-sha-256

На реплике (pg-1c-prod-02) сделали базовую копию через pg_basebackup и настроили standby-режим с физическим replication slot. Слот гарантирует, что primary не удалит WAL-сегменты, пока их не получит реплика — без этого при перезагрузке реплики мы могли получить «отвал» и пришлось бы полностью переинициализировать.

Автоматический failover: keepalived + скрипт

Для офиса на 45 РМ мы намеренно не стали разворачивать Patroni + etcd. Это избыточно: добавляет 3 виртуальные машины etcd, требует мониторинга, обучения админа клиента. Вместо этого использовали проверенную связку keepalived (виртуальный IP) + кастомный bash-скрипт переключения режима.

Логика работы:

Полное переключение от падения primary до момента, когда пользователи могут заходить в 1С, занимает 38–55 секунд. После этого админ получает чёткие инструкции, что делать с восстановленным primary (превратить в реплику обратной репликацией).

Особенности именно для 1С

Платформа 1С капризна к настройкам PostgreSQL. Вот что обязательно нужно сделать, и о чём забывают:

Параметры памяти под нашу нагрузку (192 ГБ RAM, 78+14+22 ГБ баз):

Бэкапы: репликация — это не бэкап

Очень частая ошибка: «У нас же есть реплика, бэкапы не нужны». Реплика защищает от выхода железа из строя, но не от логических ошибок: бухгалтер удалил год документов, ошибка в обработке снесла справочник, шифровальщик зашифровал базу. Все эти изменения мгновенно реплицируются на standby, и вы остаётесь без данных на обоих серверах.

Поэтому у нас параллельно работает:

Без последнего пункта бэкапы — это шрёдингеровский кот: вы не знаете, рабочие они или нет, пока не попробуете восстановить.

Мониторинг и оповещения

На обоих серверах развёрнут Zabbix-агент, который контролирует:

Все триггеры приходят в Telegram-чат дежурного инженера круглосуточно. Критические — дублируются звонком через нашего бота. По SLA на эту инфраструктуру мы реагируем за 15 минут в любое время суток.

Бюджет проекта и срок окупаемости

Чтобы не быть голословным — вот честный расклад по деньгам, которые клиент потратил весной 2025 года:

СтатьяСумма
2 × HP DL380 Gen10 ребилд (с гарантией 12 мес)295 000 ₽
NVMe SSD 2 × 960 ГБ + SSD 4 × 1.92 ТБ × 2 серверa178 000 ₽
10G карты Mellanox ConnectX-3 + DAC-кабели22 000 ₽
Synology RS1221+ + 4 × 8 ТБ HDD WD Red Pro для бэкапов165 000 ₽
Лицензии PostgreSQL и 1С:Сервер для второй ноды0 ₽
Работы по проектированию, настройке, миграции (32 часа)112 000 ₽
Тестирование, обучение админа, документация34 000 ₽
Итого806 000 ₽

Сравните с одним инцидентом 2024 года, который стоил клиенту 380 тыс. руб., и с потенциальной покупкой MS SQL Standard на 4 ядра + Software Assurance для AlwaysOn — это около 1.4 млн руб. только за лицензии. Окупаемость — 14 месяцев по самой консервативной оценке, реально — после первого же предотвращённого инцидента.

Грабли, на которые мы наступили

Не буду делать вид, что всё прошло гладко. Вот что было больно:

Что получил клиент по итогу

За год эксплуатации (с мая 2025 по апрель 2026) у клиента было:

Хотите такую же надёжность для своей 1С?

Я лично выезжаю на аудит инфраструктуры в Москву и в радиусе 50 км от МКАД. За 2–3 рабочих дня вы получите отчёт со списком уязвимостей, оценкой состояния серверов 1С и расчётом стоимости миграции на отказоустойчивую схему. Без обязательств.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — частые вопросы по PostgreSQL для 1С

Зачем нужна репликация PostgreSQL для 1С в небольшом офисе?
Главная причина — деньги. При 45 пользователях час простоя сервера 1С в активный день стоит около 60–90 тыс. руб. упущенной выручки и зарплат. Реплика снижает RTO с 4–6 часов (восстановление из бэкапа) до 5–10 минут (переключение). Окупается за один инцидент.
Сколько стоит схема с репликацией для офиса до 50 РМ?
Базовый комплект — 2 сервера на 32 ГБ ОЗУ и SSD NVMe 2x960 ГБ в RAID1 — обходится в 380–450 тыс. руб. оборудования плюс 65–90 тыс. руб. работ по настройке. Лицензии PostgreSQL для 1С — бесплатно (мы используем сборку Postgres Pro Standard 16 для 1С).
Можно ли обойтись одним сервером и просто ежедневным бэкапом?
Можно, но это плохой выбор для бизнеса с активной работой в 1С. При сбое HDD на сервере без репликации восстановление из бэкапа двухчасовой давности занимает от 3 до 8 часов и теряет работу за прошедшие 2 часа. Реплика устраняет обе проблемы.
Что выбрать для PostgreSQL под 1С: ванильный PostgreSQL или Postgres Pro?
Для 1С используйте только Postgres Pro 1C (бесплатная сборка от Postgres Professional, специально патченная под 1С) или ванильный PostgreSQL с патчами 1С. Чистый PostgreSQL без патчей в 1С работает с грубыми ошибками при сложных запросах.
Как тестировать failover, чтобы не словить сюрприз в продакшене?
Раз в квартал в выходной день в 8:00 мы намеренно гасим primary-сервер. Засекаем время до восстановления работы 1С на реплике, проверяем, что не потерялось ни одной транзакции, отрабатываем переключение клиентов. Без таких учений первый реальный инцидент превращается в катастрофу.

Подпишитесь на рассылку ITfresh

Раз в неделю — практические гайды для руководителя IT и сисадмина: безопасность, 1С, миграции, резервные копии, лайфхаки из реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.