# 1c Dba

> DBA для 1С:Предприятие на PostgreSQL (основное; Postgres Pro Enterprise) и MS SQL (кратко): тюнинг СУБД под 1С, регламентное обслуживание, диагностика и снятие блокировок, мониторинг, резервное копирование и восстановление, отказоустойчивость и масштабирование. Используй всякий раз, когда речь о настройке postgresql.conf под 1С (shared_buffers, work_mem, maintenance_work_mem, random_page_cost, effective_io_concurrency, max_parallel_workers*, автовакуум, WAL, контрольные точки); о регламенте VACUUM/ANALYZE/FREEZE, REINDEX CONCURRENTLY, pg_repack, распухании (bloat) индексов и таблиц; о блокировках на уровне СУБД (pg_locks, pg_stat_activity, pg_cancel_backend/pg_terminate_backend); о мониторинге (pg_stat_*, pg_stat_statements, pgpro_stats, cache hit ratio, age(datfrozenxid), длинные транзакции); о бэкапе (pg_dump, pg_basebackup, архив WAL, PITR) и проверке восстановимости; об HA/репликации (Patroni+etcd, потоковая/логическая репликация, реплики только для чтения), копиях баз 1С для аналитики (postgres_fdw), сай

- Skill: `vgtitov/1c-dba` (Agent Skill, multi-file: 11 files)
- Install (CLI): `npx skillmds@latest add vgtitov/1c-dba`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vgtitov/1c-dba/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: vgtitov (https://skillmd.com/u/vgtitov)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/vgtitov/1c-dba

---


# DBA для 1С (PostgreSQL / MS SQL) — настраивать и обслуживать СУБД по измерениям, не по памяти

## Локализация (сначала, если есть)
Если в скилле есть каталог `references/local/` — прочитай его ПЕРЕД работой: `version-stack.md`
(версии платформы/библиотек, режим совместимости, префиксы ТВОЕЙ компании) и остальные карты.
При противоречии локальное побеждает generic. Контракт — `docs/SKILL_LOCALIZATION.md` toolkit.

Скилл администратора СУБД под 1С:Предприятие: настроить сервер БД (основное — **PostgreSQL / Postgres
Pro Enterprise**, кратко — **MS SQL**), держать базу в порядке регламентом, диагностировать и снимать
блокировки, мониторить, бэкапить с проверкой восстановимости, строить отказоустойчивость и
масштабирование. База 1С — «ненормальная» для СУБД (тысячи таблиц и индексов, данные за годы, работа в
последнем периоде, частые перепроведения, только btree-индексы), поэтому ей нужны «ненормальные»,
агрессивные настройки обслуживания. Адаптируется под любой проект — версии и железо заполни под себя.

## Главное правило: сначала измерь, потом меняй
Нейросеть врёт в деталях СУБД и 1С: путает значения по умолчанию, единицы, поведение версий. Источник
истины — **реальное измерение и официальная справка**, не память:
- **Перед выводом** сними данные: `pg_stat_activity` / `pg_locks` / `pg_stat_statements` / `pgpro_stats`,
  `EXPLAIN (ANALYZE, BUFFERS)`, `iostat`/`vmstat`/`top`, технологический журнал 1С (ТЖ), счётчики ОС.
  Сначала **корневая причина** (план запроса, ожидание, насыщение IO/CPU), потом фикс.
- **Любую правку postgresql.conf** — сначала на **предпроде**, с замером ДО/ПОСЛЕ и планом отката;
  каждый сервер требует **отдельного пересчёта** параметров (от его RAM/ядер/дисков). Меняешь — снимаешь
  бэкап конфига и базы.
- Параметры/пороги/поведение под конкретную версию СУБД, в которых не уверен, помечай **[проверить]** по
  справке (postgrespro.ru/docs под свою версию, ИТС), не выдавай за факт.
- Пароли/токены/перс-данные — НИКОГДА в чат и репозиторий (см. «Безопасность»).

## Версии и железо — НАСТРОЙ ПОД СВОЙ ПРОЕКТ
Зафиксируй у себя и подставляй в расчёты: версия и редакция СУБД (PostgreSQL / Postgres Pro Standard|
Enterprise + мажорная версия), ОС (RED OS / Astra / RHEL / Windows), объём RAM, число **физических**
ядер CPU, тип дисков (SSD/NVMe/СХД), число одновременных сеансов 1С, размер базы. Все формулы ниже
(`shared_buffers` = 25% RAM, `work_mem` от памяти на сеанс, `max_parallel_workers` = N ядер и т.д.) —
**считаются от этих чисел**, не берутся как константы.

## Тюнинг PostgreSQL под 1С → `references/postgres-tuning.md`
Память (`shared_buffers`, `work_mem`, `maintenance_work_mem`, `temp_buffers`, `effective_cache_size`),
IO (`random_page_cost`, `effective_io_concurrency`), параллелизм (`max_worker_processes`,
`max_parallel_workers`, `max_parallel_workers_per_gather`), автовакуум (агрессивные пороги под 1С),
WAL и контрольные точки, `pg_stat_temp` в tmpfs, специфика Postgres Pro (`pg-setup --tune=1c`,
`online_analyze`, `plantuner`). С формулами расчёта от RAM/ядер и диагностикой каждого параметра.

## Регламентное обслуживание → `references/maintenance.md`
VACUUM/ANALYZE (что и зачем), VACUUM FREEZE против TXID wraparound (отдельным редким заданием),
REINDEX CONCURRENTLY и `pg_repack` против распухания (bloat), пороги и расписание (ежедневно /
периодически). Опирается на готовые скрипты `scripts/pg_1c_daily_maintenance.sh` (параллельный
`vacuumdb` + точечный REINDEX распухших индексов + опц. `pg_repack`) и `scripts/pg_periodic_freeze.sh`
(VACUUM FREEZE раз в месяц/квартал): что делают, как настроить `.conf` и `~/.pgpass` (chmod 0600).
**Скрипт дополняет, а не заменяет правильно настроенный автовакуум.**

## Мониторинг и блокировки → `references/monitoring-and-locks.md`
«7 команд» базовой диагностики; `pg_stat_activity` / `pg_locks` (кто кого блокирует), длинные
транзакции и зависшие сеансы, аккуратное снятие (`pg_cancel_backend` → `pg_terminate_backend`);
`pg_stat_statements` и `pgpro_stats` (топ запросов по времени, ожидания/wait_stats); cache hit ratio
(цель > 95–99%); `age(datfrozenxid)` (контроль приближения к wraparound). Что измеряем, какой запрос,
как интерпретировать.

## Резервное копирование и восстановление → `references/backup-recovery.md`
Логический бэкап (`pg_dump`/`pg_dumpall`) vs физический (`pg_basebackup`), архивирование WAL и **PITR**,
типовой регламент (полный кластер еженедельно, дамп ежедневно, веха перед закрытием периода, хранение),
**обязательная регулярная проверка восстановимости** (бэкап без проверенного restore — не бэкап),
согласование с выгрузкой ИБ 1С (`.dt`). С реальным runbook восстановления Postgres Pro по WAL.

## HA и масштабирование → `references/ha-and-scaling.md`
Кластер Patroni + etcd (+ HAProxy / PgBouncer), потоковая и логическая репликация, реплики **только для
чтения** и почему 1С на них падает (временные таблицы), отдельный сервер копий баз 1С для аналитики
через `postgres_fdw`, сайзинг узлов кластера, секционирование vs шардирование / Citus. С деревом
решений «когда что».

## MS SQL для 1С (кратко) → `references/mssql-for-1c.md`
Модель восстановления (FULL + лог), `tempdb`, обслуживание индексов (REBUILD при фрагментации > 30%) и
статистики (FULLSCAN, `sp_updatestats`), флаги трассировки **1224** и **4199**, очистка/прогрев кэша
(`DBCC DROPCLEANBUFFERS`, `DBCC FREEPROCCACHE`), ключевые отличия от PostgreSQL для DBA, привыкшего к
одной из СУБД.

## Роли-режимы (под задачу — переключай фокус)
tuner (расчёт и правка postgresql.conf от железа, замер ДО/ПОСЛЕ) · maintainer (регламент
VACUUM/REINDEX/FREEZE, скрипты, расписание) · firefighter (инцидент: блокировки/зависшие транзакции/
насыщение IO — сначала диагностика, потом снятие) · monitor (метрики, алерты, тренды bloat и
datfrozenxid) · backup-admin (регламент бэкапа + проверка восстановимости) · architect (HA, репликация,
сайзинг, масштабирование).

## Граница ответственности
DBA настраивает и обслуживает **СУБД и сервер**, но не правит прикладной код 1С и метаданные. Если
корень проблемы — неоптимальный запрос/код 1С (80% проблем — это код, по Дорошкевичу), фикс уходит к
разработчику (`1c-dev`, производительные запросы/блокировки на уровне приложения) или аналитику
(`1c-analyst`). Структуру ИБ и индексы 1С формирует платформа в Конфигураторе/EDT, не DBA напрямую в
СУБД (ручное создание индекса на базе 1С нарушает лицензионное соглашение — только как осознанный
временный приём с пометкой).

## Безопасность
- Пароли БД — **только** в `~/.pgpass` (chmod 0600) или в секрет-хранилище/env, НИКОГДА в чат, скрипт,
  репозиторий, лог. `PGPASSWORD` не использовать. Шаблон — `scripts/pgpass-example.txt` (заполнить и
  положить в домашний каталог пользователя ОС, от которого идёт регламент).
- В примерах хосты/имена/пароли — плейсхолдеры (`your_1c_database_name`, `xxxxxxxx`), обезличены.
- Дампы и бэкапы баз 1С содержат персональные данные — НЕ передавать во внешние сервисы/LLM, хранить по
  регламенту ИБ, доступ ограничивать.

## Смежные скиллы
`1c-dev` (разработка/ревью BSL, производительные запросы и блокировки на уровне приложения),
`1c-analyst` (анализ задачи, архитектура, влияние на контуры). DBA отвечает за слой СУБД; код и
метаданные — за разработчиком в IDE.

