Поделиться через


Обзор восстановления и восстановления (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). Таблица грязных страниц (DPT) содержит записи о страницах, которые были "грязными" на момент завершения работы базы данных. ATT содержит записи транзакций, которые были активны в момент, когда база данных не была корректно завершена.

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

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

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

Примечание.

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

Примечание.

Чтобы максимально повысить доступность баз данных в корпоративной среде после запуска службы SQL Server, например после отработки отказа экземпляра отказоустойчивого кластера AlwaysOn или локального перезапуска, 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 Management Studio

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

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

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

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

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

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

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

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

Примечание.

ADR всегда включен в Базе данных SQL Azure, Управляемом экземпляре SQL Azure, Azure Synapse Analytics (только для выделенного пула SQL) и базе данных SQL в Microsoft Fabric.