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

Применимо к:SQL Server

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

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

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

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

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

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

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

SQL Server работает во всех поддерживаемых операционных системах. Дополнительные сведения о поддерживаемых операционных системах см. в разделе Требования к оборудованию и программному обеспечению для установки SQL Server 2016. Сведения о поддержке резервных копий более ранних версий SQL Server см. в подразделе "Поддержка совместимости" раздела RESTORE (Transact-SQL).

Обзор сценариев восстановления

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

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

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

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

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

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

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

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

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

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

Для восстановления файла Компонент Database Engine выполняет два шага:

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

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

Для восстановления базы данных Компонент Database Engine выполняет три шага:

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

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

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

Независимо от способа восстановления данных, перед восстановлением базы данных Компонент SQL Server Database Engine обеспечивает логическую согласованность всей базы данных. Например, если вы восстановите файл, вы не сможете восстановить его и перевести в оперативный режим, пока он не будет развернут настолько далеко, чтобы обеспечить согласованность с базой данных.

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

Примечание

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

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

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

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

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

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

Важно!

Независимо от модели восстановления базы данных, резервную копию SQL Server нельзя восстановить до версии Компонент SQL Server Database Engine, более старой, чем версия, создавшая резервную копию.

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

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

Если приведенные выше ограничения противоречат задачам восстановления, рекомендуется использовать модель полного восстановления. Дополнительные сведения см. в разделе Общие сведения о резервном копировании (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 Database Engine. База данных, для которой было включено ускоренное восстановление, значительно быстрее восстанавливается после отработки отказа или другого неясного завершения работы. Если включено, ускоренное восстановление базы данных также значительно быстрее завершает откат отмененных продолжительных транзакций.

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

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

Примечание

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

Дальнейшие действия