Серверная база 1С для сотен пользователей: СУБД, диски, кластер и регламент

· 10 мин

Содержание

Чтобы создать хранилище 1С для высоконагруженной системы, нужна клиент-серверная схема: сервер 1С:Предприятия 8.3 плюс отдельная СУБД (MS SQL Server или PostgreSQL), база на быстрых NVMe-дисках и настроенный кластер. Саму информационную базу создают в консоли кластера или через окно запуска, а затем загружают в неё конфигурацию или выгрузку .dt.

Файловая база начинает «задыхаться» уже на 15–20 активных пользователях: блокировки, долгие проведения, падения при закрытии месяца. Серверное хранилище строят в таком порядке: СУБД и железо, настройка сервера БД, создание базы, кластер, регламент. Параметры даны с числами, которые реально влияют на скорость.

Под «хранилищем» здесь понимается место, где живут данные учёта, — база на сервере СУБД. Хранилище конфигурации для групповой разработки — другой механизм, о нём коротко в последнем разделе вопросов.

1. Архитектура хранилища 1С: файловый режим или сервер и какая СУБД

Для нагрузки выше пары десятков пользователей файловый вариант не рассматривают. Выбор идёт между СУБД, которые поддерживает платформа 8.3.

СУБДКогда выбиратьНа что смотреть
Microsoft SQL ServerИнфраструктура на Windows, есть лицензии, нужен привычный инструментарийСтоимость лицензий по ядрам; редакция Express не годится — ограничения по памяти и размеру базы
PostgreSQL (сборка с патчами для 1С)Нужна бесплатная СУБД, серверы на Linux или WindowsСтавить именно сборку, адаптированную под 1С, а не «ванильную» из репозитория
Postgres ProТребования импортозамещения, нужна поддержка вендораПлатная лицензия для промышленных редакций
IBM Db2, Oracle DatabaseУже есть в компании и есть специалистыРедко встречаются в проектах на 1С, мало готовых рецептов

🧩 Типовые схемы размещения:

  • 🖥️ Один сервер: и 1С, и СУБД на одной машине. Подходит до 50–80 пользователей при хорошем железе, меньше сетевых задержек.
  • 🖥️🖥️ Два сервера: сервер 1С отдельно, СУБД отдельно, соединение не медленнее 10 Гбит/с. Стандарт для 100+ пользователей.
  • 🏢 Кластер из нескольких рабочих серверов 1С + выделенный сервер СУБД. Нужен, когда одного сервера 1С не хватает по процессору или требуется резервирование.

Каждому пользователю нужна клиентская лицензия, а серверу 1С — серверная лицензия нужной разрядности. Без лицензии платформа базу не запустит.

2. Железо и диски под базу данных 1С

Узкое место больших баз почти всегда — диски, на втором месте — частота процессора. Количество ядер важно меньше, чем их частота: один длинный запрос выполняется в одном потоке.

Процессор и память

  • ⚙️ Сервер 1С: высокая частота ядра (от 3,5 ГГц в турбо), ориентир — 1 ядро на 10–15 активных пользователей.
  • 🧠 Память сервера 1С: от 4 до 8 ГБ на рабочий процесс плюс запас для системы.
  • 🗄️ Сервер СУБД: памяти желательно столько, чтобы в неё помещалась «горячая» часть базы. Для базы 200 ГБ разумный минимум — 64–128 ГБ.

Дисковая подсистема

Разнесите файлы по разным физическим томам:

ТомЧто лежитРекомендация
Данные.mdf (MS SQL) или каталог data (PostgreSQL)NVMe в RAID 10
Журнал транзакций.ldf или pg_walОтдельный NVMe в RAID 1, запись последовательная
tempdb / временные файлыtempdb MS SQL, temp_tablespacesБыстрый отдельный диск
Резервные копии.bak, дампыОтдельный том или сетевое хранилище, не на одном массиве с данными

💡 Для томов MS SQL под Windows форматируйте NTFS с размером кластера 64 КБ. В схеме электропитания Windows выберите «Высокая производительность»: экономичный режим заметно снижает частоту процессора под нагрузкой.

Не размещайте базу на дешёвых SSD без защиты от потери питания и на сетевых дисках по SMB. При сбое питания это прямой путь к повреждённой базе.

3. Установка и настройка сервера СУБД для 1С

MS SQL Server

  1. При установке выберите сортировку Cyrillic_General_CI_AS.
  2. Достаточно компонента «Службы ядра СУБД»: полнотекстовый поиск SQL 1С не использует, у платформы свой.
  3. Создайте SQL-логин для 1С (например, usr1c) с правами dbcreator и processadmin или выдайте ему владельца конкретной базы. Работать под sa — плохая практика.

После установки задайте параметры экземпляра:

-- оставить ОС и серверу 1С (если он на той же машине) 8-16 ГБ
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 114688; RECONFIGURE; -- пример для 128 ГБ ОЗУ
EXEC sp_configure 'max degree of parallelism', 1; RECONFIGURE;
  • 🔢 max degree of parallelism = 1 — общепринятая настройка для OLTP-нагрузки 1С: параллельные планы на коротких запросах дают больше вреда, чем пользы.
  • 📁 tempdb: несколько файлов одинакового размера, по числу ядер, но не больше 8.
  • ⚡ Дайте учётной записи службы SQL право «Выполнение задач обслуживания томов» — файлы базы будут расти мгновенно.
  • 📈 Автоприрост файлов задавайте в мегабайтах (например, 1024 МБ), а не в процентах.

PostgreSQL

Устанавливайте сборку PostgreSQL для 1С той версии, которую поддерживает ваш релиз платформы. Ключевые параметры postgresql.conf для сервера со 128 ГБ памяти:

shared_buffers = 32GB              # около 25% ОЗУ
effective_cache_size = 96GB        # 50-75% ОЗУ
work_mem = 64MB
maintenance_work_mem = 2GB
max_connections = 1000
random_page_cost = 1.1             # для SSD/NVMe
max_locks_per_transaction = 256

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

4. Как создать информационную базу на сервере 1С

Есть три равноценных способа. Результат один: в кластере появляется база, а в СУБД — пустая база данных под неё.

Способ 1. Через окно запуска 1С

  1. В окне запуска нажмите Добавить → Создание новой информационной базы.
  2. Выберите «Создание информационной базы без конфигурации» (для загрузки .dt) или из шаблона.
  3. Тип расположения — На сервере 1С:Предприятия.
  4. Заполните поля:
    • Кластер серверов 1С:Предприятия — имя сервера, при нестандартном порту srv1c:1541;
    • Имя информационной базы в кластере — латиницей, без пробелов, например buh_main;
    • Защищённое соединение — «Выключено» в доверенной локальной сети;
    • Тип СУБД, Сервер баз данных, Имя базы данных, Пользователь и Пароль сервера БД;
    • Смещение дат — для MS SQL ставьте 2000;
    • флажок Создать базу данных в случае её отсутствия;
    • флажок Установить блокировку регламентных заданий — включите, если база будет копией.
  5. Нажмите Далее и Готово.

Способ 2. Через консоль администрирования

В «Администрировании серверов 1С:Предприятия» раскройте кластер, на ветке Информационные базы в контекстном меню выберите Создать → Информационная база. Поля те же. Отдельно проверьте флажок «Разрешить выдачу лицензий сервером 1С:Предприятия», если используете серверное лицензирование клиентов.

Способ 3. Командной строкой через rac

Удобно, когда баз много или их нужно поднимать скриптом. Сначала запустите ras на сервере 1С, затем:

rac cluster list
rac infobase create --cluster=<UUID_кластера> ^
  --name=buh_main --dbms=MSSQLServer --db-server=srvsql ^
  --db-name=buh_main --db-user=usr1c --db-pwd=*** ^
  --locale=ru --date-offset=2000 --create-database ^
  --license-distribution=allow

UUID кластера берите из вывода rac cluster list. Полный список ключей — в rac help infobase.

Загрузка данных

Пустую базу наполняют в Конфигураторе:

  • 📦 перенос существующей базы — Администрирование → Загрузить информационную базу (файл .dt);
  • 🆕 новая база из дистрибутива — Конфигурация → Загрузить конфигурацию из файла (.cf), затем Обновить конфигурацию базы данных.

Загрузка .dt полностью заменяет данные в выбранной базе. Перед загрузкой дважды проверьте, что открыта нужная база, а не рабочая.

5. Настройка кластера серверов 1С под высокую нагрузку

Параметры разнесены по двум окнам: свойства кластера и свойства рабочего сервера. Путаница между ними — частая причина «настроили, а ничего не поменялось».

Свойства рабочего сервера

ПараметрЧто даётОриентир
Максимальный объём памяти рабочих процессовВерхняя граница памяти всех rphost сервера70–80% ОЗУ сервера 1С
Безопасный расход памяти за один вызовОбрывает «тяжёлый» вызов, а не весь процесс2–4 ГБ
Количество ИБ на процессИзоляция баз друг от друга1 для критичных баз
Количество соединений на процессСколько сеансов обслуживает один rphost64–128
Диапазон IP-портовПорты рабочих процессовпо умолчанию 1560–1591, расширьте при большом числе процессов
Менеджер под каждый сервисРазносит сервисы кластера по отдельным процессамВключить на нагруженных системах

Здесь же задаются требования назначения функциональности — например, вынести фоновые и регламентные задания на отдельный рабочий сервер, чтобы они не тормозили пользователей.

Свойства кластера

  • 🔁 Интервал перезапуска — плановый перезапуск рабочих процессов, например раз в сутки (86400 с). Снижает утечки памяти.
  • 📊 Допустимый объём памяти и интервал превышения — процесс, который вышел за порог дольше интервала, будет перезапущен.
  • 🛡️ Уровень отказоустойчивости — сколько серверов может выйти из строя без остановки кластера.
  • ⚖️ Режим распределения нагрузки — «Приоритет по производительности» для быстрых машин, «Приоритет по памяти» при её дефиците.

🔌 Сетевая схема: клиент обращается к агенту сервера (порт 1540), затем к менеджеру кластера (1541) и к рабочим процессам в диапазоне портов рабочего сервера. Все эти порты должны быть открыты в брандмауэре между клиентами и сервером 1С.

Изменение части параметров кластера применяется после перезапуска рабочих процессов. Делайте это вне рабочего времени: активные сеансы пользователей прервутся.

6. Регламентное обслуживание и резервное копирование хранилища

Серверная база без регламента через полгода работает медленнее файловой. Статистика устаревает, индексы фрагментируются, журнал транзакций съедает диск.

Регламент для MS SQL

ОперацияПериодичностьЗачем
Обновление статистикиЕжедневно ночьюОптимизатор выбирает верные планы запросов
Очистка процедурного кэша (DBCC FREEPROCCACHE)После обновления статистикиСброс старых планов
Реорганизация индексовЕжедневно или через деньСнижение фрагментации
Перестроение индексовРаз в неделюПолное восстановление структуры
Проверка целостности (DBCC CHECKDB)Раз в неделюРаннее обнаружение повреждений

Настраивается мастером «Планы обслуживания» в SQL Server Management Studio или заданиями агента SQL Server.

Регламент для PostgreSQL

  • 🧹 Не отключайте autovacuum — без него таблицы раздуваются.
  • 📈 Ночной VACUUM ANALYZE по базе дополняет автоматическую очистку.
  • 🔍 Следите за размером таблиц и количеством «мёртвых» строк в pg_stat_user_tables.

Резервные копии

Выгрузка .dt для большой базы — плохой вариант бэкапа: долго, требует отсутствия пользователей, а восстановление занимает часы. Копируйте средствами СУБД.

-- MS SQL: полная модель восстановления + журнал каждые 15-30 минут
BACKUP DATABASE buh_main TO DISK = 'E:\Backup\buh_main_full.bak' WITH COMPRESSION;
BACKUP LOG buh_main TO DISK = 'E:\Backup\buh_main_log.trn' WITH COMPRESSION;

Для PostgreSQL используйте pg_dump в формате -Fc для ежедневных копий или pg_basebackup с архивом WAL для восстановления на момент времени.

Минимальный набор защиты данных
Выполнено: 0 / 5

💡 Копия, которую ни разу не восстанавливали, — это надежда, а не резервная копия. Раз в месяц разворачивайте её на тестовом сервере.

7. Ошибки при создании и работе серверного хранилища 1С

Диагностика: выберите симптом

Частые вопросы

Чем хранилище конфигурации отличается от серверной базы?
Хранилище конфигурации — каталог с версиями конфигурации для групповой разработки, его создают в Конфигураторе через меню Конфигурация → Хранилище конфигурации → Создать хранилище. Данные учёта в нём не хранятся.
Можно ли перевести файловую базу на сервер без потери данных?
Да. Выгрузите файловую базу в .dt, создайте пустую серверную базу и загрузите в неё выгрузку. Пользователи, настройки и история сохранятся.
Сколько пользователей выдержит один сервер?
Зависит от конфигурации и сценариев. Для БП и ЗУП на современном сервере с NVMe 100–150 активных пользователей на одной машине — реальная цифра, для ERP с интенсивным проведением рамки заметно уже.
Нужна ли отдельная лицензия на MS SQL Server?
Да, для промышленной эксплуатации нужна лицензия SQL Server, например runtime-лицензия, которая продаётся для работы только с 1С. Бесплатная альтернатива — PostgreSQL для 1С.
Какую модель восстановления выбрать в MS SQL?
Полную, если нужно восстановление на момент времени и есть резервные копии журнала. Простую — для тестовых баз и копий, где потеря данных за сутки не критична.