Серверная база 1С для сотен пользователей: СУБД, диски, кластер и регламент
Содержание
Чтобы создать хранилище 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
- При установке выберите сортировку
Cyrillic_General_CI_AS. - Достаточно компонента «Службы ядра СУБД»: полнотекстовый поиск SQL 1С не использует, у платформы свой.
- Создайте 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С
- В окне запуска нажмите
Добавить→Создание новой информационной базы. - Выберите «Создание информационной базы без конфигурации» (для загрузки
.dt) или из шаблона. - Тип расположения —
На сервере 1С:Предприятия. - Заполните поля:
- Кластер серверов
1С:Предприятия — имя сервера, при нестандартном порту
srv1c:1541; - Имя информационной базы в кластере — латиницей, без пробелов, например
buh_main; - Защищённое соединение — «Выключено» в доверенной локальной сети;
- Тип СУБД, Сервер баз данных, Имя базы данных, Пользователь и Пароль сервера БД;
- Смещение дат — для MS SQL ставьте
2000; - флажок Создать базу данных в случае её отсутствия;
- флажок Установить блокировку регламентных заданий — включите, если база будет копией.
- Кластер серверов
1С:Предприятия — имя сервера, при нестандартном порту
- Нажмите
ДалееиГотово.
Способ 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 для критичных баз |
| Количество соединений на процесс | Сколько сеансов обслуживает один rphost | 64–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 для восстановления на момент времени.
💡 Копия, которую ни разу не восстанавливали, — это надежда, а не резервная копия. Раз в месяц разворачивайте её на тестовом сервере.
7. Ошибки при создании и работе серверного хранилища 1С
Частые вопросы
Чем хранилище конфигурации отличается от серверной базы?
Конфигурация → Хранилище конфигурации → Создать хранилище. Данные учёта в нём не хранятся.Можно ли перевести файловую базу на сервер без потери данных?
.dt, создайте пустую серверную базу и загрузите в неё выгрузку. Пользователи, настройки и история сохранятся.