По крайней мере с тех пор, как я начал работать в команде SQL Server (сразу после выхода версии 7.0) и до недавнего времени, существовало всего два кода статуса VLF (виртуального файла журнала):
- 0 = VLF не активен (т.е. его можно (повторно) активировать и перезаписать)
- 1 = не используется, и, кажется, никто не помнит, что это раньше означало
- 2 = VLF активен, потому что хотя бы одна запись журнала в нём «требуется» SQL Server по какой-либо причине (например, ещё не была включена в резервную копию журнала или не просканирована репликацией)
Несколько недель назад я узнал о новом коде статуса VLF, который был добавлен ещё в SQL Server 2012, но не был широко известен до недавнего времени (по крайней мере, я никогда с ним не сталкивался в реальных условиях). Я провёл несколько обсуждений с другом из Microsoft (Шоном Галларди, PFE и MCM из Тампа), которому удалось покопаться в коде, чтобы выяснить, когда он используется.
Он может появляться только на вторичной реплике группы доступности (и никогда на первичной реплике, а также не используется в зеркальном отображении баз данных):
- 4 = VLF существует на первичной реплике, но ещё не существует в реальности на этой вторичной реплике
Основной случай, когда может возникнуть этот статус, — когда на первичной реплике произошёл рост файла журнала (или создание дополнительного файла журнала), но это изменение ещё не было воспроизведено (replayed) на вторичной реплике. На первичной реплике генерируются новые записи журнала, записываются во вновь созданный VLF и отправляются на вторичную реплику для фиксации (записи в файл журнала реплики). Если на вторичной реплике рост журнала ещё не воспроизведён, VLF, которые должны содержать только что полученные записи журнала, ещё не существуют, поэтому они как бы временно создаются со статусом 4, чтобы записи журнала с первичной реплики могли быть успешно зафиксированы на вторичной. В конечном итоге рост журнала воспроизводится на вторичной реплике, и временные VLF корректно исправляются, меняя статус на 2.
Вполне логично, что существует подобная схема, но я никогда по-настоящему не задумывался об этом случае и не экспериментировал, чтобы посмотреть, что происходит.
В любом случае, теперь вы знаете, что означает статус 4, если когда-нибудь его увидите (и спасибо Шону!).

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