Резервное копирование SQL и 1C: что считать рабочей копией
Рабочая резервная копия базы данных создается с учетом состояния транзакций, сохраняет целостность данных, хранится отдельно от production и подтверждена тестовым восстановлением. Файл, который появился в каталоге backup после завершения задания, еще не доказывает пригодность копии для restore.
Для SQL Server, PostgreSQL, MySQL и MariaDB основой служат штатные механизмы конкретной СУБД: полная копия, дифференциальные или инкрементальные данные, журналы транзакций и WAL либо binlog. Для файловой информационной базы 1C нужно согласовать копирование с активностью пользователей. Для серверной 1C резервируют базу средствами SQL-СУБД и отдельно сохраняют настройки кластера, подключения, публикации и внешние компоненты.
Сначала определите RPO и RTO, затем выберите метод backup, место хранения и порядок проверки. Снимок виртуальной машины или копирование изменяемых файлов без координации с приложением может дать лишь crash-consistent состояние. Оно иногда восстанавливается, но не гарантирует логически корректную базу и полную цепочку журналов.
Чем backup отличается от обычной копии файлов
Обычная копия переносит набор байтов. Резервная копия СУБД содержит согласованное состояние базы и сведения, которые нужны механизму восстановления. В зависимости от платформы это страницы данных, служебные метаданные, журналы транзакций, WAL, binlog, информация о контрольной точке и параметры, позволяющие определить порядок применения копий.
| Способ | Что сохраняется | Главное условие | Ограничение |
|---|---|---|---|
| Нативный backup СУБД | Структура базы, данные и необходимые служебные сведения | Корректно настроенное задание и хранение всех компонентов цепочки | Параметры зависят от СУБД и версии |
| Копирование остановленной базы | Файлы базы в согласованном состоянии | Остановлены пользователи, службы и фоновые записи | Нельзя получить частые точки восстановления без дополнительной схемы |
| Snapshot хранилища или виртуальной машины | Состояние дисков на момент снимка | Application-consistent snapshot, freeze или quiesce, если это поддерживают СУБД и платформа | Crash-consistent snapshot может потребовать длительной проверки и журнала восстановления |
| Копирование файловой базы 1C | Файл информационной базы | Эксклюзивный доступ и отсутствие активной записи | Копия активного файла может оказаться поврежденной или неполной |
| Логический экспорт | Таблицы, записи и часть объектов схемы | Корректный экспорт и совместимая среда импорта | Может не содержать роли, настройки, журналы и другие компоненты сервиса |
Файлы MDF и LDF SQL Server, каталог данных PostgreSQL или datadir MySQL нельзя копировать во время произвольной записи и считать результат штатным backup. Для файлового копирования нужно остановить СУБД либо использовать механизм, который координирует snapshot с базой и журналом.
Минимальные признаки пригодной резервной копии
- Консистентность: копия отражает согласованное состояние транзакций, а база понимает, какие операции завершены.
- Целостность: встроенная проверка СУБД, контрольная сумма или другая проверка не выявляет повреждений.
- Читаемость: backup открывается средствами совместимой версии и содержит ожидаемый объем данных.
- Метаданные: записаны время создания, тип копии, база, сервер, версия инструмента и зависимые журналы.
- Независимое хранение: копия доступна после отказа основного сервера, массива, учетной записи или площадки.
- Retention: срок хранения соответствует требованиям к точке восстановления и расследованию инцидентов.
- Проверенный restore: копию восстанавливали на отдельный стенд, запускали базу и проверяли прикладные операции.
- Защита доступа: учетная запись backup не может без ограничений удалить все копии, а ключи шифрования хранятся отдельно.
Практическая проверка начинается с вопроса: какую конкретно точку можно вернуть и сколько времени займет запуск сервиса. Если на него нет ответа в минутах и шагах runbook, схема резервирования еще не готова.
RPO и RTO: как определить требования к резервному копированию
RPO, Recovery Point Objective, показывает допустимую потерю данных по времени. При RPO 15 минут после аварии допустимо потерять операции, выполненные в последнем интервале до 15 минут, если журналы и копии работали штатно.
RTO, Recovery Time Objective, показывает допустимое время простоя. В него входят обнаружение инцидента, подготовка сервера, скачивание копий, восстановление базы, применение журналов, запуск 1C и приемочная проверка.
Эти показатели задают расписание и архитектуру. Ежедневная полная копия дает потенциальную потерю почти суток. Для базы 1C с интенсивными операциями такой режим может не соответствовать требованиям, даже если backup каждую ночь завершается без ошибок.
Как перевести требования бизнеса в расписание backup
Начните с допустимой точки потери. Если RPO составляет 4 часа, копию или журнал нужно получать чаще этого интервала с запасом на задержки и ошибки. При RPO 15 минут одного ночного дампа недостаточно, потребуется непрерывная архивация журнала или частые согласованные копии.
Проверьте длительность операции. Полная копия базы объемом 500 ГБ может идти дольше расчетного окна при медленном диске или канале. Если backup длится 3 часа, запускать следующий тяжелый процесс через 2 часа нельзя без контроля параллельных заданий.
Для 1C включите в расписание ночные регламентные задания, обмены и закрытие периода. Копирование во время массового проведения документов может создавать дополнительную нагрузку и затруднять выбор бизнес-точки восстановления. Технически консистентный backup не всегда соответствует удобной для учета точке.
| Требование | Пример схемы | Что контролировать |
|---|---|---|
| RPO до 24 часов | Полная копия раз в сутки, несколько недель хранения | Успешность ночного задания и наличие независимой копии |
| RPO до 4 часов | Полная копия плюс дифференциальные или инкрементальные копии каждые 1-4 часа | Разрыв между копиями и нагрузку на хранилище |
| RPO до 15 минут | Полная копия, дифференциальные копии и непрерывная архивация журнала | Свежесть transaction log, WAL или binlog и полноту цепочки |
| RTO до 1 часа | Локальная быстрая копия, готовый сервер и заранее проверенный runbook | Фактическое время restore, настройки доступа и запуск зависимостей |
Схему 3-2-1 и расчет частоты копий удобно сопоставить с примерами из руководства по резервному копированию в отказоустойчивой инфраструктуре. Для каждой базы зафиксируйте владельца, RPO, RTO, расписание, срок хранения и ответственного за тестовое восстановление.
Какие копии нужны для разных сценариев сбоя
- Полный отказ сервера: нужна полная копия, удаленная копия конфигурации и совместимый запасной сервер либо понятная процедура его подготовки.
- Повреждение базы: нужен backup, созданный до повреждения, и журналы для выбора более точного времени.
- Ошибочное удаление записей: восстанавливайте копию в отдельный экземпляр, находите момент перед ошибкой и переносите проверенные данные после согласования.
- Возврат на конкретный момент: требуются полная база и непрерывная последовательность журналов до выбранного времени.
- Шифровальщик или компрометация: нужна изолированная, офлайн или неизменяемая копия, к которой атакованный сервер не имеет прав удаления.
Полная копия упрощает восстановление, но занимает больше места и времени. Дифференциальная копия содержит изменения после последнего полного backup. Инкрементальная копия содержит изменения после предыдущей копии в цепочке, поэтому restore может потребовать несколько файлов. Архивация журналов дает более точную точку восстановления, однако любой пропуск в цепочке снижает ее пригодность.
Консистентность базы: почему момент копирования имеет значение
База данных меняет страницы, буферы и журналы не в одной операции. Транзакция может записать часть данных в память, часть на диск и журнал с информацией о порядке изменений. Если в этот момент без координации скопировать каталог, отдельные файлы могут отражать разные моменты времени.
Физическая консистентность означает, что СУБД способна прочитать страницы, служебные структуры и журнал. Логическая консистентность означает, что связи, ограничения и завершенные транзакции соответствуют одному согласованному состоянию. Для восстановления нужны оба уровня.
Транзакции, журналы и согласованное состояние
СУБД записывает изменения в журнал до фиксации страниц данных, если включен штатный механизм журналирования. При сбое движок читает журнал, повторяет подтвержденные операции и откатывает незавершенные. Такой процесс опирается на корректную последовательность журналов и согласованную базовую копию.
В SQL Server это transaction log, в PostgreSQL, WAL, Write-Ahead Log, в MySQL и MariaDB для точного восстановления часто используют binlog. Названия и параметры отличаются, но принцип один: базовый backup и журналы нужно хранить как связанную систему.
Параметры fsync, synchronous commit, режим восстановления и политики архивации влияют на допустимую потерю данных. Изменять их без оценки риска нельзя. Отключенная синхронизация записи может ускорить операции, но при аварии увеличивает вероятность потери подтвержденных изменений.
Нативный backup обычно фиксирует согласованную точку самостоятельно. При snapshot нужно знать, что именно поддерживает хранилище и интеграция с СУБД. Простая команда freeze файловой системы не заменяет проверку, что база завершила нужные операции и журнал попал в снимок.
Когда snapshot допустим, а когда нужен backup СУБД
Snapshot допустим как часть схемы, если платформа умеет создать application-consistent состояние, СУБД корректно обрабатывает паузу записи, а журнал и настройки восстановления сохраняются вместе с данными. После настройки выполните restore на отдельном стенде и проверьте базу средствами самой СУБД.
Crash-consistent snapshot фиксирует диски так, как их увидел сбой питания. СУБД может выполнить recovery после запуска, но результат зависит от того, попали ли нужные страницы и журнал в один снимок. Такой снимок не стоит использовать как единственную копию критичной базы.
- Для небольших баз с допустимым простоем подойдет остановка приложения, штатная копия и контрольное открытие результата.
- Для активно работающей SQL-базы используйте штатный backup и журналирование, а snapshot оставьте для ускорения подготовки среды или дополнительной защиты.
- Для серверной 1C согласуйте период backup с регламентными заданиями, обменами и операциями, которые создают большой объем записей.
- Для файловой 1C не копируйте файл при подключенных пользователях и активных процессах записи.
Резервное копирование SQL баз данных: выбор метода по СУБД
У SQL-платформ разные форматы копий, журналы и процедуры restore. Общая политика может задавать RPO, RTO и срок хранения, но команды, порядок применения файлов и проверки нужно сверять с версией конкретной СУБД.
SQL Server: full, differential и transaction log backup
Full backup содержит базовое состояние базы. Differential backup хранит изменения после последнего полного backup, поэтому при восстановлении нужен последний full и последний подходящий differential. Transaction log backup позволяет применять операции последовательно и выбрать точку во времени.
Цепочка для модели восстановления Full обычно выглядит так: полный backup, дифференциальная копия, затем все необходимые копии журнала до выбранного момента. Пропуск log backup или перезапуск цепочки без учета предыдущей базы может сделать точное восстановление невозможным.
В модели Simple копии transaction log не создаются в том же сценарии, поэтому RPO ограничивается расписанием full и differential backup. При выборе модели оцените требования к точке восстановления, объем журнала и доступное место на диске.
BACKUP DATABASE [AppDb]
TO DISK = 'D:\Backup\AppDb_full.bak'
WITH CHECKSUM, COMPRESSION;
BACKUP LOG [AppDb]
TO DISK = 'D:\Backup\AppDb_log.trn'
WITH CHECKSUM;
Пример показывает направление настройки, а не готовый production-скрипт. Имена путей, права службы SQL Server, свободное место и параметры компрессии проверьте в своей версии. После задания анализируйте код завершения и журнал SQL Server Agent.
Для первичной проверки можно применить встроенную проверку backup и восстановить базу на отдельный экземпляр. После restore запустите DBCC CHECKDB на тестовой базе, проверьте пользователей, роли, задания, сертификаты и приложение. Проверка файла без запуска базы дает слабое подтверждение.
PostgreSQL: base backup и WAL-архивирование
Логический dump подходит для переноса отдельных баз, таблиц или схем. Физическая базовая копия сохраняет кластер в формате, пригодном для запуска на совместимой версии. Для Point-in-Time Recovery физический backup связывают с непрерывной архивацией WAL.
Пример создания физической копии средствами PostgreSQL:
pg_basebackup -D /backup/base -Fp -Xs -P
Параметры зависят от версии PostgreSQL и способа подключения. Важна проверка, что все WAL-сегменты, созданные после базового backup, ушли в архив и доступны на стенде восстановления. Один каталог с base backup без WAL не дает произвольного возврата на момент после его создания.
Для базы, которую нужно переносить между средами, применяйте логический dump в формате, удобном для проверки и выборочного restore:
pg_dump -Fc -d appdb -f /backup/appdb.dump
pg_restore --list /backup/appdb.dump
Для физической копии полезно использовать проверку манифеста средствами совместимой версии, если этот механизм поддерживает установленная сборка. В любом случае контрольный restore должен запускать PostgreSQL, читать WAL и принимать тестовое подключение.
Восстановление одной базы из логического dump отличается от восстановления всего кластера. Для кластера нужны роли, tablespace, параметры сервера, сертификаты и конфигурация архивации. Сохраните их отдельно и проверьте права на каталог данных.
MySQL и MariaDB: логический и физический backup
Логический экспорт удобен для небольших баз, миграций и выборочного восстановления. Для InnoDB параметр --single-transaction помогает получить согласованный снимок без длительной блокировки записи, если схема и операции совместимы с этим режимом. Таблицы MyISAM и некоторые специальные операции требуют отдельной оценки блокировок.
mysqldump --single-transaction --routines --events --triggers appdb > /backup/appdb.sql
Сохраните процедуры, события и триггеры явно, чтобы состав экспорта не зависел от привычек оператора. Учитывайте пользователей, grants, системные настройки, плагины и конфигурационные файлы отдельно от дампа базы.
Физический backup подходит для больших баз и короткого окна восстановления. Используйте совместимый инструмент, который понимает внутренний формат InnoDB, блокировки и контрольную точку. Для MariaDB и MySQL инструменты физического резервирования могут отличаться, поэтому сверяйте команду с редакцией и версией сервера.
Для восстановления на конкретный момент сохраняйте binlog и контролируйте непрерывность его выгрузки. После полного backup проверьте первый и последний доступный файл журнала, размер сегментов, права чтения и фактическое применение на тестовом экземпляре.
Восстановление начинайте на отдельном MySQL или MariaDB-сервере. Выполните импорт, примените журналы, проверьте таблицы, индексы, процедуры и прикладные запросы. Ошибка в кодировке, sql_mode или версии сервера может проявиться только после запуска приложения.
Почему экспорт SQL-данных не заменяет полноценный backup
Экспорт таблиц сохраняет часть содержимого, но рабочий сервис зависит от большего набора объектов. При восстановлении могут понадобиться роли, права, последовательности, процедуры, функции, триггеры, события, расширения, tablespace, настройки подключения и журналы.
- Сохраните учетные записи и права отдельно, соблюдая требования к секретам.
- Зафиксируйте версию СУБД, расширения, кодировку, часовой пояс и параметры соединения.
- Проверьте, что в backup попали процедуры, функции, триггеры, события и sequence либо автоинкрементные значения.
- Для точного восстановления храните журналы транзакций, WAL или binlog с понятным сроком retention.
- Для 1C добавьте настройки кластера, внешние обработки, публикации, сертификаты и файлы обмена.
Логический экспорт ценен как дополнительный формат и способ выборочного восстановления. Для аварии всего сервиса заранее проверяйте полноценный сценарий, в котором возвращаются база, настройки и зависимые службы.
Как сделать резервную копию 1C базы данных
Сначала определите архитектуру информационной базы 1C: файловый вариант или серверный вариант с SQL Server, PostgreSQL либо другой поддерживаемой СУБД. Метод копирования, требования к остановке пользователей и состав восстанавливаемой среды в этих случаях отличаются.
Файловая информационная база 1C
Файловая база хранится в каталоге, доступ к которому получают клиентские приложения. Копирование выполняйте после завершения всех сеансов, регламентных заданий и фоновых процессов, которые могут менять данные. На время операции исключите повторное подключение пользователей и проверьте, что файл не занят службой.
Для небольших баз можно использовать штатную выгрузку информационной базы в файл формата .dt, если выбранная версия 1C поддерживает этот способ для конкретного сценария. Такой файл проверяйте загрузкой на тестовый экземпляр. Он не отменяет необходимость сохранить настройки доступа и внешние компоненты.
Файловую копию каталога создавайте после блокировки записи и завершения работы 1C. Сохраняйте дату, версию платформы, конфигурацию и размер базы. После создания откройте копию в изолированной среде, выполните проверку целостности штатными средствами и проведите тестовую операцию без подключения к production.
Распространенная ошибка, копировать каталог во время работы пользователей. В результате можно получить набор файлов с разными точками изменения. Признак завершения копирования не заменяет проверку открытия базы и чтения ключевых разделов.
1C с SQL Server или PostgreSQL
В серверном варианте данные информационной базы хранятся в SQL-СУБД. Резервируйте эту базу средствами SQL Server или PostgreSQL, сохраняя нужные журналы для выбранного RPO. Копирование отдельных файлов каталога 1C не возвращает содержимое серверной базы и не восстанавливает ее связи.
Перед backup согласуйте операции 1C, если требуется зафиксировать конкретную прикладную точку. При штатном SQL-backup транзакционная целостность обеспечивается СУБД, но регламентные задания, обмены и длительные операции могут продолжаться. Зафиксируйте правила: что останавливается, кто подтверждает окно и как проверяется состояние после restore.
При восстановлении разверните совместимую версию СУБД, создайте базу из full backup, примените differential и журналы либо WAL по выбранной процедуре. Затем зарегистрируйте информационную базу в кластере 1C, восстановите строки подключения и проверьте права сервиса.
Версия платформы 1C, версия СУБД, режим клиент-серверной работы, размер базы и используемые расширения влияют на порядок действий. Перед обновлением среды повторите тестовый restore, чтобы обнаружить несовместимость до аварии.
Что еще нужно сохранить вокруг базы 1C
- Конфигурационные файлы серверов 1C и параметры запуска служб.
- Список кластеров, рабочих серверов, портов, требований к памяти и назначенных функциональных опций.
- Настройки публикаций для веб-доступа, конфигурацию веб-сервера и сертификаты.
- Параметры подключения к SQL, учетные записи служб и правила сетевого доступа.
- Внешние обработки, печатные формы, расширения конфигурации, шаблоны и файлы обмена.
- Регламентные задания, расписания обменов, очереди интеграций и инструкции по их повторному запуску.
- Лицензионные зависимости и порядок подключения ключей, если они требуются конкретной среде.
- Скрипты запуска, мониторинга и переключения пользователей на восстановленный сервер.
Секреты не складывайте в открытый текст вместе с backup. Сохраните их в защищенном хранилище, отдельно ограничьте права чтения и проверьте, что ответственный за аварийное восстановление может получить доступ к нужным ключам.
Где хранить backup SQL и 1C: защита от отказа самого хранилища
Копия на том же сервере или в том же массиве не спасает при отказе контроллера, шифровальщике, ошибке удаления, повреждении файловой системы или потере площадки. Локальное хранилище нужно для быстрого restore, удаленное хранилище, для аварии площадки, изолированная копия, для защиты от компрометации.
Локальная, удаленная и офлайн-копия
Базовая схема 3-2-1 означает три экземпляра данных, два разных типа носителей или независимых хранилища и одну копию за пределами основной площадки либо в изолированном состоянии. Для критичной 1C можно добавить неизменяемую копию и отдельную резервную площадку, если это соответствует RTO.
| Место | Назначение | Риск | Контроль |
|---|---|---|---|
| Локальный диск или NAS | Быстрый restore при ошибке базы или файла | Общий отказ сервера, массива или учетной записи | Проверка доступности и отдельные права удаления |
| Вторая площадка или облако | Восстановление после потери основного помещения | Разрыв сети и нехватка пропускной способности | Расчет объема, шифрование передачи и контроль свежести |
| Офлайн-носитель или immutable-хранилище | Защита от удаления и шифровальщика | Более медленный доступ и сложное управление ключами | Регулярная проверка чтения и понятная процедура извлечения |
Для расчета канала умножьте объем ежедневных изменений на число дней между передачами и добавьте запас. При 200 ГБ изменений в сутки канал, который передает лишь 100 ГБ за сутки, будет постоянно накапливать отставание. Контролируйте возраст последней удаленной копии, а не только факт запуска выгрузки.
Практическая схема удаленного хранения с расчетом канала, политикой retention и тестовым восстановлением описана в руководстве по удаленному резервному копированию. Облачная инфраструктура с отдельными серверами и хранилищем может подойти для резервного стенда или offsite-копии, если ее сетевые, правовые и финансовые параметры соответствуют требованиям компании; пример такого размещения, Timeweb Cloud.
Шифрование, права и политика хранения
Резервные копии SQL и 1C часто содержат персональные данные, платежную информацию и коммерческие сведения. Шифруйте передачу и хранение, отдельно защищайте ключи, ограничьте доступ по ролям и включите аудит операций чтения, копирования и удаления.
- Учетная запись backup должна создавать и читать копии, но не иметь безусловного права удалить весь архив.
- Удаление старых копий выполняйте отдельной политикой с задержкой и журналированием.
- Храните ключ шифрования отдельно от зашифрованного backup и проверяйте процедуру его получения при аварии.
- Задайте retention по типам копий: например, 14 дневных, 8 недельных и 12 месячных, если такой срок согласован с требованиями.
- Проверяйте восстановление после изменения ключей, учетных записей, сетевых правил или места хранения.
Не выбирайте срок хранения по свободному диску. Учитывайте требования расследования, налоговые и договорные обязательства, стоимость хранения и время, за которое нужно найти нужную точку.
Проверка резервной копии SQL и 1C
Проверка backup должна идти несколькими уровнями: завершилось ли задание, читается ли результат, проходит ли проверку сама СУБД, восстанавливается ли база на отдельном стенде и запускается ли приложение. Каждый уровень закрывает свой класс ошибок.
Автоматическая проверка файла и задания
После каждого запуска проверяйте код завершения процесса и журнал задания. Учитывайте предупреждения, а не только статус success. Контролируйте размер результата, дату изменения, контрольную сумму, свободное место, количество частей и наличие всех файлов цепочки.
- Сверяйте размер копии с историческим диапазоном. Резкое падение размера требует расследования.
- Проверяйте, что файл полностью передан в удаленное хранилище, а не оставлен как временный объект.
- Контролируйте, что differential относится к доступному full backup, а журнал продолжает нужную цепочку.
- Проверяйте состояние WAL, transaction log или binlog и возраст последнего успешно переданного сегмента.
- Отправляйте уведомление при ошибке, пропущенном запуске, превышении длительности и нехватке места.
- Не разрешайте планировщику запускать вторую копию поверх незавершенной первой без явного контроля.
Контрольная сумма подтверждает, что файл не изменился при передаче. Она не подтверждает, что СУБД сможет собрать из него рабочую базу. Для этого нужна встроенная проверка формата и restore.
Тестовое восстановление из backup
Восстанавливайте копию на отдельный сервер или временный стенд, который не подключен к production. Используйте совместимую версию СУБД, 1C и системных библиотек. Запишите время начала и окончания каждого шага, объем скачанных данных, ошибки и ручные действия.
- Выберите backup и точку восстановления, не меняя исходные файлы.
- Проверьте полноту набора: full, differential, incremental, transaction log, WAL или binlog.
- Восстановите базу на чистый экземпляр с достаточным дисковым пространством.
- Примените журналы до выбранного времени и зафиксируйте результат.
- Запустите встроенную проверку целостности СУБД и изучите ее вывод.
- Сравните число таблиц, объем, контрольные записи и несколько прикладных отчетов с ожидаемыми значениями.
- Измерьте фактический RTO и внесите задержки в аварийный runbook.
Регулярную процедуру проверки файлов, восстановления и зависимых сервисов можно сверить с практическим руководством по тестированию backup. Периодичность выбирайте по критичности: для системы с жестким RTO проверяйте restore ежемесячно или после существенного изменения, для менее критичной среды, по утвержденному регламенту.
Проверка приложения после восстановления
SQL-база может успешно запуститься, а 1C или интеграция все равно останется недоступной. После restore проверяйте весь путь пользователя:
- службы 1C и рабочие процессы кластера запускаются без ошибок;
- информационная база отображается в списке и открывается тестовой учетной записью;
- пользователь читает справочник и документ, а тестовая запись проходит в отдельной среде;
- права, роли и учетные записи соответствуют ожидаемой конфигурации;
- регламентные задания, фоновые задания и обмены находятся в предсказуемом состоянии;
- веб-публикация, сертификаты, внешние обработки и подключенные файлы доступны;
- интеграции не отправляют тестовые события в production и не дублируют реальные документы;
- мониторинг видит восстановленный сервис и не создает ложные тревоги.
Тестовую запись выполняйте только на изолированном стенде. Перед каждым restore отключайте внешние интеграции или направляйте их на заглушки. Факт запуска базы без прикладной приемки не равен восстановлению сервиса.
Автоматизация резервного копирования баз данных
Автоматизированный backup состоит из планировщика, штатного задания СУБД или скрипта, отдельного хранилища, ротации, мониторинга и уведомлений. Скрипт должен возвращать понятный код завершения, писать структурированный журнал и оставлять систему в предсказуемом состоянии после повторного запуска.
Расписание и порядок выполнения заданий
Разделите операции по весу и зависимости. Полный backup выполняйте в согласованное окно, differential или incremental запускайте по RPO, журналы передавайте чаще, а offsite-копию отправляйте после проверки локального результата.
| Шаг | Пример периодичности | Зависимость |
|---|---|---|
| Полный backup | Раз в сутки или раз в неделю, по объему и RTO | Нужен для базовой точки восстановления |
| Differential или incremental | Каждые 1-4 часа при соответствующем RPO | Привязан к последнему full или предыдущей копии |
| Transaction log, WAL или binlog | Каждые 5-15 минут либо непрерывно | Требует непрерывной цепочки и контроля архива |
| Передача offsite | После каждого успешного backup или пакетно по каналу | Нужен контроль полной передачи |
| Тестовый restore | По критичности, минимум после существенных изменений | Нужны отдельный стенд и фиксация результата |
Запретите параллельный запуск заданий, если они конкурируют за диск, журнал или один временный каталог. При сбое удаляйте только временные файлы, сохраняя исходные копии и журналы для анализа. Повторный запуск должен понимать, какой этап завершился, и не создавать ложную запись об успешном backup.
Для небольшой и средней инфраструктуры выбор между штатными средствами, скриптами и специализированной системой удобно проверить по чек-листу выбора системы резервного копирования. Сравнивайте не число функций, а покрытие RPO, RTO, шифрования, offsite-копии, уведомлений и тестового restore.
Мониторинг, уведомления и контроль SLA
Мониторинг должен показывать состояние процесса без входа на сервер. Минимальный набор метрик:
- возраст последней успешной локальной и удаленной копии;
- длительность задания и отклонение от обычного времени;
- размер backup и скорость передачи;
- свободное место в источнике, временном каталоге и хранилище;
- непрерывность transaction log, WAL или binlog;
- число ошибок за период и дата последнего успешного restore;
- результат проверки целостности и прикладной приемки;
- срок ближайшего удаления по retention.
Задайте порог по возрасту копии, равный RPO с запасом. Если последняя успешная копия старше допустимого интервала, создавайте инцидент, даже когда планировщик продолжает запускаться. Оповещение должно содержать имя базы, сервер, время последнего успеха, текст ошибки и ссылку на журнал внутри вашей системы мониторинга, если такая ссылка уже существует.
Восстановление базы данных после сбоя: пошаговый сценарий
Цель аварийного восстановления, вернуть согласованную базу и работоспособное приложение в пределах RTO. До выбора backup зафиксируйте время сбоя, последнюю корректную точку, доступность журналов и состояние исходного сервера.
- Объявите инцидент и назначьте ответственного за технические действия.
- Остановите автоматические задания, которые могут перезаписать данные или усложнить диагностику.
- Сохраните поврежденный сервер, журналы и текущие файлы для анализа.
- Определите тип сбоя: потеря сервера, повреждение базы, ошибочное удаление или отказ зависимого сервиса.
- Выберите набор backup и точку восстановления по RPO и времени инцидента.
- Восстановите базу на целевом или резервном сервере, примените журналы.
- Проверьте целостность СУБД, подключение 1C и прикладные операции.
- Переключите пользователей после приемки, зафиксируйте фактический RTO и все отклонения от runbook.
Отказ сервера или потеря основного хранилища
Проверьте доступ к удаленной или изолированной копии. Подготовьте совместимые версии ОС, SQL-СУБД, платформы 1C, драйверов и системных библиотек. Не начинайте с восстановления на случайно выбранный сервер без оценки диска, памяти, сетевых портов и прав служб.
- Разверните целевой сервер и обновите его до поддерживаемой версии.
- Восстановите full backup, затем differential или incremental и журналы в нужном порядке.
- Восстановите роли, права, параметры подключения, сертификаты и внешние компоненты.
- Зарегистрируйте базу в кластере 1C или настройте клиентское подключение.
- Проверьте публикации, фоновые задания, обмены и лицензирование.
- Выполните приемочную проверку и только после нее откройте доступ пользователям.
Если удаленная копия передается по медленному каналу, RTO будет определяться скачиванием. Для критичного сервиса держите локальный backup и заранее подготовленный запасной сервер либо уменьшайте объем восстанавливаемых данных проверенной схемой.
Повреждение базы или ошибочное удаление данных
Не перезаписывайте единственную рабочую копию сразу после обнаружения проблемы. Сначала сохраните текущую среду и восстановите backup в отдельную базу с другим именем или на другом экземпляре.
- Зафиксируйте время обнаружения и предполагаемый момент ошибки.
- Остановите операции, которые могут изменить поврежденные данные.
- Восстановите full backup на отдельный сервер.
- Примените differential и журналы до момента перед удалением или повреждением.
- Сравните документы, справочники, контрольные суммы и прикладные отчеты.
- Согласуйте перенос исправленных данных или переключение на восстановленную базу.
Для ошибочного удаления часто удобнее вернуть копию на секунду до инцидента, проверить ее и извлечь нужные записи. Полная замена production может удалить корректные операции, которые пользователи успели выполнить после ошибки.
Возврат 1C и зависимых сервисов в работу
После восстановления SQL проверьте слои вокруг базы. Нужны службы агента и кластера 1C, рабочие процессы, сетевые порты, публикации, строки подключения, учетные записи, лицензии, сертификаты и внешние обработки.
- Проверьте запуск служб под правильными учетными записями.
- Убедитесь, что клиенты видят восстановленную информационную базу.
- Проверьте права обычного пользователя и администратора отдельно.
- Отключите или перенаправьте обмены, пока не подтверждено состояние очередей.
- Проверьте регламентные задания и время их последнего выполнения.
- Выполните чтение и тестовую запись на стенде либо приемочную операцию по утвержденному сценарию.
- После переключения проконтролируйте ошибки пользователей, нагрузку и очереди интеграций.
Запишите фактические значения RPO и RTO. Если восстановление заняло 3 часа при целевом RTO 1 час, измените процедуру, подготовьте ресурсы или пересмотрите требование.
Типовые ошибки при резервном копировании SQL и 1C
Ошибки backup часто обнаруживаются при первой аварии, когда исправить расписание уже поздно. Для каждой проблемы фиксируйте последствие и профилактическое действие.
Копия создается, но восстановить ее нельзя
Причины: поврежденный файл, незавершенная передача, отсутствующий журнал, разрыв цепочки, потерянный ключ шифрования, неверные права, неправильный путь или несовместимая версия СУБД.
Последствие: задание имеет статус success, но restore останавливается на чтении, применении журнала или запуске приложения.
Исправление: добавьте контроль кода завершения, контрольную сумму, проверку цепочки, тестовый restore и отдельное хранение ключей. После обновления SQL или 1C повторяйте восстановление на стенде.
Backup влияет на production сильнее, чем ожидалось
Причины: полная копия запускается в часы пик, несколько заданий конкурируют за диск, компрессия перегружает CPU, передача занимает канал, а snapshot удерживает долгую блокировку.
Последствие: растет время ответа 1C, увеличивается transaction log, задерживаются обмены и возникает незапланированный простой.
Исправление: измерьте нагрузку по CPU, диску, сети и длительности блокировок. Перенесите тяжелые операции в окно с низкой активностью, используйте подходящий тип копии, ограничьте параллельность и проверьте резервный узел или application-consistent snapshot.
Восстановлена база, но сервис не работает
Причины: не восстановлены роли, службы 1C, публикации, сертификаты, внешние обработки, параметры подключения, лицензии или настройки интеграций.
Последствие: SQL принимает соединение, но пользователи не входят в 1C, отчеты не формируются, обмены не запускаются или документы не проходят.
Исправление: храните конфигурацию приложения рядом с runbook, тестируйте запуск обычным пользователем и проверяйте прикладные операции на отдельном стенде.
Все копии хранятся на одном сервере
Причина: локальный диск воспринимается как полноценная резервная площадка.
Последствие: отказ сервера, шифровальщик или ошибка администратора уничтожает production и backup одновременно.
Исправление: добавьте удаленную копию и изолированный или неизменяемый уровень хранения, проверьте возможность чтения после потери основной площадки.
Копируется активная база без согласования
Причина: каталог SQL или файл 1C копируется обычной утилитой во время записи.
Последствие: файлы отражают разные моменты, база требует recovery или не открывается.
Исправление: применяйте нативный backup, останавливайте файловую 1C перед копированием или настройте подтвержденный application-consistent snapshot.
Хранилище переполняется, а задания продолжают запускаться
Причина: нет контроля свободного места, временных файлов и retention.
Последствие: новые копии обрываются, журналы перестают архивироваться, а старые рабочие точки уже удалены.
Исправление: задайте порог свободного места, проверяйте его до запуска, удаляйте копии по политике и оставляйте запас для полного backup и журналов.
Версии окружения не совпадают
Причина: backup восстанавливают на другую версию SQL, PostgreSQL, MySQL, MariaDB или платформы 1C без предварительной проверки.
Последствие: не применяются журналы, меняется формат объектов, не запускается кластер или появляются ошибки подключения.
Исправление: записывайте версии и расширения в метаданных backup, храните установочные пакеты и проверяйте restore после каждого существенного обновления.
Итоговый чек-лист готовности к аварии
Используйте список при приемке схемы резервирования и после изменений в инфраструктуре.
Что проверить перед вводом схемы в эксплуатацию
- Определены RPO и RTO отдельно для SQL-баз, файловых баз 1C и серверных информационных баз.
- Выбран метод backup для конкретной СУБД и версии: full, differential, incremental, dump, WAL, transaction log или binlog.
- Для файловой 1C описано, как блокируются пользователи и регламентные задания перед копированием.
- Консистентность подтверждена штатным механизмом или тестом application-consistent snapshot.
- Полная копия и все нужные журналы доступны, читаются и имеют понятные метаданные.
- Есть локальная, удаленная и изолированная либо неизменяемая копия.
- Шифрование включено, ключи доступны ответственному при аварии и хранятся отдельно.
- Права создания, чтения и удаления backup разделены.
- Расписание учитывает нагрузку, ночные операции 1C, размер базы и пропускную способность канала.
- Автоматизация контролирует код завершения, журналы, размер файлов, свободное место и полноту цепочки.
- Настроены уведомления о пропущенном задании, старой копии, ошибке передачи и превышении длительности.
- Выполнен тестовый restore на отдельный стенд с измерением фактического времени.
- После restore проверены целостность СУБД, вход в 1C, права, тестовая операция, обмены и фоновые задания.
- Документирован runbook с ответственными, версиями, доступами, командами и порядком переключения.
Как поддерживать процедуру актуальной
Повторяйте тестовый restore после обновления СУБД, платформы 1C, конфигурации, кластера, хранилища, учетных записей или сетевой схемы. Изменение одного компонента может нарушить цепочку backup или сделать старый runbook неприменимым.
Проверяйте RPO и RTO при изменении числа пользователей, объема базы и критичности операций. Обновляйте список ответственных, контакты, версии, пути хранения и порядок получения ключей.
Храните инструкцию рядом с технической документацией сервиса, но не помещайте секреты в открытый текст. После каждой проверки записывайте дату, использованную копию, результат проверки целостности, фактический RTO и найденные ручные шаги.
Схема резервирования готова к аварии, когда команда может без догадок выбрать точку восстановления, получить копию, поднять совместимую среду, запустить SQL и 1C, проверить прикладные операции и вернуть пользователей в пределах согласованного RTO.