Краткое описание моделей восстановления MS SQL

В MS SQL существует три вида резервных копий:
  • полная резервная копия (Full backup);
  • разностная (дифференциальная) резервная копия (Differential backup);
  • резервная копия журнала транзакций.
Полная резервная копия выполняется как правило один раз в несколько дней, а разностная резервная копия выполняется один раз в день. Следовательно, при выполнении таких резервных копий период потери данных, в случае сбоя, составляет минимум один день.
Для сокращения периода потери данных существует возможность создавать копию журнала транзакций, как говорят в народе, бэкап лога.

Журнал транзакций  - это файл, который содержит информацию о том, какие изменения были произведены в базе данных, что было и что стало в результате выполнения каждой транзакции.
Из определения следует вывод, что журнал транзакций не хранит данные, а так же не хранит информацию, которая не требуется для восстановления базы данных (например,  информацию о том, какой план выполнения был у запроса). В журнале транзакций содержится только та информация, которая необходима для восстановления.
Копия журнала транзакций будет иметь более меньший размер, чем рассмотренные выше резервные копии. Так как журнал транзакций имеет маленький размер и не требователен к ресурсам, то его копию можно создавать хоть каждую минуту, но как правило создают один раз в 15-30 минут. Создавая копию журнала транзакций, сокращается период потери данных до нескольких минут.
Создание копии журнала транзакций доступно только у базы данных, для которой указана модель восстановления – полная. Данная модель восстановления по умолчанию устанавливается для новой базы данных 1С.

Модели восстановления СУБД MS SQL (см. рисунок 1):
  • Полная;
  • Полная с неполным протоколированием;
  • Простая.
Рисунок 1. Модели восстановления MS SQL

Полная


При использовании данной модели восстановления, журнал транзакций будет хранить максимальное количество информации обо всех транзакциях (предыдущих, текущих). Файл журнала транзакций разрастается по мере активности работы пользователей с базой данных, чем больше транзакций совершается за день, тем быстрее увеличивается файл. Увеличение  файла происходит  до тех пор, пока не будет выполнен бэкап лога. Если не выполнять резервное копирование журнала транзакций, то файл может занять все свободное дисковое пространство и на уровне СУБД произойти ошибка: «Журнал транзакций для базы данных заполнен». После создания резервной копии журнала транзакций, сам журнал усекается и в нем остается информация только о текущих транзакциях.
Важно, усечение журнала не означает, что сам размер файла уменьшится, на самом деле, освобождается место внутри файла. Это как файл подкачки, вы отвели 4GB, ОС отрезала от диска 4GB, и вот внутри этих зарезервированных 4GB ОС крутит и вертит данные. При выполнении полного или разностного резервного копирования усечение журнала не происходит. Чтобы уменьшить размер файла журнала транзакций, необходимо выполнить его сжатие (шринк), описание сжатия находится в этой статье: Сжатие (шринк) журнала транзакций в MS SQL.
Рекомендуется использовать для рабочих баз.

Полная с неполным протоколированием


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

Простая


Данная модель восстановления будет хранить минимальный набор данных в журнале транзакций. При заполнении файла журнала транзакций на 70%, СУБД начнет писать данные о транзакциях в начало файла, затирая данные предыдущих транзакций. При этой модели файл журнала транзакций будет занимать отведенное для него место (см. рисунок 2) и не представляется возможным  хранить историю транзакций.
Рисунок 2. Описание файла журнала регистрации
Так как не хранится история транзакций, то выполнение бэкапов транзакций становится недоступным (не имеет смысла).
Рекомендуется использовать для тестовых баз, баз разработчиков и т.п.

Комментарии

  1. https://docs.microsoft.com/ru-ru/previous-versions/sql/sql-server-2008-r2/ms175987(v=sql.105)?redirectedfrom=MSDN
    Тут без заблуждений описано.

    ОтветитьУдалить

Отправить комментарий