BufferToDiskMax

«BufferToDiskMax» используется в случае, когда защита блоков данных от потери данных имеет наивысший приоритет.

При использовании «BufferToDiskMax», все данные, которые буферизируются в ОЗУ, одновременно буферизируются и на жесткий диск, таким образом данные сохраняются дважды. Каталог на жестком диске — произвольный (также см. параметр конфигурации «bufferToDiskDir”).

Поведение буфера, в зависимости от состояния подключения

В данном разделе описано поведение процесса буферизации при использовании «BufferToDiskMin», в зависимости от фактического состояния подключения к базе данных.

Нормальный режим

В случае установления подключения к базе данных, блоки данных краткосрочно буферизируются в ОЗУ, после чего они записываются непосредственно в базу данных.

Нарушение связи между менеджером РБД и базой данных

Данные буферизуются в ОЗУ до тех пор, пока в ОЗУ достаточно объема памяти. После достижения предела объема памяти ОЗУ, новые данные буферизируются только на жесткий диск.

До тех пор, пока ОЗУ имеет достаточно свободного объема памяти, данные буферизируются в ОЗУ и на жесткий диск. После достижения предела объема памяти ОЗУ, новые данные буферизируются только на жесткий диск.

Установление подключения между менеджером РБД и базой данных

Буферизированные блоки данных записываются в БД в том же порядке, в котором они буферизировались. Т.е. сначала, в базу данных записываются самые ранние данные из ОЗУ, после которых осуществляется запись данных из локального жесткого диска.

Сбой менеджера РБД

Если сбой не обусловлен дефектом жесткого диска, все данные можно считывать из жесткого диска (без потери данных).

Перезапуск менеджера РБД после сбоя

В случае если после перезапуска менеджера РБД повторно устанавливается подключение к БД, менеджер РБД осуществляет проверку наличия блоков данных на жестком диске. В этом случае они записываются в базе данных.

В случае сбоя резервированной РБД, могут пострадать данные обеих систем. При этом данные не записываются дважды в базу данных, пассивная РБД проверяет первую и последнюю запись в блоке. Если обе записи уже присутствуют в базе данных, повторная их запись не выполняется. В случае отсутствия одной записи, запись блока осуществляется в БД. Эта процедура выполняется только если РБД пассивна, а также при условии наличия блоков на жестком диске в момент запуска РБД. Данный режим выполняется до тех пор, пока не будут обработаны все, доступные в момент запуска РБД, буферные области на жестком диске.

В случае перезапуска РБД без подключения к базе данных, блоки данных буферизируются по тому же принципу, что и при сбое, до повторного установления подключения.

Индикатор поведения буфера

На следующем рисунке показано взаимодействие ОЗУ и локального жесткого диска во время передачи данных. Во внутренней точке данных «bufferToDiskIndicator» можно проследить фактически применяемую логику работы буфера.

Рисунок: Различное поведение буфера при «BufferToDiskMin»

bufferToDiskIndicator = 0

Блоки данных буферизируются в ОЗУ и на жесткий диск. При наличии свободных блоков в ОЗУ, для индикатора устанавливается значение, равное 0. В случае наличия большего количества свободных блоков в ОЗУ, нежели на жестком диске, индикатор также имеет значение, равное 0.

Предпосылки: стабильное подключение; отсутствие необходимости сохранения данных на жесткий диск

bufferToDiskIndicator = 1

Блоки данных, которые невозможно сохранить в ОЗУ, буферизируются только на жесткий диск.

Предпосылки: поток данных, отсутствие подключения к базе данных

bufferToDiskIndicator = 2

Буферизированные блоки данных записываются в БД в хронологическом порядке.

Предпосылки: повторное установление подключения к БД

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *