Обзор восстановления и восстановления (SQL Server)

Область применения: SQL Server

В этой статье представлен обзор процесса восстановления и восстановления базы данных для SQL Server.

Обзор

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

  • База данных ( полное восстановление базы данных)

    Вся база данных восстанавливается и восстанавливается, а база данных находится в автономном режиме во время операций восстановления и восстановления.

  • Файл данных ( восстановление файла)

    Файл данных или набор файлов данных возвращается в исходное состояние и восстанавливается. Во время восстановления файла файловые группы, содержащие файлы, автоматически находятся в автономном режиме во время восстановления. Любые попытки подключения и работы с файловой группой вне сети приведут к ошибке.

  • Страница данных ( восстановление страницы)

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

Резервное копирование и восстановление SQL Server работают во всех поддерживаемых операционных системах. Сведения о поддерживаемых операционных системах см. в разделе "Требования к оборудованию и программному обеспечению" для установки SQL Server. Сведения о поддержке резервных копий из предыдущих версий SQL Server см. в разделе "Поддержка совместимости" в разделе RESTORE.

Сценарии восстановления

Сценарий восстановления в SQL Server — это процесс восстановления данных из одной или нескольких резервных копий, а затем восстановление базы данных. Поддерживаемые сценарии восстановления зависят от модели восстановления базы данных и выпуска SQL Server.

Следующая таблица предоставляет возможные сценарии восстановления, которые поддерживаются различными моделями восстановления.

Сценарий восстановления Простая модель восстановления Модель полного восстановления или модель восстановления с неполным протоколированием
полное восстановление базы данных Это базовая стратегия восстановления. Полное восстановление базы данных может содержать простые операции возврата и восстановления из полной резервной копии. Также полное восстановление базы данных может проводиться на основе полной резервной копии базы данных с ее последующим обновлением по журналу.

Дополнительные сведения см. в разделе Полное восстановление базы данных (простая модель восстановления).
Это базовая стратегия восстановления. Восстановление всей базы данных включает в себя восстановление полной резервной копии, возможно, разностных резервных копий (если они есть) и восстановления всех последующих резервных копий журналов (последовательно). Восстановление всей базы данных завершается восстановлением из последней резервной копии журнала и возвратом в исходное состояние (RESTORE WITH RECOVERY).
Дополнительные сведения см. в статье Выполнение полного восстановления базы данных (модель полного восстановления).
Восстановление файла 1 Восстановление одного или более поврежденных файлов с атрибутом «только для чтения» без восстановления всей базы данных. Восстановление файла возможно только при наличии в базе данных хотя бы одной файловой группы с атрибутом «только для чтения». Восстановление одного или нескольких файлов без восстановления всей базы данных. Восстановление файлов можно выполнить, пока база данных находится в автономном режиме или для некоторых выпусков SQL Server, а база данных остается в сети. Во время восстановления файла файловые группы, содержащие обрабатываемый файл, всегда находятся в режиме вне сети.
Восстановление страницы Нет данных Восстановление одной или нескольких поврежденных страниц. Восстановление страниц можно выполнить, пока база данных находится в автономном режиме или для некоторых выпусков SQL Server, а база данных остается в сети. Во время восстановления страницы всегда находятся в режиме вне сети.

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

Дополнительные сведения см. в статье Поэтапное восстановление (SQL Server).

1 Восстановление в Сети поддерживается только в выпуске Enterprise.

Шаги по восстановлению базы данных

Чтобы выполнить восстановление файла, ядро СУБД выполняет два шага:

  • создает любой недостающий файл базы данных;

  • копирует данные с устройств резервного копирования в файл(ы) базы данных.

Чтобы выполнить восстановление базы данных, ядро СУБД выполняет три шага:

  • Создает файлы базы данных и журналов транзакций, если они еще не существуют.

  • копирует все данные, журналы и страницы индексов с резервной копии базы данных в файлы базы данных;

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

Независимо от того, как восстанавливаются данные, перед восстановлением базы данных sql Server ядро СУБД гарантирует, что вся база данных логически согласована. Например, если вы восстановите файл, его нельзя восстановить и перенести в режим "в сети", пока он не будет развернут достаточно далеко вперед, чтобы быть согласован с базой данных.

Преимущества восстановления файла или страницы

Восстановление файлов и страниц вместо восстановления всей базы данных целиком дает следующие преимущества.

  • Восстановление данных меньшего объема данных уменьшает время, затрачиваемое на копирование и восстановление.

  • В SQL Server восстановление файлов или страниц может позволить другим данным в базе данных оставаться в сети во время операции восстановления.

Восстановление и журнал транзакций

Для большинства сценариев восстановления необходимо применить резервную копию журнала транзакций и разрешить SQL Server ядро СУБД запустить процесс восстановления, чтобы база данных была подключена к сети. Восстановление — это процесс, используемый SQL Server для каждой базы данных для запуска в транзакционно согласованном состоянии ( или очистке).

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

  • Этап 1 — это этап анализа, который анализирует журнал транзакций, чтобы определить, что является последней контрольной точкой, и создает таблицу грязной страницы (DPT) и активную таблицу транзакций (ATT). ТГС содержит записи о страницах, которые были "грязными" на момент завершения работы базы данных. ATT содержит записи транзакций, которые были активными во время завершения работы базы данных.

  • Этап 2 — это этап повторного выполнения, который выполняет перекат всех изменений, записанных в журнале, которые, возможно, не были записаны в файлы данных во время завершения работы базы данных. Минимальный регистрационный номер транзакции в журнале (minLSN), необходимый для успешного восстановления всей базы данных, находится в ТГС и отмечает начало операций восстановления, необходимых для всех "грязных" страниц. На этом этапе SQL Server ядро СУБД записывает на диск все грязные страницы, принадлежащие зафиксированным транзакциям.

  • Этап 3 — это этап отмены, который откатывает неполные транзакции, найденные в ATT, чтобы убедиться, что целостность базы данных сохраняется. После отката база данных включается в режим «в сети», и больше никакие резервные копии журнала транзакций не могут быть применены.

Сведения о ходе каждого этапа восстановления базы данных регистрируются в журнале ошибок SQL Server. Ход восстановления базы данных также можно отслеживать с помощью расширенных событий. Дополнительные сведения см. в записи блога New extended events for database recovery progress (Новые расширенные события для процесса восстановления базы данных).

Примечание.

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

Примечание.

Чтобы максимально повысить доступность баз данных в корпоративной среде после запуска службы SQL Server, например после отработки отказа экземпляра отказоустойчивого кластера AlwaysOn или перезапуска на месте, SQL Server выпуск Enterprise может перевести базу данных в режим "в сеть" после этапа повторного выполнения, а этап отмены по-прежнему выполняется. Это также называется быстрым восстановлением. Однако быстрое восстановление недоступно при переходе базы данных в интерактивное состояние, но служба SQL Server не была перезапущена. Например, выполнение ALTER DATABASE AdventureWorks SET ONLINE; не позволит базе данных находиться в состоянии чтения и записи до завершения всех трех этапов восстановления.

Модели восстановления и поддерживаемые операции восстановления

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

Операция восстановления Модель полного восстановления Модель восстановления с неполным протоколированием Простая модель восстановления
Восстановление данных Полное восстановление (при наличии журнала). С некоторыми потерями данных. Будут потеряны все данные с момента создания последней полной или разностной резервной копии.
Восстановление на определенный момент времени На любое время, сохранившееся в резервных копиях журналов. Запрещено, если резервная копия журналов содержит какие-либо изменения с неполным протоколированием. Не поддерживается.
Восстановление файла 1 Поддерживается полностью. Иногда. 2 Только для вторичных файлов, доступных только для чтения.
Восстановление страницы 1 Поддерживается полностью. Иногда. 2 Нет.
Восстановление на уровне файловой группы 1 Поддерживается полностью. Иногда. 2 Только для вторичных файлов, доступных только для чтения.

1 Доступно только в выпуске Enterprise SQL Server

2 Сведения о необходимых условиях см. в разделе "Ограничения восстановления" в рамках простой модели восстановления далее в этой статье.

Внимание

Независимо от модели восстановления базы данных резервное копирование SQL Server невозможно восстановить в ядро СУБД версии SQL Server, которая старше версии, созданной резервной копией.

Сценарии восстановления в простой модели восстановления

В простой модели восстановления предусмотрены следующие ограничения для операции восстановления.

Если приведенные выше ограничения противоречат задачам восстановления, рекомендуется использовать модель полного восстановления. Дополнительные сведения см. в разделе Общие сведения о резервном копировании (SQL Server).

Внимание

Независимо от модели восстановления базы данных резервная копия SQL Server не может быть восстановлена версией SQL Server, которая старше версии, созданной резервной копией.

Восстановление в модели восстановления с массовым журналом

В этом разделе рассматриваются вопросы, относящиеся исключительно к модели восстановления с неполным протоколированием, которая разработана исключительно в дополнение к модели полного восстановления.

Примечание.

Основные сведения о модели восстановления с неполным протоколированием см. в разделе Журнал транзакций (SQL Server).

В целом модель восстановления с неполным протоколированием схожа с моделью полного восстановления, поэтому все, что касается одной модели, также можно применить к другой. Однако модель восстановления с неполным протоколированием влияет на восстановление к моменту времени и на оперативное восстановление.

Ограничения для восстановления на определенный момент времени

Если резервная копия журнала, выполненная в модели восстановления с массовым ведением журнала, содержит изменения с массовым журналом, восстановление на определенный момент времени не допускается. Попытка восстановления до момента времени из резервной копии журнала, содержащей массовые изменения, приводит к сбою операции восстановления.

Ограничения для восстановления в сети

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

  • все необходимые резервные копии журналов должны быть сделаны до начала последовательности восстановления;

  • резервные копии массовых изменений были созданы до начала последовательности восстановления в сети;

  • Если в базе данных существуют массовые изменения, все файлы должны быть либо подключены к сети, либо уничтожены. (Это означает, что они больше не являются частью базы данных.)

Если эти условия не выполнены, последовательность восстановления в сети завершается ошибкой.

Примечание.

Перед тем, как начать восстановление в сети, рекомендуется переключиться к модели полного восстановления. Дополнительные сведения см. в разделе Модели восстановления (SQL Server).

Дополнительные сведения о выполнении восстановления в сети см. в разделе Восстановление в сети (SQL Server).

Помощник по восстановлению базы данных (среда SQL Server Management Studio)

Помощник по восстановлению базы данных облегчает создание планов восстановления, реализующих оптимально правильные последовательности восстановления. Решено большинство известных проблем восстановления баз данных, и внедрены предложенные клиентами усовершенствования. Основные усовершенствования, появившиеся в помощнике по восстановлению баз данных:

  • Алгоритм плана восстановления: значительно улучшен алгоритм, используемый при создании планов восстановления, особенно для сложных сценариев восстановления. Многие пограничные случаи, включая сценарии вилки в восстановления на определенный момент времени, обрабатываются более эффективно, чем в предыдущих версиях SQL Server.

  • Восстановление на определенный момент времени: помощник по восстановлению баз данных значительно упрощает восстановление базы данных до определенного момента времени. Визуальная временная шкала резервного копирования значительно улучшает поддержку для выполнения восстановления на момент времени. Эта визуальная временная шкала позволяет определять подходящий момент времени в качестве целевой точки восстановления для базы данных. Временная шкала облегчает обзор разветвленного пути восстановления (пути, который покрывает вилки восстановления). Заданный план восстановления на момент времени автоматически включает резервные копии, относящиеся к восстановлению на целевой момент времени (дата и время). Дополнительные сведения см. в разделе Восстановление базы данных SQL Server на определенный момент времени (модель полного восстановления).

Дополнительные сведения см. в следующих блогах по управлению SQL Server:

Ускоренное восстановление баз данных

Ускоренное восстановление базы данных доступно, начиная с SQL Server 2019 (15.x), и в Базе данных SQL Azure. Ускорение восстановления базы данных значительно повышает доступность базы данных, особенно в присутствии длительных транзакций, перепроектируя процесс восстановления SQL Server ядро СУБД. База данных, для которой было включено ускоренное восстановление, значительно быстрее восстанавливается после отработки отказа или другого неясного завершения работы. Если включено, ускоренное восстановление базы данных также значительно быстрее завершает откат отмененных продолжительных транзакций.

Вы можете включить ускоренное восстановление базы данных для каждой базы данных в SQL Server 2019 (15.x) с помощью следующего синтаксиса:

ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;

Примечание.

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