Решения высокой доступности для восстановления базы данных

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

SQL Server 2005—Резервирование и восстановление баз данных на определенный момент времени

Необходимым компонентом для высокой доступности является план резервирования и восстановления. Различные модели восстановления в SQL Server 2005 устанавливают баланс между избыточностью записи в журнал и полноценным восстановлением данных. SQL Server 2005 имеет три модели восстановления базы данных: простая (Simple), полная (Full) и модель с протоколированием массовых операций (Bulk-Logged).

  • Модель восстановления Simple. Данная модель представляет минимум записи в журнал, однако за счет того, что все данные попавшие в БД и все изменения после последней операции резервирования не смогут быть восстановлены.

  • Модель восстановления Full. Данная модель находится на другом конце шкалы, потому что все изменения данных отражаются в журнале. С этой моделью восстановления, можно восстановить все данные на определенный момент времени. По умолчанию, SQL Server использует именно ее.

  • Модель восстановления Bulk-Logged. Эта модель находится между первыми двумя, она позволяет записывать в журнал все транзакции кроме массовых операций (bulk) таких как массовое копирование и SELECT INTO. В ситуации когда требуется восстановление, эти операции будут утеряны. Поэтому данная модель может восстановить базу данных на момент последнего резервирования или лога.

Как только выбрана подходящая модель восстановления, необходимо выработать план создания резервных копий. Резервирование может быть произведено на дисковое устройство, ленту или другой носитель. Процесс резервирования на диск является самой быстрой операцией. Для защиты от дисковых сбоев, резервные копии должны всегда записываться на отдельный диск и предпочтительно с отдельным от файлов БД контроллером. SQL Server поддерживает три основных типа резервирования БД: полное, частичное и резервирование лога.

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

  • Частичное резервирование базы данных. Резервные копии данного типа содержат только те страницы базы данных, которые были изменены с момента последнего полного резервирования базы данных. Частое частичное резервирование уменьшает количество резервных копий лога, которые нужно применить для восстановления базы данных на текущее состояние.

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

Технология transactional pointintime recovery позволяет восстанавливать всю базу данных на определенный момент времени. Журнал транзакций SQL Server 2005 состоит из последовательной записи всех изменений, которые происходят в БД с момента последней операции резервирования. Используя резервную копию журнала транзакций, можно восстановить базу данных на любой необходимый момент времени. Например, если ошибка в приложении, которая привела к повреждению данных в БД, возникла в 04:00, можно использовать резервную копию лога транзакций для восстановления БД на состояние в 03:59—как раз перед тем как произошла порча данных.

Когда происодит восстановление журнала транзакций SQL Server, применяются все транзакции, которые находятся в журнале. Дополнительно к данным, используемым для обновления базы данных, каждая запись в журнале трензакций содержит временную метку (timestamp) которая содержит время когда произошла данная транзакция. При достижении конца журнала или достижения указанного времени в процессе восстановления состояние базы данных будет в точности соответствовать состоянию в котором она была во время последней транзакции, позволяя быстро избавиться от ошибки приведшей к искажению данных.

Дополнительно к стандартным операциям резервирования, SQL Server 2005 обеспечивает поддержку восстановления данных на уровне отдельных страниц или группы страниц.


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

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