Резервное копирование и восстановление баз данных SQL Server

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

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

В этой статье приводятся общие сведения о резервном копировании SQL Server. Конкретные действия по резервному копированию баз данных SQL Server см. в разделе Создание резервных копий.

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

Помимо локального хранилища для хранения резервных копий, SQL Server также поддерживает резервное копирование в хранилище BLOB-объектов Azure и восстановление из него. Дополнительные сведения см. в статье о резервном копировании и восстановлении SQL Server с помощью хранилища BLOB-объектов Microsoft Azure. Для файлов базы данных, хранящихся в хранилище BLOB-объектов Azure, SQL Server 2016 (13.x) позволяет использовать моментальные снимки Azure для практически мгновенного резервного копирования и более быстрого восстановления. Дополнительные сведения см. в статье "Резервные копии моментальных снимков файлов" для файлов базы данных в Azure. Azure также предоставляет возможности резервного копирования корпоративного класса для SQL Server на виртуальных машинах Azure. Это полностью управляемое решение для резервного копирования обеспечивает поддержку групп доступности Always On, долгосрочного хранения, точечного восстановления, а также централизованного управления и мониторинга. Дополнительные сведения см. в статье о резервном копировании SQL Server на виртуальных машинах Azure.

Зачем выполнять резервное копирование

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

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

    • Сбой носителя данных.
    • ошибки пользователей (например, удаление таблицы по ошибке);
    • сбои оборудования (например, поврежденный дисковый накопитель или безвозвратная потеря данных на сервере);
    • Стихийные бедствия. С помощью резервного копирования SQL Server в хранилище BLOB-объектов Azure можно создать внешнюю резервную копию в другом регионе, чем регион, где находится ваша локальная инфраструктура, которую можно использовать в случае стихийного бедствия, затронувшего вашу локальную инфраструктуру.
  • Кроме того, резервные копии базы данных полезны для обычных административных целей, таких как копирование базы данных с одного сервера на другой, настройка групп доступности AlwaysOn или зеркального отображения базы данных и архивация.

Глоссарий терминов, связанных с резервным копированием

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

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

устройство резервного копирования
Диск или ленточное устройство, на которые записываются резервные копии SQL Server для последующего восстановления. Резервные копии SQL Server также можно записать в Хранилище BLOB-объектов Azure, а формат URL-адреса используется для указания назначения и имени файла резервной копии. Дополнительные сведения см. в статье о резервном копировании и восстановлении SQL Server с помощью хранилища BLOB-объектов Microsoft Azure.

носитель резервной копии
Одна или несколько магнитных лент или файлов на диске, на которых записана одна или несколько резервных копий.

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

резервное копирование базы данных
Резервная копия базы данных. Полные резервные копии базы данных отображают состояние всей базы данных на момент завершения резервного копирования. Разностные резервные копии базы данных содержат только изменения базы данных с момента последнего полного резервного копирования.

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

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

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

восстановить
Для возврата базы данных в стабильное и согласованное состояние.

восстановление
Фаза запуска или восстановления базы данных, которая приводит базу данных в состояние согласованности транзакций.

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

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

Стратегии резервного копирования и восстановления

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

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

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

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

  • Свойства каждой базы данных: размер, типичное использование, характер содержимого, требования к данным и т. д.

  • Ограничения ресурсов, таких как оборудование, персонал, пространство для хранения носителей резервного копирования, физическая безопасность хранимого носителя и т. д.

Рекомендации по лучшим практикам

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

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

  • Файлы резервной .BAK копии базы данных должны иметь расширение
  • Файлы резервного копирования журналов должны иметь расширение .TRN.

Использование отдельного хранилища

Внимание

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

Выбор подходящей модели восстановления

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

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

Создание стратегии резервного копирования

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

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

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

  • Насколько часты и вероятны изменения и обновления?

    Если изменения часты, учтите следующее.

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

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

  • Касаются ли обычно изменения небольшой или же значительной части базы данных?

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

  • Сколько места на диске требуется для полного резервного копирования базы данных?

  • За какой период в прошлом вашему бизнесу необходимо хранить резервные копии?

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

Оценка размера полной резервной копии базы данных

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

Создание расписания резервного копирования

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

Сведения о ограничениях параллелизма во время резервного копирования см. в обзоре резервного копирования (SQL Server).

После принятия решения о том, какой тип резервного копирования необходим и как часто его выполнять, рекомендуется запланировать регулярное резервное копирование как часть плана обслуживания базы данных. Дополнительные сведения о планах обслуживания и об их создании для резервных копий баз данных и журналов см. в разделе Use the Maintenance Plan Wizard.

Проверка резервных копий

У вас нет стратегии восстановления, пока вы не протестируете резервные копии. Очень важно тщательно протестировать стратегию резервного копирования для каждой из баз данных, восстанавливая копию базы данных в тестовой системе. Необходимо протестировать восстановление каждого типа резервной копии, которую планируется использовать. Мы также рекомендуем выполнить проверку согласованности базы данных после восстановления резервной копии с помощью DBCC CHECKDB базы данных, чтобы проверить, не поврежден ли носитель резервного копирования.

Проверка стабильности мультимедиа и согласованности

Используйте параметры проверки, предоставляемые служебными программами резервного копирования (BACKUP команда T-SQL, планы обслуживания SQL Server, программное обеспечение резервного копирования или решение и т. д.). Пример см. в RESTOREоператорах - VERIFYONLY.

Используйте расширенные функции, такие как BACKUP CHECKSUM, чтобы выявлять проблемы с самим носителем резервной копии. Дополнительные сведения см. в разделе "Возможные ошибки мультимедиа во время резервного копирования и восстановления" (SQL Server)

Стратегия резервного копирования и восстановления документов

Мы рекомендуем документировать процедуры резервного копирования и восстановления и хранить копию документации в руководстве по эксплуатации. Также рекомендуется вести руководство по эксплуатации для каждой базы данных. Такое руководство по эксплуатации должно указывать расположение резервных копий, имена устройств резервного копирования (если есть), время, требуемое для восстановления тестовой резервной копии.

Риск безопасности восстановления резервных копий из ненадежных источников

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

Почему это важно

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

Вредоносный .bak файл может:

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

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

Лучшие практики

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

  • Восстановление резервных копий рассматривается как операция с высоким риском.
  • Уменьшите область воздействия угроз с помощью изолированных экземпляров.
  • Разрешить только доверенные резервные копии: никогда не восстанавливайте резервные копии из неизвестных или внешних источников.
  • Разрешите только те резервные копии, которые остаются внутри доверенной зоны: убедитесь, что резервные копии поступают из этой зоны.
  • Не обходите механизмы безопасности ради удобства.
  • Включите аудит на уровне сервера для записи событий резервного копирования и восстановления и устранения ошибки аудита.

Мониторинг хода выполнения с помощью XEvent

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

Предупреждение

Использование backup_restore_progress_trace расширенного события может вызвать проблемы с производительностью и занимать значительный объём дискового пространства. Используйте недолго, соблюдайте осторожность и тщательно тестируйте перед внедрением в рабочую среду.

-- Create the backup_restore_progress_trace extended event session
CREATE EVENT SESSION [BackupRestoreTrace] ON SERVER
ADD EVENT sqlserver.backup_restore_progress_trace
ADD TARGET package0.event_file(SET filename=N'BackupRestoreTrace')
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=5 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
GO

-- Start the event session
ALTER EVENT SESSION [BackupRestoreTrace]
ON SERVER
STATE = start;
GO

-- Stop the event session
ALTER EVENT SESSION [BackupRestoreTrace]
ON SERVER
STATE = stop;
GO

Пример выходных данных расширенного события

Снимок экрана с примером выходных данных xevent для резервного копирования. Снимок экрана с примером выходных данных xevent для резервного копирования (продолжение).

Дополнительные сведения о задачах резервного копирования

Работа с устройствами резервного копирования и носителями резервного копирования

Создание резервных копий

Примечание.

Для частичных резервных копий или резервных копий только для копирования необходимо использовать оператор Transact-SQL BACKUP с параметром PARTIAL или COPY_ONLY соответственно.

Использование SSMS

Использование T-SQL

Восстановление резервных копий данных

Использование SSMS

Использование T-SQL

Восстановление журналов транзакций (модель полного восстановления)

Использование SSMS

Использование T-SQL