Оптимизация производительности резервного копирования и восстановления в SQL Server

MicrosoftSQL Server предлагает два следующих способа ускорения операций резервного копирования и восстановления.

  • Использование нескольких устройств резервного копирования позволяет резервным копиям записываться на все параллельные устройства. Скорость работы устройства резервного копирования является потенциально узким местом в пропускной способности резервного копирования. Использование нескольких устройств может увеличить пропускную способность пропорционально количеству используемых устройств. Подобным образом резервная копия может быть восстановлена с нескольких параллельных устройств. Дополнительные сведения см. в подразделе «Использование нескольких носителей или устройств» далее в этом разделе.

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

Использование нескольких носителей или устройств

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

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

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

Важное примечаниеВажно!

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

Создание резервных копий и восстановление из них при использовании нескольких устройств резервного копирования происходит так же, как при использовании одного устройства. Разница заключается только в необходимости указывать не одно, а все устройства резервного копирования, участвующие в операции. Например, если резервная копия базы данных создается с использованием трех устройств резервного копирования на магнитной ленте, таких как \\.\TAPE0, \\.\TAPE1 и \\.\TAPE2, то каждое из этих ленточных устройств должно быть указано как часть операции резервного копирования, несмотря на то, что для последующего восстановления резервной копии может использоваться меньшее число устройств резервного копирования на магнитной ленте.

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

Пример

Рассмотрим сценарий, использующий для хранения полной резервной копии базы данных три устройства резервного копирования на магнитной ленте с одинаковой скоростью. Первые две ленты имеют по 10 гигабайт (ГБ) свободного пространства, а третья — только 5 ГБ. Если резервная копия 20-гигабайтовой базы данных создается на все три устройства резервного копирования на магнитной ленте одновременно, то третья лента будет заполнена до окончания создания резервной копии. Как только на третью ленту будет записано 5 ГБ, операция резервного копирования прекратит запись на третье устройство. Операция блокирует это устройство и запросит новую ленту. В то же время операция резервного копирования продолжает запись данных на два других устройства. Однако до замены третьей ленты возникает внутренняя точка синхронизации. В этот момент вся операция резервного копирования приостанавливается вплоть до подключения новой ленты на третье устройство.

Оптимизация производительности полных резервных копий и разностных резервных копий

Создание полной или разностной резервной копии состоит из следующих шагов:

  1. копирование данных из базы данных на устройства резервного копирования;

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

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

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

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

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

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

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

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

Оптимизация производительности восстановления

Восстановление базы данных из копии или разностной резервной копии происходит за четыре шага:

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

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

  3. копирование журнала транзакций из файлов журнала транзакций;

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

Применение резервной копии журнала транзакций состоит из двух шагов:

  1. копирование данных из устройств резервного копирования в файл журнала транзакций;

  2. накат журнала транзакций.

Восстановление файла базы данных состоит из двух шагов:

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

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

Инициализация файла

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

Быстрая инициализация файлов

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

ПримечаниеПримечание

Быстрая инициализация файлов доступна только в системах Microsoft Windows XP, Windows Server 2003 и более поздних версиях.

Чтобы использовать быструю инициализацию файлов, необходимо запустить учетную запись службы MSSQLSERVER под учетной записью Windows и присвоить специальные права доступа Windows SE_MANAGE_VOLUME_NAME данной учетной записи Windows. Данные права доступа присваиваются группе администраторов Windows по умолчанию. Обладая правами системного администратора, можно присвоить данные права доступа, добавив учетную запись Windows к политике безопасности Выполнение задач обслуживания тома. Дополнительные сведения о назначении прав пользователей см. в документации Windows.

Оптимизация производительности ленточного устройства резервного копирования

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

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

  • количество ленточных устройств, которые совместно используют канал интерфейса SCSI;

  • тип ленточного устройства.

Размер блока данных программного обеспечения, необходимый для достижения оптимальной производительности, вычисляется SQL Server, и его не следует изменять. Максимальный размер блока BLOCKSIZE = 64 КБ.

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

Важное примечаниеВажно!

Никогда не размещайте ленточный накопитель на тот же канал SCSI, что и диски или CD-ROM. Действия по обработке ошибок для этих устройств взаимно несовместимы.

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

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

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

Необходимо строго соблюдать использование массива RAID для устройства резервного копирования диска. Например, массив RAID 5 обладает низкой производительностью записи, приблизительно равной скорости записи одного диска (из-за того что необходимо обеспечивать контрольные данные). К тому же необработанная скорость дозаписи данных в файл значительно меньше скорости записи неформатированного носителя.

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

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

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

Сжатие данных

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

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

Дополнительные сведения о флагах трассировки см. в разделе Флаги трассировки (Transact-SQL).

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

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

Количество данных, записанных на ленту

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

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

Оптимизация синхронизации доставки журналов

При попытке синхронизировать место назначения доставки журналов не обязательно обращаться к предложению WITH STANDBY между шагами выполнения инструкции RESTORE LOG.