Репликация PostgreSQL для 1С: схема и failover
Москва, Щёлковское шоссе, д. 92, корп. 7 · Пн–Пт 9:00–19:00 · +7 903 729-62-41
· 13 мин чтения

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

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

Разберу один из проектов 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.

До нашего прихода вся их IT-система работала на одном-единственном сервере 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 — это было требование заказчика, связанное с импортозамещением. В качестве СУБД использовали 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. Это, на мой взгляд, был бы явный перебор: пришлось бы разворачивать ещё три виртуалки etcd, настраивать дополнительный мониторинг, да и обучать админа клиента всему этому. Вместо такого усложнения мы взяли проверенную связку: keepalived (для виртуального IP) и наш кастомный bash-скрипт для переключения режима.

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

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

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

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

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

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

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

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

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

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

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

Все триггеры круглосуточно сыплются в Telegram-чат дежурного инженера. А если ситуация критическая, то они дублируются звонком через нашего бота. Согласно SLA для этой инфраструктуры, мы гарантируем реакцию в течение 15 минут в любое время суток.

Сравнение MS SQL Server и PostgreSQL для 1С: стоимость лицензий, поддержка реплик, совместимость
PostgreSQL экономит 960 тыс. руб. на лицензиях и исключает санкционные риски.

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

Чтобы мои слова не были голословными, вот вам честный расклад по деньгам, которые наш клиент реально потратил весной 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) у клиента было:

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С на реплике, проверяем, что не потерялось ни одной транзакции, отрабатываем переключение клиентов. Без таких учений первый реальный инцидент превращается в катастрофу.

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

📄
Скачайте подробный разбор в PDF Кейсы, статистика, типовые ошибки и чек-лист самопроверки — 12 страниц
Скачать PDF

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

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

Письмо придёт в течение минутыНе нашли его во «Входящих» — загляните в папку «Спам» или «Промоакции» и нажмите «Не спам». Так все следующие выпуски будут приходить прямо в основную почту.
Реквизиты оператора персональных данных

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