Mazmunga o'tish
Tez Base

Бэкап 1С идёт всю ночь: почему и как ускорить резервное копирование

· Chop etilgan: · Yangilangan:

Бэкап и восстановление

Полный бэкап базы 1С, который год назад укладывался в час, начинает не влезать в ночное окно. К утру он ещё идёт, упирается в начало рабочего дня, конкурирует за диск с регламентными заданиями - и в какой-то момент падает по таймауту или по нехватке места. Первая реакция обычно неправильная: “купим диски побыстрее” или “будем делать бэкап реже”. Правильная - понять, из чего складывается это время, и убрать конкретную причину.

Ниже - почему резервное копирование 1С делается долго, какие рычаги реально его ускоряют, и почему бэкап, восстановление из которого ни разу не проверяли, не считается бэкапом вообще. Цифры - из наших проектов 2026 года на терабайтных базах.

Из чего складывается время бэкапа

Длительность полного резервного копирования определяется четырьмя множителями, и “медленный диск” - только один из них.

Размер базы. Самый прямой фактор: бэкап читает весь занятый объём файла данных. База на 4 ТБ физически не скопируется за то же время, что база на 400 ГБ, - при прочих равных разница десятикратная. И здесь кроется первая ловушка: часто “весит” база не тем, что вы думаете. В нашем проекте розничной сети из 4,2 ТБ файла больше 90 % занимал мёртвый служебный кэш механизма разграничения доступа - данные, которые бэкап честно копировал каждую ночь, хотя бизнесу они были не нужны.

Сжатие. Резервная копия почти всегда пишется со сжатием (WITH COMPRESSION в MS SQL, штатное сжатие в pg_dump/pg_basebackup зависит от инструмента). Сжатие экономит место и время записи на диск, но нагружает процессор. На сильно загруженном сервере, где CPU уже занят рабочими сессиями, компрессия бэкапа конкурирует за те же ядра.

Скорость дисковой подсистемы - на чтении и на записи одновременно. Бэкап читает файл данных с одного тома и пишет копию на другой. Если оба тома - на одном физическом массиве, они соревнуются друг с другом. Классическая ошибка - писать бэкап на тот же диск, где лежит база: скорость падает вдвое, а при аварии диска вы теряете и базу, и её копию.

Тип копии: полная против разностной и журнальной. Полный бэкап (FULL) копирует весь занятый объём каждый раз. Разностный (DIFFERENTIAL) - только страницы, изменившиеся с последней полной копии. Журнальный (LOG, для модели восстановления FULL) - только записи журнала транзакций с прошлого раза. Гонять полную копию каждую ночь на терабайтной базе, где за сутки меняется несколько процентов данных, - самый частый источник “бэкапа на всю ночь”.

Как ускорить: пять рычагов

Разберём по возрастанию эффекта - от быстрой настройки до пересмотра самой базы.

РычагЧто даётКогда применять
Схема FULL + разностные + журнальныеУбирает ежедневный полный проходПочти всегда на базах от сотен ГБ
Отдельное хранилище под копииСнимает конкуренцию за диск, повышает надёжностьВсегда
Настройка сжатия и параллелизмаБалансирует CPU против времени и объёмаНа загруженных серверах
Разнос по времени с регламентамиУбирает конфликт бэкапа с обслуживаниемВсегда
Уменьшение самой базыСокращает объём, который вообще нужно копироватьКогда база раздута служебными данными

1. Правильная схема копий вместо ежедневного FULL

Базовая рабочая схема для боевой базы 1С: полный бэкап раз в неделю (в самое свободное окно, например в ночь на воскресенье), разностный - каждую ночь, журнальный - каждые 15-60 минут в течение рабочего дня. Такая связка даёт две вещи сразу: ночное окно разгружается (разностная копия в разы меньше полной), а точка восстановления становится минутной, а не суточной - при аварии в 16:00 вы теряете не весь день, а последние минуты.

Оговорка: журнальные копии имеют смысл только в модели восстановления FULL и требуют дисциплины - если журнал транзакций не бэкапится, он растёт бесконечно и съедает диск (частая причина, по которой к нам приходят с “журнал транзакций забил всё место”). Модель SIMPLE проще, но журнальных копий в ней нет и точка восстановления - только последний полный/разностный бэкап.

2. Отдельное хранилище - не роскошь, а условие

Бэкап должен физически лежать не на том диске и в идеале не на том сервере, где работает база. Это ускоряет копирование (чтение и запись не конкурируют за один массив) и, главное, спасает при аварии носителя: диск с базой умер - копия на другом устройстве цела. Оптимальная практика - правило “3-2-1”: три копии, на двух разных носителях, одна - вне площадки. Сетевое хранилище, второй сервер, объектное хранилище - конкретный выбор зависит от инфраструктуры, но принцип “копия отдельно от оригинала” не обсуждается. И проверьте, что в копию попадает всё: если вложения лежат в томах на диске, копия базы без каталога тома восстановится с записями, но без самих файлов. Как это проверить до аварии, разобрано в статье про бэкап томов хранения файлов.

3. Сжатие и параллелизм - по факту нагрузки

Сжатие бэкапа почти всегда выгодно: меньше объём записи, меньше времени на диске, меньше места в хранилище. Но на сервере, где процессор и так под нагрузкой, стоит проверить, не становится ли компрессия узким местом, - иногда выгоднее запустить бэкап чуть раньше, в менее загруженный час, чем душить сжатием и без того занятый CPU. Инструменты вроде многопоточного копирования (несколько файлов копии параллельно) на больших базах дают ощутимый выигрыш за счёт распараллеливания чтения. Как всегда: сначала замер, потом настройка.

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

Частая незамеченная причина “долгого бэкапа” - он идёт одновременно с перестроением индексов, обновлением статистики или проверкой целостности. Все эти операции читают ту же базу и грузят тот же диск. Мы наступали на это в проекте обрезки: параллельный плановый бэкап валил операцию сжатия файла с ошибкой 3140, а после прерванных попыток в базе оставался “залипший” флаг сжатия, который лечился только переводом базы offline/online. Вывод простой: регламент обслуживания и расписание бэкапов нужно строить как единое целое, чтобы тяжёлые операции не наступали друг другу на пятки. Именно так мы и собираем обслуживание баз 1С: одно расписание на бэкапы, индексы, статистику и проверку целостности, а не три независимых плана, которые дерутся за диск.

5. Уменьшить базу - и бэкап ускорится сам

Самый недооценённый рычаг. Бэкап копирует объём; уменьшите объём - сократится и время, и вес копии, без единой настройки самого копирования. И часто уменьшать есть что: базы 1С годами копят служебный “жир” - мёртвые кэши RLS, избыточные таблицы итогов регистров, журналы регистрации, логи обменов, “воздух” внутри файла после удалений.

В нашем проекте розничной сети это сработало напрямую. После того как из базы был убран служебный кэш механизма разграничения доступа (больше 90 % объёма) и сжат файл, полный ночной бэкап сократился с 556 до 18,3 ГБ, а время копирования - с двух часов до считаных минут. Ни один документ бизнеса при этом удалён не был: сокращение объёма шло за счёт служебных данных, которые база копировала вхолостую. Разбор этого проекта целиком - в кейсе “Обрезка базы 4,2 ТБ → 105 ГБ”.

Способов уменьшить базу несколько, и “свертка”, которую советуют первой, нужна далеко не всегда - иногда терабайты занимает вовсе не история документов. Сравнение методов с эффектом и рисками каждого мы собрали в отдельном разборе “Как уменьшить базу 1С: свертка, обрезка или шринк”.

Бэкап без теста восстановления - не бэкап

Это главный тезис статьи, и он важнее любого ускорения. Резервная копия существует не для того, чтобы делаться, а для того, чтобы из неё можно было восстановиться. Между “файл копии создаётся” и “база из копии поднимается и работает” - пропасть, и падают в неё в самый неподходящий день.

Что реально ломается в бэкапах, которые “вроде бы делаются”:

  • Копия битая - сбой носителя, файл недописан из-за нехватки места или повреждён при передаче по сети. RESTORE VERIFYONLY - необходимый минимум, но не достаточный.
  • Копия есть, но восстановить нельзя - не хватает цепочки журнальных копий, потеряна разностная база, несовместимая версия СУБД.
  • Восстановление дольше допустимого - 6 часов там, где бизнес переживёт только 1. Про это узнают только на учениях.

Единственный способ убедиться, что бэкап рабочий, - регулярно восстанавливать его на отдельном сервере и проверять, что база открывается и данные на месте. Не “посмотреть, что файл создался”, а поднять копию и войти в неё. Сами скрипты восстановления - RESTORE с подстановкой имён через FILELISTONLY для MS SQL, pg_restore для PostgreSQL, с предохранителями от затирания боевой базы - лежат в отдельном разборе. Это же восстановление удобно использовать для другой полезной задачи - снятия нагрузки проверок целостности и тяжёлых отчётов с продуктива на актуальную копию.

Слово “регулярно” на практике и убивает эту проверку: руками её делают месяц, потом перестают. Дешевле поставить её на автомат один раз, и заодно получить всегда свежую тестовую базу. Для этого мы написали обработку “Тестовая база из бэкапа рабочей”: она собирает скрипт задания по расписанию, которое берёт из каталога последний бэкап, читает логические имена файлов и поднимает тест поверх старой копии. Проверка восстановления при этом происходит сама, каждую ночь. Если же полное восстановление перестало влезать в ночь или в тесте есть настройки, которые жалко терять каждый раз, работает второй путь - сверить базы и довезти в тест только свежий период: разбор с готовыми скриптами и замерами. Обработка в СУБД не пишет, только печатает скрипт для администратора, а в сам скрипт вшиты предохранители: цель не может совпасть с источником и поверх системных баз восстановление не пойдёт.

Два числа, которые стоит определить до того, как что-то настраивать, - они задают всю схему:

  • RPO (Recovery Point Objective) - сколько данных бизнес готов потерять при аварии. Час? 15 минут? Ноль? Ответ определяет частоту журнальных копий.
  • RTO (Recovery Time Objective) - за сколько база должна снова работать. Ответ определяет, годится ли восстановление из полной копии или нужна горячая реплика.

Пока эти два числа не названы, любая схема бэкапа - это гадание о том, что важно бизнесу.

Сколько будет восстанавливаться: замерьте своё число

RTO не назвать без скорости восстановления на вашем железе, и как сильно она гуляет, видно по двум нашим прогонам. Первый - стенд из трёх баз смежных систем: одна СУБД в контейнере, 4 ядра, 7,8 ГБ памяти. Дамп заливали в отдельную базу при работающем проде, так что остановка сервисов, проверка после заливки и переключение нагрузки в аварии добавятся сверху.

БазаКопияВосстановлениеСкорость
первая, 23 ГБдамп 1,5 ГБ, снимался 7,5 мин19 мин 39 с1,07 ГБ/мин (поднятая база 21 ГБ)
вторая, 3,4 ГБдамп 296 МБоколо 3 мин1,13 ГБ/мин
третья, 597 МБдампа нет--

Скорость у двух баз почти совпала, и на этом стенде её можно умножать на объём: 100 ГБ поедут около полутора часов, 1 ТБ за 15-16 часов, 3 ТБ около двух суток.

Второй прогон из разбора про восстановление базы 1С из бэкапа: база 17,8 ГБ поднялась из .bak на локальном SQL Server 2022 за 140 секунд, около 7,6 ГБ в минуту, раз в семь быстрее стенда. Формат копии и железо другие, поэтому ни одна из двух скоростей вашей базе не норма. Своё число даёт пробное восстановление у себя, с ним и идут к бизнесу обсуждать простой.

Копия есть, но от соседней базы

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

Подмену выдаёт арифметика: размер базы, делённый на размер дампа, должен давать привычное сжатие. На стенде это 15,3 раза у первой базы и 11,8 у второй:

  • дамп, снятый стадией третьей системы, весил 302 МБ;
  • дамп соседней базы на 3,4 ГБ весил 296 МБ, разница 2 %;
  • база 597 МБ при сжатии 11,8 раза дала бы около 50 МБ, в шесть раз меньше.

Проверка занимает минуту. Ловите и обратный сигнал: дамп заметно меньше вчерашнего - повод остановить выкатку, обычно часть данных в копию не попала.

Откат без значений по умолчанию

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

Правила простые: без явно заданной цели восстановление падает с ошибкой, а копирование и откат собирают путь к копии одной строкой кода. Проверку цели внутри скрипта для MS SQL и PostgreSQL мы показывали в скриптах восстановления с предохранителями.

Сколько данных потеряете и что не вернёт ни одна копия

Фактический RPO есть у любой базы: это время с последней копии. На стенде на момент разбора:

БазаКопииПотеря при аварии
перваяежедневнаядо суток работы
втораятолько перед выкаткойвсё с последней выкатки
третьяникакихвся история

Архивирования журнала транзакций и реплик не было, так что на момент времени не восстановить ни одну.

Записанное после последней копии не вернёт ни одна копия, и добрать его из внешних систем в разобранных базах было нельзя: источники отдавали только текущее состояние. Безвозвратно ушли бы журнал решений робота, ежедневные срезы цен конкурентов, история рейтингов и остатков. Только таблицы с посчитанным размером дают 2,6 ГБ, около 11 % первой базы.

Задайте каждой крупной таблице своей базы вопрос: откуда я возьму её данные за прошлый март? Таблицы без ответа существуют в одном экземпляре, под них схему копий и подбирают.

Чек-лист: почему у вас бэкап долгий

  1. Каждую ночь идёт полный бэкап? Перейти на схему “FULL раз в неделю + разностные + журнальные”. Обычно это сразу разгружает ночное окно.
  2. Копия пишется на тот же диск, где база? Вынести на отдельное хранилище - быстрее и безопаснее.
  3. Бэкап идёт одновременно с обслуживанием индексов? Развести по расписанию, строить регламент и бэкап как единую систему.
  4. База раздута? Построить карту объёмов. Если топ занимают служебные данные, а не документы, - уменьшение базы ускорит бэкап сильнее любой настройки копирования.
  5. Восстановление из бэкапа хоть раз проверяли? Если нет - это первое, что нужно сделать, до всякого ускорения. Скорость бесполезна, если из копии нельзя подняться. Раз в полгода открывайте каталог копий (файл, имя базы, размер, дата) и засекайте одно восстановление.

Коротко

Бэкап идёт всю ночь по одной из четырёх причин: раздутая база, ежедневный полный проход вместо разностных копий, конкуренция за диск и конфликт с регламентным обслуживанием. Лечится это схемой “полный раз в неделю + разностные + журнальные”, отдельным хранилищем, разнесением с обслуживанием и - самое эффективное - уменьшением самой базы (в нашем проекте бэкап сжался с 556 до 18,3 ГБ просто потому, что из базы убрали служебный балласт). Но ни одна из этих настроек не имеет смысла, пока восстановление из копии ни разу не проверено: бэкап без теста восстановления - это не страховка, а её имитация.

Если хочется, чтобы резервное копирование стало предсказуемым и проверяемым, - мы настраиваем обслуживание баз 1С под ключ: схема бэкапов с нужной точкой восстановления, отдельное хранилище, регулярные пробные восстановления и контроль под мониторингом. Если бэкап тормозит из-за размера базы - начать стоит со свертки и обрезки, которые уберут балласт. А понять текущее состояние без обязательств можно с бесплатного экспресс-аудита: по его итогам вы получите диагноз, из чего состоит база и что именно замедляет резервное копирование.

Buni siz uchun hal qila olaman

Reglament xizmatni shunday sozlaymizki, baza barqaror ishlaydi, bekaplar kafolatli tiklanadi, disklardagi joy esa kutilmaganda tugab qolmaydi.

Narxi
450 000 ₸ danbir martalik sozlash; kuzatib borish - oyiga 150 000 ₸ dan; soliqlarsiz

Yozishga erta? O'zingiz o'lchang

Тестовая база отстала от рабочей на полгода

Ishlov berishni ochish

INFOSTART TECH EVENT 2026: конференция для 1с-специалистов. если собираетесь, регистрируйтесь по нашей ссылке. Регистрация →

Buni ham o'qing

База 1С не открывается после обновления конфигурации: порядок действий, когда копии нет

Конфигуратор пишет "При обновлении данных, после последней реструктуризации, произошла критическая ошибка", пользователи в базу не попадают, копии до обновления нет. Разбираем по шагам: что сохранить первым, как по журналу регистрации найти этап, на котором упало, какие действия только добавляют ошибок, когда бросать починку старой базы и как через ibcmd выгрузить .dt из базы, которая не открывается, собрать новую и тихо подменить её в кластере. В конце - задания резервного копирования, после которых такая авария превращается в откат на минуту до обновления.

Остатки в 1С не сходятся с движениями: как найти сломанный месяц итогов и не пересчитывать всю историю

Отчёт по движениям даёт одно число, запрос к остаткам другое, перепроведение ничего не меняет. Разбираем, как отличить сломанные итоги от ошибки в движениях, каким запросом найти позицию и месяц расхождения, почему строку итогов на 1 августа чинит пересчёт за август, а не за июль, в каком порядке пересчитывать текущие итоги и как посмотреть саму строку итогов на SQL. Все шаги проверены на тестовой копии УТ 11.5 с испорченной строкой.

CHECKDB нашёл ошибки в базе 1С: порядок действий до REPAIR и после

CHECKDB советует repair_allow_data_loss и на битый индекс, и на потерянные документы. Разбираем по шагам, что делать в первый час: что сохранить до исправления, как по таблице и номеру индекса понять, что задето в 1С, как перестроить битый индекс без потерь и как получить список пропавших документов, пока REPAIR не удалил их молча. Проверено на копии УТ для Казахстана с испорченными страницами.