SQL Server 2000

Резервное копирование Microsoft SQL Server

Разбить на страницы
Показывать лекцию целиком

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

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

Терминология резервного копирования

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

Резервное копирование и восстановление

Операции резервного копирования (backup) и восстановления (restore) связаны друг с другом и предполагают сохранение информации базы данных для использования в будущем – аналогично операциям резервного копирования и восстановления, которые могут выполняться операционной системой. При резервном копировании данные копируются из базы данных и сохраняются в другом месте. Резервное копирование операционной системы и резервное копирование базы данных отличаются в том, что в первом случае происходит сохранение отдельных файлов, а во втором – сохранение всей базы данных. Обычно база данных совместно используется многими пользователями, в то время как многие файлы операционной системы принадлежат отдельным пользователям. Тем самым при резервном копировании базы данных создается резервная копия данных сразу всех пользователей. Поскольку SQL Server предназначен для максимально возможной непрерывной эксплуатации, процесс резервного копирования может выполняться во время работы базы данных и даже в то время, как пользователи осуществляют доступ к базе данных.

При восстановлении данных из резервной копии они копируются назад в базу данных. Не путайте восстановление (restore) с воспроизведением (регенерацией) (recovery): это две различные операции.

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

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

Воспроизведение

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

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

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

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

    Примечание. Поскольку журнал транзакций является определяющим компонентом для воспроизведения транзакций в случае аварии, он должен всегда располагаться на томе RAID 1 (зеркальном томе). (О RAID [дисковые матрицы] см. лекцию 5.)

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

    Примечание. Транзакция, откат которой выполняет SQL Server, идентична транзакции, которая заканчивается командой ROLLBACK. Эта транзакция аннулируется, и все соответствующие данные восстанавливаются к их исходному состоянию.

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

    Отказы системы

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

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

    Отказы оборудования

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

  • Отказ ЦП (CPU), памяти или шины (магистрали) данных. Эти отказы обычно приводят к аварийному отказу системы. После замены неисправного компонента и перезапуска системы SQL Server автоматически выполняет воспроизведение базы данных. Собственно база данных не затрагивается таким отказом, поэтому ее восстановление (с резервной копии) не требуется; SQL Server просто должен воспроизвести потерянные транзакции
  • Отказ диска. Если вы используете отказоустойчивые матрицы RAID, то отказ этого типа, возможно, вообще не повлияет на состояние базы данных. Вы должны просто отремонтировать матрицу RAID. Но при отказе всей матрицы RAID единственной альтернативой является восстановление базы данных из резервной копии и использование резервных копий журнала транзакций для воспроизведения базы данных.
  • Катастрофический отказ системы или полная потеря сервера. При разрушении всей системы из-за пожара или другой катастрофы, возможно, потребуется восстановление "с нуля". Потребуется новое оборудование, восстановление базы данных с резервной копии и воспроизведение базы данных с помощью резервных копий данных и журнала транзакций.
  • Отказы программного обеспечения

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

  • Отказы операционной системы. Если отказ этого типа происходит в подсистеме ввода-вывода, то могут быть запорчены данные на диске. Если отказ не затрагивает базу данных, требуется только воспроизведение. Если запорчена информация в базе данных, то остается только восстановление базы данных с резервной копии.
  • Отказ СУРБД (RDBMS). Возможен отказ самого SQL Server. Если отказ этого типа привел к порче данных, то должно быть выполнено восстановление базы данных с резервной копии и последующее воспроизведение. Если данные не запорчены, то для возврата системы к состоянию, в котором она находилась на момент отказа, требуется только автоматическое воспроизведение.
  • Отказ приложения.Возможен отказ приложений, что может приводить к порче данных. Если отказ этого типа привел к порче данных, то должно быть выполнено восстановление базы данных с резервной копии (как и в случае отказа СУРБД). Если данные не запорчены, то восстановление не нужно; автоматическое воспроизведение вернет систему к состоянию, в котором она находилась на момент отказа. Возможно, вам потребуется получить исправление от поставщика этого приложения, чтобы не допустить повторения отказа этого типа.
  • Примечание. Компании часто проводят опробование бета-версий SQL Server. Бета-версии программного обеспечения предназначены только для оценки и тестирования и не должны использоваться в условиях промышленной эксплуатации. Иногда бета-версии содержат ошибки и средства, которые не были проверены в полной мере. Вам следует использовать эксплуатационную версию Microsoft SQL Server 2000, прошедшую полное тестирование и готовую к промышленной эксплуатации.

    Человеческие ошибки

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

  • Потеря сервера с базой данных. К потере сервера могут приводить такие человеческие ошибки, как внезапное отключение питания или отключение сервера без закрытия SQL Server. Воспроизведение происходит автоматически при перезапуске SQL Server, но может потребовать определенного времени. Если отказ не затронул базу данных на диске, то восстановление не требуется.
  • Потеря данных. Этот тип потери данных может быть вызван, например, случайным удалением файла данных, что привело к потере базы данных. Для возврата базы данных к ее состоянию до отказа должны быть выполнены операции восстановления и воспроизведения.
  • Потеря таблицы или порча данных.Если таблица удалена по ошибке или ее данные изменены некорректным образом, то для возврата таблицы к ее исходному состоянию вы можете использовать восстановление и воспроизведение. Это может оказаться очень сложным делом, поскольку отдельную таблицу или небольшой набор данных нельзя просто восстановить из резервной копии. Пример восстановления данных после отказа этого типа приводится в лекции 33.
  • Журнальное протоколирование в SQL Server

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

    Журнал транзакций

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

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

    Поток откладываемой записи (Lazywriter Thread)

    Изменения, вносимые в базу данных, сначала вносятся в данные, которые находятся в кэше SQL Server. То, что изменения вносятся сначала в кэш, требуется в первую очередь для повышения производительности, поскольку ожидание при операциях ввода-вывода занимает много времени. Эти изменения записываются в конечном итоге на диск, но этот процесс выполняется в фоновом режиме и не виден пользователю. Поскольку модифицированные страницы хранятся в кэше, то может пройти существенный период времени, прежде чем эти страницы (их еще называют ожидающими, черновыми страницами – dirty pages) будут записаны соответствующим потоком (подпроцессом) SQL Server. Этот поток называют потоком откладываемой записи ("ленивым" потоком Этот поток использует LRU-список записи страниц, где первой в очереди записи на диск находится наиболее давно обрабатывавшаяся страница и последней является только что обрабатывавшаяся страница. Страница, которая постоянно модифицируется (и, тем самым, все время перемещается в конец этого списка), вообще может быть не записана этим потоком на диск. Подобные вещи могут увеличивать время воспроизведения, поскольку для применения изменений к таким данным потребуется прочитать много журнальных записей. Например, в большой системе с объемом RAM-памяти более 1 Гб и большим числом изменений в базе данных воспроизведение может занять несколько часов. – lazywriter thread).

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

    Последовательная запись в журнал

    Журнал транзакций содержит "историю транзакций", поэтому операции ввода-вывода для журнала транзакций – это в основном операции записи, которые обычно выполняются последовательно. В случае отката транзакций происходит чтение журнала транзакций, что приводит к нарушению последовательного характера операций ввода-вывода. Поскольку откаты происходят довольно редко (так как аварии системы случаются редко и пользователи не слишком часто отменяют транзакции), ввод-вывод для журнала транзакций имеет достаточно устойчивый характер. Вы можете существенно повысить производительность операций ввода-вывода, поместив журнал транзакций на его собственный диск или матрицу RAID (см. лекции 4 и 5). В силу исключительной важности журнала транзакций для воспроизведения базы данных вам следует защитить его с помощью дисковой матрицы RAID.

    Размер журнала транзакций

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

    Примечание. Вы можете усекать журнал транзакций без его резервного копирования, задав для параметра trunc. log on chkpt (усечение при создании контрольной точки) значение TRUE в используемой базе данных. Но после этого вы не сможете получать резервную копию журнала транзакций. В результате вы лишитесь возможности воспроизведения базы данных и поэтому данная установка не рекомендуется.

    Воспроизведение с помощью журнала транзакций

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

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

    Журнал транзакций значительно изменился после версии Microsoft SQL Server 6.5. Журнал транзакций SQL Server 2000 имеет те же характеристики, что и в Microsoft SQL Server 7. Это следующие характеристики.

  • Обработка журнала транзакций отличается от обработки обычного файла данных. При записи и чтении не используются 8-килобайтные страницы, как для файлов данных. Теперь формат страниц данных уже не используется для журнала транзакций: запись может выполняться группами любого размера. Таким образом, если потоку записи журнала требуется записать лишь небольшое количество данных, он не будет использовать для этого 8 Кб данных. При частых обновлениях системы поток записи журнала может выполнять запись крупными блоками данных (16 Кб, 32 Кб и т.д.).
  • Журнал транзакций можно сконфигурировать для автоматического увеличения по мере необходимости. Это средство позволяет добавлять при необходимости больший объем пространства, но его следует использовать с осторожностью, чтобы не допустить неконтролируемый рост журнала транзакций и использование всего диска этим журналом.
  • Для журнала транзакций теперь можно использовать несколько файлов. Эти файлы также можно сконфигурировать для автоматического роста. Для файлов журнала транзакций не используется расслоение данных (striping); они используются друг за другом. (Расслоение данных описывается в лекции 5.)
  • Журнал транзакций можно перемещать на другие системы для его воспроизведения на резервной системе. Это средство называется доставкой журнала транзакций (log shipping) и подробно описывается в следующей лекции.
  • Непротоколируемые операции

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

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

  • SELECT INTO
  • BULK COPY и программа массового копирования (BCP)
  • CREATE INDEX
  • Определенные текстовые операции
  • Ниже в этом разделе мы рассмотрим чуть подробнее операции этого списка.

    Чтобы активизировать непротоколируемые массовые операции с определенной базой данных, вы должны задать для работы этой базы данных режим воспроизведения BULK_LOGGED. Кроме этого режима, можно также задавать режимы воспроизведения FULL и SIMPLE. Эти режимы задаются с помощью команды ALTER DATABASE, как это показано здесь для базы данных Northwind:

    ALTER DATABASE Northwind
    SET RECOVERY BULK_LOGGED
    
    ALTER DATABASE Northwind
    SET RECOVERY FULL
    
    ALTER DATABASE Northwind
    SET RECOVERY SIMPLE

    При использовании режима BULK_LOGGED массовые операции, описанные в следующих разделах (за некоторыми исключениями, которые тоже описываются в следующих разделах), не протоколируются в журнале, а все остальные операции протоколируются. Если выбран режим воспроизведения FULL, то протоколируются все операции. А в случае режима SIMPLE данные можно восстанавливать только из последней резервной копии.

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

    SELECT INTO

    Оператор SELECT INTO используется для создания новой таблицы в базе данных. Поскольку оператор SELECT INTO нельзя использовать для выборки данных в существующий объект, его можно использовать только для создания данных, но не для обновления данных. Этот процесс создания можно легко повторить; поэтому операции SELECT INTO вполне подходят для выполнения как непротоколируемые операции.

    BULK COPY и программа BCP

    Чтобы операции BULK COPY и BCP можно было выполнять как непротоколируемые операции, они должны отвечать следующим требованиям.

  • Для параметра базы данных select into/bulkcopy должно быть задано значение TRUE.
  • Целевая таблица не может иметь никаких индексов (за исключением случаев, когда они является пустыми перед запуском массового копирования).
  • Целевая таблица не может реплицироваться, поскольку для транзакционной репликации используются записи журнала транзакций.
  • Чтобы задать блокировку на уровне таблиц, должна быть указана подсказка TABLOCK.
  • Эти ограничения позволяют выполнять операции массового копирования с большей скоростью при экономии места в журнале транзакций. Однако при необходимости восстановления базы данных из резервной копии эти непротоколируемые операции придется повторить.

    CREATE INDEX

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

    Текстовые операции

    К текстовым операциям, которые можно выполнять как непротоколируемые операции, относятся WRITETEXT и UPDATETEXT. Чтобы активизировать выполнение этих операций без протоколирования, вам нужно просто использовать описанный выше режим BULK_LOGGED.

    Контрольные точки

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

    Контрольные точки создаются в результате запуска оператора CHECKPOINT, при отключении SQL Server с помощью оператора SHUTDOWN или с помощью Service Control Manager, а также при автоматическом запуске операции контрольной точки из SQL Server.

    Операции контрольной точки

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

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

    Интервал между контрольными точками определяется параметром конфигурирования SQL Server recovery interval. Этот параметр задается для всей системы SQL Server, а не для каждой базы данных, но контрольные точки создаются по отдельным базам данных. Этот параметр указывает, сколько минут потребует SQL Server для воспроизведения каждой базы данных в случае отказа системы. Значение 0 указывает, что интервал будет определять SQL Server (обычно он меньше 1 минуты). Для систем с большим объемом памяти, где выполняется очень много операций вставки и обновления, это принятое по умолчанию значение может приводить к созданию излишнего числа контрольных точек. В этом случае вы можете задать для этого параметра более высокое значение. Если ваши пользователи готовы ждать достаточно долго в случае отказа системы (например, 30 минут), производительность транзакций вашей системы будет выше. Значение этого параметра зависит от допустимости простоев в вашей компании и возможной частоты отказов системы.

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

    Вы можете изменять значения параметра recovery interval двумя способами: используя Enterprise Manager или с помощью Transact-SQL (T-SQL). Чтобы задать параметр recovery interval из Enterprise Manager, в левой панели щелкните правой кнопкой мыши на имени сервера, для которого хотите задать этот параметр, и выберите из контекстного меню пункт Properties (Свойства), чтобы появилось окно SQL Server Properties (Свойства SQL Server). Щелкните на вкладке Database Settings (Параметры базы данных) (рис. 32.1), и задайте нужный вам интервал (в минутах) в поле-счетчике Recovery Interval (Интервал воспроизведения).

    (рис 32.1) Окно SQL Server Properties (Параметры базы данных)

    Чтобы задать значение recovery interval с помощью T-SQL, используйте хранимую процедуру sp_configure, как это показано ниже:

    sp_configure "recovery interval", 1
    GO

    Вы увидите следующее сообщение:

    DBCC execution completed. If DBCC printed error messages,
    contact your system administrator. 
    Configuration option changed. Run the RECONFIGURE statement  
    to install.
    (Работа DBCC завершена. Если DBCC вывел сообщения об ошибках,
    обратитесь к вашему системному администратору.
    Параметр конфигурирования изменен. Для реализации выполните оператор RECONFIGURE.)

    Изменение не будет реализовано, если вы не запустите команду RECONFIGURE. Если вы уверены в правильности изменения, введите следующий оператор T-SQL:

    RECONFIGURE 
    GO

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

    Чтобы убедиться, что внесенное вами значение действует, используйте следующий оператор T-SQL:

    sp_configure "recovery interval" 
    GO

    Результаты будут выведены в следующей форме:

    name                              	     minimum 	maximum 	config_value 	run_value
    ------------------------------------------------------------------------------------------------
     recovery interval (min)                	0         32767            1               1

    Это показывает, что значение параметра recovery interval действительно было задано.

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

    Методы резервного копирования

    Существуют различные методы резервного копирования базы данных: полное и разностное резервное копирование, резервное копирование журнала транзакций, группы файлов и файла данных. Каждый из них имеет свои режимы и возможности работы. Полное резервное копирование (full backup) предусматривает резервное копирование всех данных базы данных, группы файлов или файла данных. Разностное резервное копирование (differential backup) предусматривает резервное копирование только тех данных, которые изменились с момента последнего резервного копирования. Резервное копирование журнала транзакций используется для резервного копирования и усечения журнала транзакций. (Как уже говорилось, резервное копирование журнала транзакций является определяющей задачей для DBA, поскольку данные журнала транзакций используются в сочетании с резервными копиями базы данных.) Резервное копирование групп файлов и файла данных используется для создания резервной копии определенной группы файлов или файла данных в базе данных.

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

    Полное резервное копирование

    Как уже говорилось, полное резервное копирование подразумевает резервное копирование всей базы данных. Выполняется резервное копирование всех групп файлов и файлов данных, которые являются частью этой базы данных. Если у вас несколько баз данных, то вам следует создать для всех них резервные копии. Полное резервное копирование является, видимо, наиболее распространенным методом резервного копирования баз данных небольшого и среднего размера. В зависимости от размера баз данных этот процесс может занимать очень много времени, и если для вас важен вопрос времени, то вы можете предусмотреть разностное резервное копирование или резервное копирование групп файлов, как это описано ниже. После запуска резервного копирования вы не можете приостановить его – оно продолжает выполняться, пока не будет получена резервная копия всей базы данных. (О выполнении полного резервного копирования базы данных см. раздел "Выполнение резервного копирования" далее.)

    Разностное резервное копирование

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

    Резервное копирование журнала транзакций

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

    Резервное копирование группы файлов

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

    Резервное копирование файла данных

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

    Выполнение резервного копирования

    Вы можете выполнять резервное копирование с помощью Enterprise Manager, команд T-SQL или мастера создания резервной копии базы данных Create Database Backup Wizard. Во многих случаях проще всего использовать Create Database Backup Wizard, но Enterprise Manager также несложно использовать. С другой стороны, команды T-SQL можно помещать в сценарии SQL, которые можно многократно повторять. Вам следует использовать метод, наиболее отвечающий вашим требованиям.

    Сами операции резервного копирования можно направлять на физическое устройство или логическое устройство. Физическое устройство – это компонент оборудования, такой как ленточное или дисковое устройство. Операционная система присваивает физическим устройствам имена, и для доступа к этим устройствам вы должны использовать эти имена. Поскольку эти заранее назначенные имена бывает трудно запомнить, вам может потребоваться создание для физического устройства алиаса (определенного пользователем альтернативного имени). Такой алиас называют логическим устройством. Это логическое устройство существует только в рамках SQL Server, и его можно использовать только для резервного копирования в SQL Server, чтобы ссылаться на него как на логическое устройство резервного копирования.Если вы хотите выполнять резервное копирование данных на логическое устройство, то должны создать это устройство заранее. Прежде чем перейти к методам выполнения резервного копирования, мы рассмотрим, как создается логическое устройство резервного копирования. Мы будем использовать для примеров этого раздела логическое устройство резервного копирования. (Для получения сведений о добавлении к системе физических устройств обратитесь к вашему системному администратору.)

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

    Вы можете создавать логические устройства резервного копирования, используя Enterprise Manager или T-SQL. В этом разделе мы рассмотрим оба метода. Использование нескольких устройств резервного копирования может повысить производительность. (Рекомендации по производительности резервного копирования см. в разделе "Улучшение характеристик резервного копирования" далее.)

    Создание устройств резервного копирования с помощью Enterprise Manager

    Чтобы создать устройство резервного копирования с помощью Enterprise Manager, выполните следующие шаги.

  • В левой панели Enterprise Manager раскройте папку SQL Server Group, раскройте папку сервера и затем раскройте папку Management (Управление).
  • Щелкните правой кнопкой мыши на Backup (Резервное копирование) и выберите из контекстного меню пункт New Backup Device (Создать устройство резервного копирования), чтобы появилось окно Backup Device Properties (Свойства устройства резервного копирования) (рис 32.2(рис 32.2) Окно Backup Device Properties (Свойства устройства резервного копирования)
  • Введите описательное имя для устройства резервного копирования в текстовом поле Name. Текстовое поле File name (Имя файла) заполняется автоматически. Чтобы изменить путь доступа к файлу, введите новый путь доступа или щелкните на кнопке обзора Browse [...], чтобы открыть диалоговое окно Backup Device Location (Местоположение устройства резервного копирования). В данном примере имя устройства резервного копирования – backup_dev_1. Если вы добавляете ленточное устройство, щелкните на кнопке View Contents (Просмотр содержимого), чтобы увидеть все наборы резервного копирования, которые имеются в данный момент на данном ленточном устройстве.
  • По окончании этих шагов устройство готово к использованию. Вы узнаете, как использовать устройства резервного копирования, ниже в этой лекции, когда будете изучать создание резервной копии. Отметим, что если у вас нет ленточных устройств, подсоединенных к вашей системе, то кнопка выбора Tape Drive Name (Имя ленточного устройства) недоступна.

    Создание устройств резервного копирования с помощью T-SQL

    Для создания устройства резервного копирования с помощью T-SQL используйте хранимую процедуру sp_addumpdevice. Она имеет следующий синтаксис:

    sp_addumpdevice тип_устройства, логическое_имя, физическое_имя

    Значением параметра тип_устройства может быть disk для дискового устройства, tape для ленточного устройства или pipe для подсоединения программного обеспечения сторонних форм к системе резервного копирования. Параметр логическое_имя – это имя, которое вы присваиваете данному устройству; это имя используется для ссылки на устройство в операторах BACKUP и RESTORE. Параметр физическое_имя – это имя, присвоенное системой устройству или файлу.

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

    sp_addumpdevice 'disk', 'Backup_dev_2',  
    'C:\MSSQL2K\BACKUP\Backup_dev_2.BAK'

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

    Чтобы создать резервную копию вашей базы данных на удаленной системе, вы должны сначала создать устройство резервного копирования с помощью системной хранимой процедуры sp_addumpdevice. Вы не можете создать устройство резервного копирования на удаленном сервере с помощью Enterprise Manager. Чтобы задать удаленную систему, вы должны указать в качестве физического имени полное UNC-имя, как это показано в следующем примере:

    sp_addumpdevice 'disk', 'netbackup1',
    '\\ptc4\c$\backup\netbackup1.bck'

    Создав это устройство резервного копирования, вы можете копировать на него данные с помощью Enterprise Manager или команд T-SQL.

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

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

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

    sp_addumpdevice 'disk', 'netbackup1',
    '\\100.100.100.1\c$\backup\netbackup1.bck'
    sp_addumpdevice 'disk', 'netbackup2',
    '\\100.100.200.1\c$\backup\netbackup2.bck'

    Создав эти устройства резервного копирования, вы можете копировать на них данные с помощью Enterprise Manager или операторов T-SQL.

    Резервное копирование с помощью Enterprise Manager

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

    Выполнение резервного копирования

    Для выполнения резервного копирования с помощью Enterprise Manager выполните следующие шаги.

  • Вызовите утилиту SQL Server Backup с помощью одного из следующих методов.
  • Раскройте папку сервера в левой панели Enterprise Manager и затем раскройте папку Management. Щелкните правой кнопкой мыши на Backup и выберите из контекстного меню пункт Backup A Database (Резервное копирование базы данных).
  • Раскройте папку сервера в левой панели Enterprise Manager, щелкните правой кнопкой мыши на Database, укажите в контекстном меню пункт All Tasks (Все задачи) и затем выберите команду Backup Database.
  • Раскройте папку сервера в левой панели Enterprise Manager и затем щелкните на папке Databases. В правой панели щелкните правой кнопкой мыши на базе данных, укажите в контекстном меню пункт All Tasks (Все задачи) и затем выберите команду Backup Database.

    Появится диалоговое окно SQL Server Backup (рис. 32.3).

    (рис 32.3) Вкладка General диалогового окна SQL Server Backup
  • В раскрывающемся списке Database верхней секции этого диалогового окна выберите базу данных, для которой хотите выполнить резервное копирование. (Если вы использовали третий метод на шаге 1, то имя соответствующей базы данных уже будет выбрано.) Имя резервной копии автоматически формируется на основе имени базы данных, хотя вы можете переопределить это автоматическое имя путем ввода имени резервной копии в текстовом поле Name. Вы можете также ввести описание резервной копии в текстовом поле Description. Это описание может оказаться важным для вас при восстановлении базы данных. Например, если вы создаете эту резервную копию непосредственно перед удалением какой-либо таблицы, имеет смысл включить этот факт в описание. Если резервное копирование выполняется перед загрузкой новых данных, включите эту информацию в ваше описание.
  • В секции Backup (Резервное копирование) этого диалогового окна вы должны указать тип резервного копирования. Доступные кнопки выбора будут варьироваться в зависимости от выбранной вами базы данных. Например, по умолчанию для базы данных Northwind установлен параметр Truncate log on checkpoint. (Усечение журнала транзакций при создании контрольной точки). В этом случае кнопки выбора Transaction Log и File and Filegroup недоступны для программы резервного копирования. Секция Backup содержит следующие кнопки выбора.
  • Database – Complete (База данных – Полное). Полное резервное копирование базы данных, т.е. всех данных соответствующей базы данных.
  • Database – Differential (База данных – Разностное).Разностное резервное копирование базы данных, т.е. всех данных, которые изменились с момента предыдущего резервного копирования.
  • Transaction Log (Журнал транзакций). Резервное копирование журнала транзакций; при этом также происходит усечение журнала транзакций.
  • File And Filegroup (Файл и группа файлов). Резервное копирование одного файла или группы файлов; вы должны указать этот файл или группу файлов.
  • Вы можете выбрать только один из этих типов резервного копирования. Чтобы выполнить полное резервное копирование базы данных и резервное копирование журнала транзакций, вы должны запустить эту программу резервного копирования дважды.
  • В секции Destination (Местоположение резервной копии) вы должны выбрать тип устройства для резервной копии – Tape (Лента) или Disk (Диск). Щелкнув на кнопке Add, вы можете добавлять логические или физические устройства резервного копирования. Появится диалоговое окно Select Backup Destination (Выбор местоположения резервной копии) (рис. 32.4). В этом диалоговом окне вы можете указать имя файла или выбрать устройство резервного копирования из раскрывающегося списка Backup device. Щелкните на кнопке OK, чтобы вернуться во вкладку General диалогового окна SQL Server Backup. В примере на рис. 32.3 в списке Backup to представлены два устройства. Чтобы удалить какое-либо устройство, выделите это устройство и щелкните на кнопке Remove (Удалить). Для просмотра содержимого устройства щелкните на кнопке Contents (Содержимое).

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

  • Name (Имя). Имя, выбранное тем, кто запускал резервное копирование.
  • Server (Сервер). Имя сервера, на котором выполнялось резервное копирование.
  • Database (База данных). Имя базы данных, для которой было выполнено резервное копирование.
  • (рис 32.4) Диалоговое окно Select Backup Destination
  • Date (Дата).Дата и время резервного копирования.
  • Expiration (Срок окончания действия).Срок окончания действия, указанный для резервной копии.
  • Size (Размер). Общий размер набора резервного копирования.
  • Description (Описание).Описание, заданное для резервной копии.
  • Напомним, что на одном устройстве резервного копирования можно создавать несколько резервных копий (что часто используется на практике).
  • В секции Overwrite (Перезапись) диалогового окна SQL Server Backup вы можете выбирать между перезаписью носителя (кнопка выбора Overwrite ...), такого как лента или диск, и добавлением к предыдущим данным (кнопка выбора Append...). Но если вы используете ленты и чередуете их, то вам нужно удалять предыдущую информацию. Хотя вы можете перезаписывать эту информацию, щелкнув на кнопке выбора Overwrite existing media в этом диалоговом окне, вам следует вместо этого принять за правило стирать информацию перед резервным копированием. Тем самым вы гарантируете себя от случайной перезаписи ленточного или дискового устройства.
  • В секции Schedule (Расписание) вы можете задать расписание для запуска резервного копирования в определенное время. Создание резервных копий по расписанию особенно полезно для резервного копирования журнала транзакций, которое может выполняться регулярным образом, чтобы избежать переполнения журнала транзакций. Чтобы задать расписание резервного копирования, установите флажок Schedule и затем щелкните на кнопке обзора (...), чтобы появилось диалоговое окно Edit Schedule (Редактировать расписание) (рис 32.5(рис 32.5) Диалоговое окно Edit Schedule (Редактировать расписание)
  • Введите имя расписания в текстовом поле Name. Имена расписаний позволяют вам создавать несколько расписаний, например, отдельное расписание для каждого резервного копирования.

    В секции Schedule type (Тип расписания) вы можете выбрать один из следующих типов расписания (в порядке кнопок выбора): автоматически при запуске SQL Server Agent, когда не будет занят ЦП, запускать резервное копирование один раз или повторять его. Если у вас выбран однократный запуск резервного копирования, то вы используете всплывающий календарь On date (Дата) для выбора даты резервного копирования и поле-счетчик At time (Время) для выбора времени.

    Чтобы задать расписание для периодически повторяющегося резервного копирования, щелкните на кнопке выбора Recurring (Периодически) и щелкните на кнопке Change (Изменить).

    Появится диалоговое окно Edit Recurring Job Schedule (Редактировать расписание повторяющихся заданий) (рис. 32.6). Это диалоговое окно предоставляет вам разнообразные гибкие возможности по созданию расписания. Используя вариант Daily (Ежедневно), Weekly (Еженедельно) или Monthly (Ежемесячно), вы можете указывать частоту и срок действия соответствующего задания.

    (рис 32.6) Диалоговое окно Edit Recurring Job Schedule (Редактировать расписание повторяющихся заданий)
  • Щелкните на кнопке OK, чтобы вернуться в диалоговое окно Edit Schedule, щелкните еще раз на кнопке OK, чтобы вернуться в диалоговое окно SQL Server Backup, и затем щелкните на вкладке Options (рис. 32.7). В этой вкладке вы можете указывать, нужно ли проверять носитель резервной копии по завершении резервного копирования, а также указывать необходимость и способ задания метки (заголовка) носителя резервной копии. Ниже описываются параметры этой вкладки.
  • Verify backup upon completion (Проверять резервную копию по завершении). Вызывает проверку носителя резервной копии на читаемость. Проверяется только целостность копии; этот процесс не проверяет, что резервная копия содержит соответствующие данные.
  • Eject tape after backup (Извлечь ленту из устройства после резервного копирования – только для ленточных устройств).Извлечение ленты из устройства по завершении резервного копирования. Этот флажок полезно использовать, если несколько приложений или пользователей осуществляют доступ к ленточным устройствам. Это позволяет сохранить вашу ленту от перезаписи другим пользователем.
  • Remove inactive entries from transaction log (Удалить неактивные записи из журнала транзакций – только для резервного копирования журнала транзакций).Усечение журнала транзакций после резервного копирования.
  • Check media set name and backup set expiration (Проверять имя набора носителей и дату окончания срока хранения набора резервного копирования).Указывает, что данный носитель нужно проверять и не перезаписывать, если не наступила дата окончания срока хранения.
  • Backup set will expire (Срок хранения набора резервного копирования истекает – только для ленточных устройств). Позволяет вам задавать дату окончания срока хранения данного носителя.
  • Initialize and label media (Инициализировать и пометить носитель – только для ленточных устройств). Позволяет вам задавать метку для данного носителя.
  • (рис 32.7) Вкладка Options диалогового окна SQL Server Backup
  • По окончании установки параметров щелкните на кнопке OK, чтобы перейти к выполнению сконфигурированного резервного копирования.
  • Управление резервным копированием

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

  • В левой панели Enterprise Manager раскройте папку сервера, раскройте папку Management, раскройте папку SQL Server Agent и щелкните на Jobs (Задания). Запланированные задания будут представлены в списке правой панели Enterprise Manager (рис. 32.8).
  • Чтобы удалить задание, щелкните правой кнопкой мыши на имени этого задания и выберите из контекстного меню пункт Delete (Удалить).(рис 32.8) Задания, представленные в окне Enterprise Manager
  • Для просмотра или модифицирования задания щелкните правой кнопкой мыши на имени этого задания и выберите из контекстного меню пункт Properties (Свойства), чтобы появилось окно свойств задания Properties. Внесите свои изменения, щелкните на кнопке Apply (Применить) и затем щелкните на кнопке OK.
  • Резервное копирование с помощью операторов T-SQL

    Использование операторов T-SQL для резервного копирования базы данных может оказаться поначалу чуть сложнее, чем использование Enterprise Manager. Но если вы относитесь к тем администраторам, которые предпочитают автоматизировать операции с помощью сценариев, этот метод будет для вас удобнее. Кроме того, оператор T-SQL BACKUP дает несколько больше возможностей, чем программа резервного копирования в Enterprise Manager. В этом разделе мы рассмотрим синтаксис и параметры оператора BACKUP. На самом деле существуют два оператора резервного копирования; выбор используемого оператора зависит от типа резервного копирования, которое вам нужно выполнить. Это следующие операторы:

  • BACKUP DATABASE. Используется для резервного копирования всей базы данных либо файла или группы файлов.
  • BACKUP LOG. Используется для резервного копирования журнала транзакций.
  • Поскольку эти два оператора обеспечивают в основном одни и те же возможности, мы будем рассматривать их вместе.

    Выполнение резервного копирования

    Оператор BACKUP для полного резервного копирования базы данных имеет следующий синтаксис:

    BACKUP DATABASE имя_базы_данных
    TO устройство_резервного_копирования
    [ WITH необязательные параметры ]

    Для этого оператора обязательными параметрами являются только имя базы данных и имя устройства резервного копирования. (Примеры операторов BACKUP можно найти во врезке "Использование оператора BACKUP" далее.)

    Оператор для резервного копирования файла или группы файлов имеет следующий синтаксис:

    BACKUP DATABASE имя_базы_данных
    имя_файла или имя_группы_файлов [,...n]
    TO устройство_резервного_копирования
    [ WITH необязательные параметры ]

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

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

    BACKUP LOG имя_базы_данных
    {
    [ WITH \ NO_LOG | TRUNCATE_ONLY )]
    }
    |
    {
    TO устройство_резервного_копирования
    }
    [ WITH необязательные параметры ]

    Для этого оператора обязательными параметрами являются только имя базы данных и параметр WITH NO_LOG или WITH TRUNCATE_ONLY либо имя устройства резервного копирования. Вы можете затем добавлять любые нужные вам параметры. Параметры NO_LOG и TRUNCATE ONLY является синонимами; оба указывают усечение журнала без создания его резервной копии.

    Внимание. Если вы используете любой из этих параметров в вашем операторе BACKUP LOG, то в случае отказа системы вы не сможете воспроизвести базу данных к состоянию, в котором она находилась в момент отказа, поскольку не будут сохранены записи журнала. Применение этих параметров не рекомендуется; используйте их на свое собственное усмотрение.

    Во всех трех указанных командах резервного копирования имя_базы_данных представляет базу данных, для которой будет создана резервная копия. Устройство_ резервного_копирования – это имя логического устройства резервного копирования или имя физического устройства. Если указано физическое устройство, то имени устройства должен предшествовать текст DISK =, TAPE = или PIPE = (в зависимости от типа устройства). Вы можете задать одно устройство или набор разделенных запятыми устройств, как это показано в следующих двух примерах:

    Backup_dev_1, Backup_dev_2, Backup_dev_3
    
    TAPE = '\\.\Tape0', TAPE = '\\.\Tape1', TAPE = '\\.\Tape2'

    Необязательные параметры

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

    Необязательные параметры оператора BACKUP
    Параметр Описание
    BLOCKSIZE Этот параметр указывает размер физического блока в байтах
    DESCRIPTION Этот параметр указывает текстовое описание набора резервного копирования. Его полезно использовать для поиска нужной резервной копии, с которой будет выполняться восстановление
    DIFFERENTIAL Этот параметр указывает разностное резервное копирование. Его можно использовать только при наличии полной резервной копии базы данных
    EXPIREDATE = дата RETAINDAYS = дни Параметр EXPIREDATE указывает дату, когда истекает срок действия данного набора резервного копирования (и когда его можно перезаписывать).
    RETAINDAYS указывает количество дней, соответствующих сроку действия данного набора резервного копирования
    PASSWORD = пароль Параметр PASSWORD позволяет вам задавать пароль для резервной копии, что повышает безопасность самой резервной копии
    FORMAT | NOFORMAT Параметр FORMAT указывает, что заголовок носителя должен быть перезаписан, делая тем самым недействительными первоначальные данные на этом носителе. Параметр NOFORMAT указывает, что заголовок носителя не должен перезаписываться
    INIT | NOINIT Параметр INIT указывает, что набор резервной копии должен находиться в первом файле на данном носителе, причем заголовок носителя остается без изменений, но все данные на этом носителе перезаписываются; иными словами, INIT указывает перезапись всего, чт.е. на ленте. Параметр NOINIT указывает, что данный набор резервной копии добавляется к содержимому носителя. Если вы повторно используете ленты, то вам нужно использовать этот параметр
    MEDIADESCRIPTION = текст Это текстовое поле задает описание набора носителей
    MEDIANAME= имя_носителя Указывает имя носителя
    MEDIAPASSWORD = пароль С помощью этого параметра вы можете указывать пароль для набора носителей
    NAME= имя_набора_резервной_копии Этот параметр позволяет вам задавать имя набора резервной копии
    NOSKIP | SKIP Параметр NOSKIP указывает, что прежде чем перезаписывать наборы резервных копий на данном носителе, будут проверяться даты истечения срока действия соответствующих наборов резервных копий. Параметр SKIP отключает проверку этой даты
    NO_TRUNCATE Этот параметр запрещает усечение журнала транзакций после создания резервной копии. Используется только для резервного копирования журнала транзакций
    NOUNLOAD | UNLOAD Параметр NOUNLOAD указывает, что после завершения резервного копирования носитель не будет выгружаться из устройства (например, не будет извлекаться лента). Параметр UNLOAD указывает, что по окончании резервного копирования носитель будет выгружен
    RESTART Этот параметр указывает SQL Server необходимость перезапуска резервного копирования, которое было прервано
    STATS [ = процент ] Этот параметр указывает вывод сообщения после выполнения определенного процента резервного копирования. Его полезно использовать, если вы любите следить за ходом выполнения операций

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

    Практические советы.

    Использование оператора BACKUP

    В этом разделе мы рассмотрим пару примеров использования оператора T-SQL BACKUP. Следующий оператор используется для резервного копирования файлов данных базы данных Example:

    BACKUP DATABASE Example 
    TO Backup_Dev_1, Backup_Dev_2 
    WITH 
    DESCRIPTION = "DB backup of example", 
    STATS = 5 
    GO

    Здесь устройства резервного копирования – это Backup_Dev_1 и Backup_Dev_2, а сообщение о состоянии будет выводиться после выполнения очередных 5 процентов резервного копирования. Отметим, что в этом примере задано описание резервной копии.

    Если вы будете проверять этот пример на небольшой базе данных, такой как Northwind, то вы не увидите сообщений с приращением по 5 процентов. Это будут приращения, например, в 7 процентов, 16 процентов и т.д. Дело в том, что программа резервного копирования читает и записывает за один раз более 5 процентов от объема всех данных такой базы данных. Для наборов данных большего размера за один раз будет записываться меньше 5 процентов данных и поэтому сообщения будут появляться ожидаемым образом.

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

    BACKUP LOG Example 
    TO Backup_Dev_3, Backup_Dev_4 
    WITH 
    DESCRIPTION = "DB backup of example", 
    STATS = 25 
    GO

    Здесь устройства резервного копирования – это Backup_Dev_3 и Backup_Dev_4, а сообщения о состоянии будут выводиться с интервалом в 25 процентов. В результирующем наборе будет представлен процент выполненных операций, а также результаты резервного копирования. Будет указано количество скопированных страниц, сколько времени длится резервное копирование и какова скорость (Мб/с).

    Управление резервным копированием

    Поскольку оператор T-SQL BACKUP не выполняется под управлением Enterprise Manager и, тем самым, не выполняется под управлением SQL Server Agent, вы не можете задать расписание этого задания в операторе BACKUP . Но вы можете задать расписание для оператора T-SQL BACKUP с помощью средств планирования заданий в SQL Server. После того как составлено расписание для задания, им можно управлять точно так же, как и заданиями резервного копирования в Enterprise Manager.

    Резервное копирование с помощью мастера Create Database Backup Wizard

    Теперь обратимся к третьему методу выполнения резервного копирования: использование мастера Create Database Backup Wizard.

    Выполнение резервного копирования

    Для резервного копирования с помощью мастера Create Database Backup Wizard выполните следующие шаги.

  • В окне Enterprise Manager щелкните на базе данных, для которой хотите создать резервную копию, и затем выберите из меню Tools пункт Wizards (Мастера), чтобы появилось диалоговое окно Select Wizard (Выбор мастера). В диалоговом окне Select Wizard раскройте папку Management, выберите Backup Wizard (Мастер резервного копирования) и затем щелкните на кнопке OK. Появится начальное окно мастера Create Database Backup Wizard (рис 32.9(рис 32.9) Начальное окно мастера Create Database Backup Wizard
  • Щелкните на кнопке Next, чтобы появилось окно Select Database to Backup (Выбор баз данных для резервного копирования) (рис 32.10(рис 32.11) Окно Select Database to Backup (Выбор баз данных для резервного копирования)(рис 32.10) Окно Type Name and Description for Backup (Ввод имени и описания для резервной копии)
  • Щелкните на кнопке Next, чтобы появилось окно Type Name and Description for Backup (Ввод имени и описания для резервной копии) (рис. 32.11). Здесь вы задаете имя и описание для набора резервной копии путем ввода нужного имени в текстовом поле Name и описания в текстовом поле Description. Хорошее описание поможет вам в будущем, когда у вас будет много резервных копий.
  • Щелкните на кнопке Next, чтобы появилось окно Select Type of Backup (Выбор типа резервного копирования) (рис 32.12(рис 32.12) Окно Select Type of Backup
  • Щелкните на кнопке Next, чтобы появилось окно Select Backup Destination and Action (Выбор местоположения резервной копии и действия) (рис 32.13(рис 32.13) Окно Select Backup Destination and Action (Выбор местоположения резервной копии и действия)Примечание. К сожалению, мастер Create Database Backup Wizard позволяет вам выбрать только одно устройство резервного копирования, что может резко повлиять на производительность резервного копирования. (Cм. раздел "Улучшение характеристик резервного копирования" далее.) По этой причине использование Enterprise Manager может оказаться предпочтительнее мастера Create Database Backup Wizard.
  • Щелкните на кнопке Next, чтобы появилось окно Backup Verification аnd Scheduling (Проверка резервной копии и создание расписания) (рис. 32.14). Здесь вы можете задать проверку меток носителей и дат окончания срока действия. (См. раздел "Резервное копирование с помощью Enterprise Manager".) Вы можете также запланировать резервное копирование на определенные моменты в будущем с помощью диалогового окна Edit Schedule, как это описано выше в этой лекции.
  • Щелкните на кнопке Next, чтобы появилось окно Completing the Create Database Backup Wizard (Завершение работы мастера создания резервной копии базы данных) (рис. 32.15). Проверьте информацию в текстовом поле и щелкните на кнопке Finish, чтобы запустить резервное копирование.
  • (рис 32.15) Окно Backup Verification and Scheduling (Проверка резервной копии и создание расписания)(рис 32.14) Окно Completing the Create Database Backup Wizard (Завершение работы мастера создания резервной копии базы данных)

    Управление резервным копированием

    С помощью мастера Create Database Backup Wizard вы можете только выполнять резервное копирование или создавать задание на резервное копирование (которое запускается по расписанию). Создав задание, вы должны использовать для управления этим заданием Enterprise Manager или оператора T-SQL. (Об управлении заданиями см. раздел "Резервное копирование с помощью Enterprise Manager" выше в этой лекции.)

    Слежение за резервным копированием

    При выполнении резервного копирования (с помощью Enterprise Manager, T-SQL или мастера Create Database Backup Wizard) сохраняется запись об этом резервном копировании. Эта запись сохраняется в виде строки в таблице backupfile базы данных msdb. Во время восстановления данная информация используется, чтобы определить, когда было выполнено последнее резервное копирование для базы данных. Кроме того, сохраняется такая информация, как идентификатор набора резервной копии и имена файлов, сохраненных при резервном копировании. Поэтому важно выполнять периодическое резервное копирование системных баз данных, чтобы можно было при необходимости восстановить эту информацию.

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

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

    Рекомендации по составлению расписания

    Следующие рекомендации могут помочь вам в составлении "идеального" расписания резервного копирования для вашей системы.

  • Планируйте выполнение полного резервного копирования в нерабочее время.Если ваша компания не поддерживает непрерывный цикл работы (по 24 часа 7 дней в неделю), то нерабочее время наиболее подходит для резервного копирования.
  • Разбейте расписание резервного копирования на несколько дней.Если у вас большая база данных и вы не успеваете выполнить резервное копирование в заданное время, разбейте операцию резервного копирования на части. Вы можете за один раз выполнить резервное копирование файла или группы файлов определенной части базы данных. Через несколько дней у вас будет выполнено резервное копирование всех данных.
  • Используйте разностное резервное копирование. Если у вас нет времени, чтобы выполнять полное резервное копирование каждую ночь, создавайте разностные резервные копии в течение недели, а полную резервную копию – в выходные дни.
  • Выполняйте настройку плана резервного копирования.Каждая система отличается от других систем, и каждая компания – от других компаний. Разрабатывайте расписание резервного копирования, наиболее отвечающее вашим требованиям.
  • Практические советы.

    Планирование операций резервного копирования

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

  • Небольшая система в условиях "8 на 5" (8-часовой рабочий день 5 дней в неделю). Этот тип системы обычно позволяет выполнять полное резервное копирование каждый вечер. Журнал транзакций, видимо, нужно копировать только раз в день (в зависимости от размера журнала транзакций и количества выполненных транзакций).
  • Система среднего масштаба в условиях "24 на 7". Система среднего масштаба, работающая в условиях "24 на 7" не позволяет выделить слишком много времени для резервного копирования. Однако в системе такого масштаба у вас, скорее всего, есть возможность выполнения резервного копирования в выходные дни. В следующей таблице показано, как может выглядеть расписание резервного копирования для компании среднего масштаба.
    Понедельник Разностное резервное копирование базы данных
    Вторник Разностное резервное копирование базы данных
    Среда Разностное резервное копирование базы данных
    Четверг Разностное резервное копирование базы данных
    Пятница Разностное резервное копирование базы данных
    Суббота Разностное резервное копирование базы данных
    Воскресенье Полное резервное копирование базы данных
    Все дни Резервное копирование журнала транзакций по необходимости
  • Крупная система в условиях "24 на 7" В очень крупных системах может не оказаться возможности полного резервного копирования хотя бы в один из дней недели. Компромиссное решение – разбить полное резервное копирование на несколько дней, как это показано в следующей таблице. (В приведенном расписании полное резервное копирование выполняется за два дня – в субботу и воскресенье.)
    Понедельник Разностное резервное копирование базы данных
    Вторник Разностное резервное копирование базы данных
    Среда Разностное резервное копирование базы данных
    Четверг Разностное резервное копирование базы данных
    Пятница Разностное резервное копирование базы данных
    Суббота Полное резервное копирование групп файлов
    Воскресенье Полное резервное копирование групп файлов
    Все дни Резервное копирование журнала транзакций по необходимости
  • Эта информация дает вам представление о том, как планировать резервное копирование. Поскольку все системы и требования этих систем отличаются друг от друга, только вы сами можете решить, как наилучшим образом спланировать расписание вашего резервного копирования.

    Улучшение характеристик резервного копирования

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

    Повышение производительности резервного копирования

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

  • Используйте несколько устройств резервного копирования. Использование нескольких устройств резервного копирования позволяет SQL Server выполнять некоторые операции резервного копирования параллельно. SQL Server осуществляет это путем распределения резервной копии между несколькими устройствами. Для этого SQL Server создает несколько потоков, исходя из количества файлов данных и количества устройств резервного копирования. Производительность резервного копирования также повышается за счет дополнительных потоков, используемых для записи на эти устройства. Параллельное выполнение операций снижает суммарное количество времени, необходимое для этих операций, особенно в многопроцессорной системе. Этот метод позволяет повысить производительность резервного копирования, а также процесса восстановления.
  • Используйте несколько файлов данных в базе данных.Использование нескольких файлов данных меньшего размера вместо одного большого файла позволяет SQL Server выполнять значительную часть резервного копирования параллельно. Этот метод позволяет повысить производительность резервного копирования, а также процесса восстановления.
  • Используйте несколько сегментов локальной сети для резервного копирования. Распределяя резервное копирование между несколькими сегментами локальной сети, вы можете увеличить долю пропускной способности сети, доступную для резервного копирования. Два сегмента локальной сети увеличивают пропускную способность вдвое по сравнению с одним сегментом, три сегмента – втрое, и т.д.
  • Выполняйте резервное копирование поэтапно.Чтобы повысить производительность резервного копирования, вы можете выполнять резервное копирование на диск, а затем копировать файлы дисковой резервной копии на ленту. Этот метод повышает производительность, поскольку операции на диске выполняются быстрее, чем на ленте, и это позволяет вам держать несколько последних резервных копий на диске. Этот метод повышает производительность процесса восстановления только для файлов резервного копирования, оставшихся на диске.
  • Используйте разностные резервные копии. Разностное резервное копирование повышает производительность каждого резервного копирования, но если вы используете его, то восстановление всей базы данных занимает намного больше времени (см. лекцию 33). Если у вас недостаточно времени для полного резервного копирования, этот метод может стать для вашей системы наилучшим решением. Если восстановление данных требуется редко, то это, возможно, приемлемый компромисс.
  • Дополнительные рекомендации

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

  • Сохраняйте резервные копии вне рабочего места. Если вы храните резервные копии вне рабочего места, то они, возможно, останутся целы после таких катастроф, как пожар или затопление водой. Данные резервных копий намного важнее, чем сами компьютерные системы.
  • Проверяйте резервную копию. Резервная копия не будет вечно в хорошем состоянии. Ленты могут портиться, особенно если вы многократно используете одни и те же ленты. Проверяя резервную копию (хотя бы время от времени), вы будете знать, что лента в хорошем состоянии.
  • Не используйте один и тот же носитель каждый день. Используя один и тот же носитель каждый день, вы не сможете восстановить данные, удаленные за несколько дней до вашей попытки восстановления. Чередуйте ленты с резервными копиями, чтобы иметь возможность восстановления информации хотя бы за несколько дней.
  • Ведите запись того, как происходит резервное копирование. Вы должны документировать, как выполняется резервного копирования и как восстановить систему при необходимости. Помните, вы не всегда будете на месте, чтобы самому восстановить систему.
  • Создавайте резервные копии системных таблиц. Не забывайте периодически выполнять резервное копирование системных баз данных, таких как master и msdb.
  • Эти рекомендации помогут вам в разработке вашей собственной стратегии резервного копирования. Каждая система имеет свои отличия, и потребности каждой компании тоже отличаются. И снова скажем, что вы должны разрабатывать стратегию, которая подходит именно для вас.

    Заключение

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

    Страницы:

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

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

    Терминология резервного копирования

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

    Резервное копирование и восстановление

    Операции резервного копирования (backup) и восстановления (restore) связаны друг с другом и предполагают сохранение информации базы данных для использования в будущем – аналогично операциям резервного копирования и восстановления, которые могут выполняться операционной системой. При резервном копировании данные копируются из базы данных и сохраняются в другом месте. Резервное копирование операционной системы и резервное копирование базы данных отличаются в том, что в первом случае происходит сохранение отдельных файлов, а во втором – сохранение всей базы данных. Обычно база данных совместно используется многими пользователями, в то время как многие файлы операционной системы принадлежат отдельным пользователям. Тем самым при резервном копировании базы данных создается резервная копия данных сразу всех пользователей. Поскольку SQL Server предназначен для максимально возможной непрерывной эксплуатации, процесс резервного копирования может выполняться во время работы базы данных и даже в то время, как пользователи осуществляют доступ к базе данных.

    При восстановлении данных из резервной копии они копируются назад в базу данных. Не путайте восстановление (restore) с воспроизведением (регенерацией) (recovery): это две различные операции.

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

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

    Воспроизведение

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

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

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

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

    Примечание. Поскольку журнал транзакций является определяющим компонентом для воспроизведения транзакций в случае аварии, он должен всегда располагаться на томе RAID 1 (зеркальном томе). (О RAID [дисковые матрицы] см. лекцию 5.)

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

    Примечание. Транзакция, откат которой выполняет SQL Server, идентична транзакции, которая заканчивается командой ROLLBACK. Эта транзакция аннулируется, и все соответствующие данные восстанавливаются к их исходному состоянию.

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

    Отказы системы

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

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

    Отказы оборудования

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

  • Отказ ЦП (CPU), памяти или шины (магистрали) данных. Эти отказы обычно приводят к аварийному отказу системы. После замены неисправного компонента и перезапуска системы SQL Server автоматически выполняет воспроизведение базы данных. Собственно база данных не затрагивается таким отказом, поэтому ее восстановление (с резервной копии) не требуется; SQL Server просто должен воспроизвести потерянные транзакции
  • Отказ диска. Если вы используете отказоустойчивые матрицы RAID, то отказ этого типа, возможно, вообще не повлияет на состояние базы данных. Вы должны просто отремонтировать матрицу RAID. Но при отказе всей матрицы RAID единственной альтернативой является восстановление базы данных из резервной копии и использование резервных копий журнала транзакций для воспроизведения базы данных.
  • Катастрофический отказ системы или полная потеря сервера. При разрушении всей системы из-за пожара или другой катастрофы, возможно, потребуется восстановление "с нуля". Потребуется новое оборудование, восстановление базы данных с резервной копии и воспроизведение базы данных с помощью резервных копий данных и журнала транзакций.
  • Отказы программного обеспечения

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

  • Отказы операционной системы. Если отказ этого типа происходит в подсистеме ввода-вывода, то могут быть запорчены данные на диске. Если отказ не затрагивает базу данных, требуется только воспроизведение. Если запорчена информация в базе данных, то остается только восстановление базы данных с резервной копии.
  • Отказ СУРБД (RDBMS). Возможен отказ самого SQL Server. Если отказ этого типа привел к порче данных, то должно быть выполнено восстановление базы данных с резервной копии и последующее воспроизведение. Если данные не запорчены, то для возврата системы к состоянию, в котором она находилась на момент отказа, требуется только автоматическое воспроизведение.
  • Отказ приложения.Возможен отказ приложений, что может приводить к порче данных. Если отказ этого типа привел к порче данных, то должно быть выполнено восстановление базы данных с резервной копии (как и в случае отказа СУРБД). Если данные не запорчены, то восстановление не нужно; автоматическое воспроизведение вернет систему к состоянию, в котором она находилась на момент отказа. Возможно, вам потребуется получить исправление от поставщика этого приложения, чтобы не допустить повторения отказа этого типа.
  • Примечание. Компании часто проводят опробование бета-версий SQL Server. Бета-версии программного обеспечения предназначены только для оценки и тестирования и не должны использоваться в условиях промышленной эксплуатации. Иногда бета-версии содержат ошибки и средства, которые не были проверены в полной мере. Вам следует использовать эксплуатационную версию Microsoft SQL Server 2000, прошедшую полное тестирование и готовую к промышленной эксплуатации.

    Человеческие ошибки

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

  • Потеря сервера с базой данных. К потере сервера могут приводить такие человеческие ошибки, как внезапное отключение питания или отключение сервера без закрытия SQL Server. Воспроизведение происходит автоматически при перезапуске SQL Server, но может потребовать определенного времени. Если отказ не затронул базу данных на диске, то восстановление не требуется.
  • Потеря данных. Этот тип потери данных может быть вызван, например, случайным удалением файла данных, что привело к потере базы данных. Для возврата базы данных к ее состоянию до отказа должны быть выполнены операции восстановления и воспроизведения.
  • Потеря таблицы или порча данных.Если таблица удалена по ошибке или ее данные изменены некорректным образом, то для возврата таблицы к ее исходному состоянию вы можете использовать восстановление и воспроизведение. Это может оказаться очень сложным делом, поскольку отдельную таблицу или небольшой набор данных нельзя просто восстановить из резервной копии. Пример восстановления данных после отказа этого типа приводится в лекции 33.
  • Журнальное протоколирование в SQL Server

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

    Журнал транзакций

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

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

    Поток откладываемой записи (Lazywriter Thread)

    Изменения, вносимые в базу данных, сначала вносятся в данные, которые находятся в кэше SQL Server. То, что изменения вносятся сначала в кэш, требуется в первую очередь для повышения производительности, поскольку ожидание при операциях ввода-вывода занимает много времени. Эти изменения записываются в конечном итоге на диск, но этот процесс выполняется в фоновом режиме и не виден пользователю. Поскольку модифицированные страницы хранятся в кэше, то может пройти существенный период времени, прежде чем эти страницы (их еще называют ожидающими, черновыми страницами – dirty pages) будут записаны соответствующим потоком (подпроцессом) SQL Server. Этот поток называют потоком откладываемой записи ("ленивым" потоком Этот поток использует LRU-список записи страниц, где первой в очереди записи на диск находится наиболее давно обрабатывавшаяся страница и последней является только что обрабатывавшаяся страница. Страница, которая постоянно модифицируется (и, тем самым, все время перемещается в конец этого списка), вообще может быть не записана этим потоком на диск. Подобные вещи могут увеличивать время воспроизведения, поскольку для применения изменений к таким данным потребуется прочитать много журнальных записей. Например, в большой системе с объемом RAM-памяти более 1 Гб и большим числом изменений в базе данных воспроизведение может занять несколько часов. – lazywriter thread).

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

    Последовательная запись в журнал

    Журнал транзакций содержит "историю транзакций", поэтому операции ввода-вывода для журнала транзакций – это в основном операции записи, которые обычно выполняются последовательно. В случае отката транзакций происходит чтение журнала транзакций, что приводит к нарушению последовательного характера операций ввода-вывода. Поскольку откаты происходят довольно редко (так как аварии системы случаются редко и пользователи не слишком часто отменяют транзакции), ввод-вывод для журнала транзакций имеет достаточно устойчивый характер. Вы можете существенно повысить производительность операций ввода-вывода, поместив журнал транзакций на его собственный диск или матрицу RAID (см. лекции 4 и 5). В силу исключительной важности журнала транзакций для воспроизведения базы данных вам следует защитить его с помощью дисковой матрицы RAID.

    Размер журнала транзакций

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

    Примечание. Вы можете усекать журнал транзакций без его резервного копирования, задав для параметра trunc. log on chkpt (усечение при создании контрольной точки) значение TRUE в используемой базе данных. Но после этого вы не сможете получать резервную копию журнала транзакций. В результате вы лишитесь возможности воспроизведения базы данных и поэтому данная установка не рекомендуется.

    Воспроизведение с помощью журнала транзакций

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

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

    Журнал транзакций значительно изменился после версии Microsoft SQL Server 6.5. Журнал транзакций SQL Server 2000 имеет те же характеристики, что и в Microsoft SQL Server 7. Это следующие характеристики.

  • Обработка журнала транзакций отличается от обработки обычного файла данных. При записи и чтении не используются 8-килобайтные страницы, как для файлов данных. Теперь формат страниц данных уже не используется для журнала транзакций: запись может выполняться группами любого размера. Таким образом, если потоку записи журнала требуется записать лишь небольшое количество данных, он не будет использовать для этого 8 Кб данных. При частых обновлениях системы поток записи журнала может выполнять запись крупными блоками данных (16 Кб, 32 Кб и т.д.).
  • Журнал транзакций можно сконфигурировать для автоматического увеличения по мере необходимости. Это средство позволяет добавлять при необходимости больший объем пространства, но его следует использовать с осторожностью, чтобы не допустить неконтролируемый рост журнала транзакций и использование всего диска этим журналом.
  • Для журнала транзакций теперь можно использовать несколько файлов. Эти файлы также можно сконфигурировать для автоматического роста. Для файлов журнала транзакций не используется расслоение данных (striping); они используются друг за другом. (Расслоение данных описывается в лекции 5.)
  • Журнал транзакций можно перемещать на другие системы для его воспроизведения на резервной системе. Это средство называется доставкой журнала транзакций (log shipping) и подробно описывается в следующей лекции.
  • Непротоколируемые операции

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

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

  • SELECT INTO
  • BULK COPY и программа массового копирования (BCP)
  • CREATE INDEX
  • Определенные текстовые операции
  • Ниже в этом разделе мы рассмотрим чуть подробнее операции этого списка.

    Чтобы активизировать непротоколируемые массовые операции с определенной базой данных, вы должны задать для работы этой базы данных режим воспроизведения BULK_LOGGED. Кроме этого режима, можно также задавать режимы воспроизведения FULL и SIMPLE. Эти режимы задаются с помощью команды ALTER DATABASE, как это показано здесь для базы данных Northwind:

    ALTER DATABASE Northwind
    SET RECOVERY BULK_LOGGED
    
    ALTER DATABASE Northwind
    SET RECOVERY FULL
    
    ALTER DATABASE Northwind
    SET RECOVERY SIMPLE

    При использовании режима BULK_LOGGED массовые операции, описанные в следующих разделах (за некоторыми исключениями, которые тоже описываются в следующих разделах), не протоколируются в журнале, а все остальные операции протоколируются. Если выбран режим воспроизведения FULL, то протоколируются все операции. А в случае режима SIMPLE данные можно восстанавливать только из последней резервной копии.

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

    SELECT INTO

    Оператор SELECT INTO используется для создания новой таблицы в базе данных. Поскольку оператор SELECT INTO нельзя использовать для выборки данных в существующий объект, его можно использовать только для создания данных, но не для обновления данных. Этот процесс создания можно легко повторить; поэтому операции SELECT INTO вполне подходят для выполнения как непротоколируемые операции.

    BULK COPY и программа BCP

    Чтобы операции BULK COPY и BCP можно было выполнять как непротоколируемые операции, они должны отвечать следующим требованиям.

  • Для параметра базы данных select into/bulkcopy должно быть задано значение TRUE.
  • Целевая таблица не может иметь никаких индексов (за исключением случаев, когда они является пустыми перед запуском массового копирования).
  • Целевая таблица не может реплицироваться, поскольку для транзакционной репликации используются записи журнала транзакций.
  • Чтобы задать блокировку на уровне таблиц, должна быть указана подсказка TABLOCK.
  • Эти ограничения позволяют выполнять операции массового копирования с большей скоростью при экономии места в журнале транзакций. Однако при необходимости восстановления базы данных из резервной копии эти непротоколируемые операции придется повторить.

    CREATE INDEX

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

    Текстовые операции

    К текстовым операциям, которые можно выполнять как непротоколируемые операции, относятся WRITETEXT и UPDATETEXT. Чтобы активизировать выполнение этих операций без протоколирования, вам нужно просто использовать описанный выше режим BULK_LOGGED.

    Контрольные точки

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

    Контрольные точки создаются в результате запуска оператора CHECKPOINT, при отключении SQL Server с помощью оператора SHUTDOWN или с помощью Service Control Manager, а также при автоматическом запуске операции контрольной точки из SQL Server.

    Операции контрольной точки

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

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

    Интервал между контрольными точками определяется параметром конфигурирования SQL Server recovery interval. Этот параметр задается для всей системы SQL Server, а не для каждой базы данных, но контрольные точки создаются по отдельным базам данных. Этот параметр указывает, сколько минут потребует SQL Server для воспроизведения каждой базы данных в случае отказа системы. Значение 0 указывает, что интервал будет определять SQL Server (обычно он меньше 1 минуты). Для систем с большим объемом памяти, где выполняется очень много операций вставки и обновления, это принятое по умолчанию значение может приводить к созданию излишнего числа контрольных точек. В этом случае вы можете задать для этого параметра более высокое значение. Если ваши пользователи готовы ждать достаточно долго в случае отказа системы (например, 30 минут), производительность транзакций вашей системы будет выше. Значение этого параметра зависит от допустимости простоев в вашей компании и возможной частоты отказов системы.

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

    Вы можете изменять значения параметра recovery interval двумя способами: используя Enterprise Manager или с помощью Transact-SQL (T-SQL). Чтобы задать параметр recovery interval из Enterprise Manager, в левой панели щелкните правой кнопкой мыши на имени сервера, для которого хотите задать этот параметр, и выберите из контекстного меню пункт Properties (Свойства), чтобы появилось окно SQL Server Properties (Свойства SQL Server). Щелкните на вкладке Database Settings (Параметры базы данных) (рис. 32.1), и задайте нужный вам интервал (в минутах) в поле-счетчике Recovery Interval (Интервал воспроизведения).

    (рис 32.1) Окно SQL Server Properties (Параметры базы данных)

    Чтобы задать значение recovery interval с помощью T-SQL, используйте хранимую процедуру sp_configure, как это показано ниже:

    sp_configure "recovery interval", 1
    GO

    Вы увидите следующее сообщение:

    DBCC execution completed. If DBCC printed error messages,
    contact your system administrator. 
    Configuration option changed. Run the RECONFIGURE statement  
    to install.
    (Работа DBCC завершена. Если DBCC вывел сообщения об ошибках,
    обратитесь к вашему системному администратору.
    Параметр конфигурирования изменен. Для реализации выполните оператор RECONFIGURE.)

    Изменение не будет реализовано, если вы не запустите команду RECONFIGURE. Если вы уверены в правильности изменения, введите следующий оператор T-SQL:

    RECONFIGURE 
    GO

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

    Чтобы убедиться, что внесенное вами значение действует, используйте следующий оператор T-SQL:

    sp_configure "recovery interval" 
    GO

    Результаты будут выведены в следующей форме:

    name                              	     minimum 	maximum 	config_value 	run_value
    ------------------------------------------------------------------------------------------------
     recovery interval (min)                	0         32767            1               1

    Это показывает, что значение параметра recovery interval действительно было задано.

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

    Методы резервного копирования

    Существуют различные методы резервного копирования базы данных: полное и разностное резервное копирование, резервное копирование журнала транзакций, группы файлов и файла данных. Каждый из них имеет свои режимы и возможности работы. Полное резервное копирование (full backup) предусматривает резервное копирование всех данных базы данных, группы файлов или файла данных. Разностное резервное копирование (differential backup) предусматривает резервное копирование только тех данных, которые изменились с момента последнего резервного копирования. Резервное копирование журнала транзакций используется для резервного копирования и усечения журнала транзакций. (Как уже говорилось, резервное копирование журнала транзакций является определяющей задачей для DBA, поскольку данные журнала транзакций используются в сочетании с резервными копиями базы данных.) Резервное копирование групп файлов и файла данных используется для создания резервной копии определенной группы файлов или файла данных в базе данных.

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

    Полное резервное копирование

    Как уже говорилось, полное резервное копирование подразумевает резервное копирование всей базы данных. Выполняется резервное копирование всех групп файлов и файлов данных, которые являются частью этой базы данных. Если у вас несколько баз данных, то вам следует создать для всех них резервные копии. Полное резервное копирование является, видимо, наиболее распространенным методом резервного копирования баз данных небольшого и среднего размера. В зависимости от размера баз данных этот процесс может занимать очень много времени, и если для вас важен вопрос времени, то вы можете предусмотреть разностное резервное копирование или резервное копирование групп файлов, как это описано ниже. После запуска резервного копирования вы не можете приостановить его – оно продолжает выполняться, пока не будет получена резервная копия всей базы данных. (О выполнении полного резервного копирования базы данных см. раздел "Выполнение резервного копирования" далее.)

    Разностное резервное копирование

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

    Резервное копирование журнала транзакций

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

    Резервное копирование группы файлов

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

    Резервное копирование файла данных

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

    Выполнение резервного копирования

    Вы можете выполнять резервное копирование с помощью Enterprise Manager, команд T-SQL или мастера создания резервной копии базы данных Create Database Backup Wizard. Во многих случаях проще всего использовать Create Database Backup Wizard, но Enterprise Manager также несложно использовать. С другой стороны, команды T-SQL можно помещать в сценарии SQL, которые можно многократно повторять. Вам следует использовать метод, наиболее отвечающий вашим требованиям.

    Сами операции резервного копирования можно направлять на физическое устройство или логическое устройство. Физическое устройство – это компонент оборудования, такой как ленточное или дисковое устройство. Операционная система присваивает физическим устройствам имена, и для доступа к этим устройствам вы должны использовать эти имена. Поскольку эти заранее назначенные имена бывает трудно запомнить, вам может потребоваться создание для физического устройства алиаса (определенного пользователем альтернативного имени). Такой алиас называют логическим устройством. Это логическое устройство существует только в рамках SQL Server, и его можно использовать только для резервного копирования в SQL Server, чтобы ссылаться на него как на логическое устройство резервного копирования.Если вы хотите выполнять резервное копирование данных на логическое устройство, то должны создать это устройство заранее. Прежде чем перейти к методам выполнения резервного копирования, мы рассмотрим, как создается логическое устройство резервного копирования. Мы будем использовать для примеров этого раздела логическое устройство резервного копирования. (Для получения сведений о добавлении к системе физических устройств обратитесь к вашему системному администратору.)

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

    Вы можете создавать логические устройства резервного копирования, используя Enterprise Manager или T-SQL. В этом разделе мы рассмотрим оба метода. Использование нескольких устройств резервного копирования может повысить производительность. (Рекомендации по производительности резервного копирования см. в разделе "Улучшение характеристик резервного копирования" далее.)

    Создание устройств резервного копирования с помощью Enterprise Manager

    Чтобы создать устройство резервного копирования с помощью Enterprise Manager, выполните следующие шаги.

  • В левой панели Enterprise Manager раскройте папку SQL Server Group, раскройте папку сервера и затем раскройте папку Management (Управление).
  • Щелкните правой кнопкой мыши на Backup (Резервное копирование) и выберите из контекстного меню пункт New Backup Device (Создать устройство резервного копирования), чтобы появилось окно Backup Device Properties (Свойства устройства резервного копирования) (рис 32.2(рис 32.2) Окно Backup Device Properties (Свойства устройства резервного копирования)
  • Введите описательное имя для устройства резервного копирования в текстовом поле Name. Текстовое поле File name (Имя файла) заполняется автоматически. Чтобы изменить путь доступа к файлу, введите новый путь доступа или щелкните на кнопке обзора Browse [...], чтобы открыть диалоговое окно Backup Device Location (Местоположение устройства резервного копирования). В данном примере имя устройства резервного копирования – backup_dev_1. Если вы добавляете ленточное устройство, щелкните на кнопке View Contents (Просмотр содержимого), чтобы увидеть все наборы резервного копирования, которые имеются в данный момент на данном ленточном устройстве.
  • По окончании этих шагов устройство готово к использованию. Вы узнаете, как использовать устройства резервного копирования, ниже в этой лекции, когда будете изучать создание резервной копии. Отметим, что если у вас нет ленточных устройств, подсоединенных к вашей системе, то кнопка выбора Tape Drive Name (Имя ленточного устройства) недоступна.

    Создание устройств резервного копирования с помощью T-SQL

    Для создания устройства резервного копирования с помощью T-SQL используйте хранимую процедуру sp_addumpdevice. Она имеет следующий синтаксис:

    sp_addumpdevice тип_устройства, логическое_имя, физическое_имя

    Значением параметра тип_устройства может быть disk для дискового устройства, tape для ленточного устройства или pipe для подсоединения программного обеспечения сторонних форм к системе резервного копирования. Параметр логическое_имя – это имя, которое вы присваиваете данному устройству; это имя используется для ссылки на устройство в операторах BACKUP и RESTORE. Параметр физическое_имя – это имя, присвоенное системой устройству или файлу.

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

    sp_addumpdevice 'disk', 'Backup_dev_2',  
    'C:\MSSQL2K\BACKUP\Backup_dev_2.BAK'

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

    Чтобы создать резервную копию вашей базы данных на удаленной системе, вы должны сначала создать устройство резервного копирования с помощью системной хранимой процедуры sp_addumpdevice. Вы не можете создать устройство резервного копирования на удаленном сервере с помощью Enterprise Manager. Чтобы задать удаленную систему, вы должны указать в качестве физического имени полное UNC-имя, как это показано в следующем примере:

    sp_addumpdevice 'disk', 'netbackup1',
    '\\ptc4\c$\backup\netbackup1.bck'

    Создав это устройство резервного копирования, вы можете копировать на него данные с помощью Enterprise Manager или команд T-SQL.

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

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

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

    sp_addumpdevice 'disk', 'netbackup1',
    '\\100.100.100.1\c$\backup\netbackup1.bck'
    sp_addumpdevice 'disk', 'netbackup2',
    '\\100.100.200.1\c$\backup\netbackup2.bck'

    Создав эти устройства резервного копирования, вы можете копировать на них данные с помощью Enterprise Manager или операторов T-SQL.

    Резервное копирование с помощью Enterprise Manager

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

    Выполнение резервного копирования

    Для выполнения резервного копирования с помощью Enterprise Manager выполните следующие шаги.

  • Вызовите утилиту SQL Server Backup с помощью одного из следующих методов.
  • Раскройте папку сервера в левой панели Enterprise Manager и затем раскройте папку Management. Щелкните правой кнопкой мыши на Backup и выберите из контекстного меню пункт Backup A Database (Резервное копирование базы данных).
  • Раскройте папку сервера в левой панели Enterprise Manager, щелкните правой кнопкой мыши на Database, укажите в контекстном меню пункт All Tasks (Все задачи) и затем выберите команду Backup Database.
  • Раскройте папку сервера в левой панели Enterprise Manager и затем щелкните на папке Databases. В правой панели щелкните правой кнопкой мыши на базе данных, укажите в контекстном меню пункт All Tasks (Все задачи) и затем выберите команду Backup Database.

    Появится диалоговое окно SQL Server Backup (рис. 32.3).

    (рис 32.3) Вкладка General диалогового окна SQL Server Backup
  • В раскрывающемся списке Database верхней секции этого диалогового окна выберите базу данных, для которой хотите выполнить резервное копирование. (Если вы использовали третий метод на шаге 1, то имя соответствующей базы данных уже будет выбрано.) Имя резервной копии автоматически формируется на основе имени базы данных, хотя вы можете переопределить это автоматическое имя путем ввода имени резервной копии в текстовом поле Name. Вы можете также ввести описание резервной копии в текстовом поле Description. Это описание может оказаться важным для вас при восстановлении базы данных. Например, если вы создаете эту резервную копию непосредственно перед удалением какой-либо таблицы, имеет смысл включить этот факт в описание. Если резервное копирование выполняется перед загрузкой новых данных, включите эту информацию в ваше описание.
  • В секции Backup (Резервное копирование) этого диалогового окна вы должны указать тип резервного копирования. Доступные кнопки выбора будут варьироваться в зависимости от выбранной вами базы данных. Например, по умолчанию для базы данных Northwind установлен параметр Truncate log on checkpoint. (Усечение журнала транзакций при создании контрольной точки). В этом случае кнопки выбора Transaction Log и File and Filegroup недоступны для программы резервного копирования. Секция Backup содержит следующие кнопки выбора.
  • Database – Complete (База данных – Полное). Полное резервное копирование базы данных, т.е. всех данных соответствующей базы данных.
  • Database – Differential (База данных – Разностное).Разностное резервное копирование базы данных, т.е. всех данных, которые изменились с момента предыдущего резервного копирования.
  • Transaction Log (Журнал транзакций). Резервное копирование журнала транзакций; при этом также происходит усечение журнала транзакций.
  • File And Filegroup (Файл и группа файлов). Резервное копирование одного файла или группы файлов; вы должны указать этот файл или группу файлов.
  • Вы можете выбрать только один из этих типов резервного копирования. Чтобы выполнить полное резервное копирование базы данных и резервное копирование журнала транзакций, вы должны запустить эту программу резервного копирования дважды.
  • В секции Destination (Местоположение резервной копии) вы должны выбрать тип устройства для резервной копии – Tape (Лента) или Disk (Диск). Щелкнув на кнопке Add, вы можете добавлять логические или физические устройства резервного копирования. Появится диалоговое окно Select Backup Destination (Выбор местоположения резервной копии) (рис. 32.4). В этом диалоговом окне вы можете указать имя файла или выбрать устройство резервного копирования из раскрывающегося списка Backup device. Щелкните на кнопке OK, чтобы вернуться во вкладку General диалогового окна SQL Server Backup. В примере на рис. 32.3 в списке Backup to представлены два устройства. Чтобы удалить какое-либо устройство, выделите это устройство и щелкните на кнопке Remove (Удалить). Для просмотра содержимого устройства щелкните на кнопке Contents (Содержимое).

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

  • Name (Имя). Имя, выбранное тем, кто запускал резервное копирование.
  • Server (Сервер). Имя сервера, на котором выполнялось резервное копирование.
  • Database (База данных). Имя базы данных, для которой было выполнено резервное копирование.
  • (рис 32.4) Диалоговое окно Select Backup Destination
  • Date (Дата).Дата и время резервного копирования.
  • Expiration (Срок окончания действия).Срок окончания действия, указанный для резервной копии.
  • Size (Размер). Общий размер набора резервного копирования.
  • Description (Описание).Описание, заданное для резервной копии.
  • Напомним, что на одном устройстве резервного копирования можно создавать несколько резервных копий (что часто используется на практике).
  • В секции Overwrite (Перезапись) диалогового окна SQL Server Backup вы можете выбирать между перезаписью носителя (кнопка выбора Overwrite ...), такого как лента или диск, и добавлением к предыдущим данным (кнопка выбора Append...). Но если вы используете ленты и чередуете их, то вам нужно удалять предыдущую информацию. Хотя вы можете перезаписывать эту информацию, щелкнув на кнопке выбора Overwrite existing media в этом диалоговом окне, вам следует вместо этого принять за правило стирать информацию перед резервным копированием. Тем самым вы гарантируете себя от случайной перезаписи ленточного или дискового устройства.
  • В секции Schedule (Расписание) вы можете задать расписание для запуска резервного копирования в определенное время. Создание резервных копий по расписанию особенно полезно для резервного копирования журнала транзакций, которое может выполняться регулярным образом, чтобы избежать переполнения журнала транзакций. Чтобы задать расписание резервного копирования, установите флажок Schedule и затем щелкните на кнопке обзора (...), чтобы появилось диалоговое окно Edit Schedule (Редактировать расписание) (рис 32.5(рис 32.5) Диалоговое окно Edit Schedule (Редактировать расписание)
  • Введите имя расписания в текстовом поле Name. Имена расписаний позволяют вам создавать несколько расписаний, например, отдельное расписание для каждого резервного копирования.

    В секции Schedule type (Тип расписания) вы можете выбрать один из следующих типов расписания (в порядке кнопок выбора): автоматически при запуске SQL Server Agent, когда не будет занят ЦП, запускать резервное копирование один раз или повторять его. Если у вас выбран однократный запуск резервного копирования, то вы используете всплывающий календарь On date (Дата) для выбора даты резервного копирования и поле-счетчик At time (Время) для выбора времени.

    Чтобы задать расписание для периодически повторяющегося резервного копирования, щелкните на кнопке выбора Recurring (Периодически) и щелкните на кнопке Change (Изменить).

    Появится диалоговое окно Edit Recurring Job Schedule (Редактировать расписание повторяющихся заданий) (рис. 32.6). Это диалоговое окно предоставляет вам разнообразные гибкие возможности по созданию расписания. Используя вариант Daily (Ежедневно), Weekly (Еженедельно) или Monthly (Ежемесячно), вы можете указывать частоту и срок действия соответствующего задания.

    (рис 32.6) Диалоговое окно Edit Recurring Job Schedule (Редактировать расписание повторяющихся заданий)
  • Щелкните на кнопке OK, чтобы вернуться в диалоговое окно Edit Schedule, щелкните еще раз на кнопке OK, чтобы вернуться в диалоговое окно SQL Server Backup, и затем щелкните на вкладке Options (рис. 32.7). В этой вкладке вы можете указывать, нужно ли проверять носитель резервной копии по завершении резервного копирования, а также указывать необходимость и способ задания метки (заголовка) носителя резервной копии. Ниже описываются параметры этой вкладки.
  • Verify backup upon completion (Проверять резервную копию по завершении). Вызывает проверку носителя резервной копии на читаемость. Проверяется только целостность копии; этот процесс не проверяет, что резервная копия содержит соответствующие данные.
  • Eject tape after backup (Извлечь ленту из устройства после резервного копирования – только для ленточных устройств).Извлечение ленты из устройства по завершении резервного копирования. Этот флажок полезно использовать, если несколько приложений или пользователей осуществляют доступ к ленточным устройствам. Это позволяет сохранить вашу ленту от перезаписи другим пользователем.
  • Remove inactive entries from transaction log (Удалить неактивные записи из журнала транзакций – только для резервного копирования журнала транзакций).Усечение журнала транзакций после резервного копирования.
  • Check media set name and backup set expiration (Проверять имя набора носителей и дату окончания срока хранения набора резервного копирования).Указывает, что данный носитель нужно проверять и не перезаписывать, если не наступила дата окончания срока хранения.
  • Backup set will expire (Срок хранения набора резервного копирования истекает – только для ленточных устройств). Позволяет вам задавать дату окончания срока хранения данного носителя.
  • Initialize and label media (Инициализировать и пометить носитель – только для ленточных устройств). Позволяет вам задавать метку для данного носителя.
  • (рис 32.7) Вкладка Options диалогового окна SQL Server Backup
  • По окончании установки параметров щелкните на кнопке OK, чтобы перейти к выполнению сконфигурированного резервного копирования.
  • Управление резервным копированием

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

  • В левой панели Enterprise Manager раскройте папку сервера, раскройте папку Management, раскройте папку SQL Server Agent и щелкните на Jobs (Задания). Запланированные задания будут представлены в списке правой панели Enterprise Manager (рис. 32.8).
  • Чтобы удалить задание, щелкните правой кнопкой мыши на имени этого задания и выберите из контекстного меню пункт Delete (Удалить).(рис 32.8) Задания, представленные в окне Enterprise Manager
  • Для просмотра или модифицирования задания щелкните правой кнопкой мыши на имени этого задания и выберите из контекстного меню пункт Properties (Свойства), чтобы появилось окно свойств задания Properties. Внесите свои изменения, щелкните на кнопке Apply (Применить) и затем щелкните на кнопке OK.
  • Резервное копирование с помощью операторов T-SQL

    Использование операторов T-SQL для резервного копирования базы данных может оказаться поначалу чуть сложнее, чем использование Enterprise Manager. Но если вы относитесь к тем администраторам, которые предпочитают автоматизировать операции с помощью сценариев, этот метод будет для вас удобнее. Кроме того, оператор T-SQL BACKUP дает несколько больше возможностей, чем программа резервного копирования в Enterprise Manager. В этом разделе мы рассмотрим синтаксис и параметры оператора BACKUP. На самом деле существуют два оператора резервного копирования; выбор используемого оператора зависит от типа резервного копирования, которое вам нужно выполнить. Это следующие операторы:

  • BACKUP DATABASE. Используется для резервного копирования всей базы данных либо файла или группы файлов.
  • BACKUP LOG. Используется для резервного копирования журнала транзакций.
  • Поскольку эти два оператора обеспечивают в основном одни и те же возможности, мы будем рассматривать их вместе.

    Выполнение резервного копирования

    Оператор BACKUP для полного резервного копирования базы данных имеет следующий синтаксис:

    BACKUP DATABASE имя_базы_данных
    TO устройство_резервного_копирования
    [ WITH необязательные параметры ]

    Для этого оператора обязательными параметрами являются только имя базы данных и имя устройства резервного копирования. (Примеры операторов BACKUP можно найти во врезке "Использование оператора BACKUP" далее.)

    Оператор для резервного копирования файла или группы файлов имеет следующий синтаксис:

    BACKUP DATABASE имя_базы_данных
    имя_файла или имя_группы_файлов [,...n]
    TO устройство_резервного_копирования
    [ WITH необязательные параметры ]

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

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

    BACKUP LOG имя_базы_данных
    {
    [ WITH \ NO_LOG | TRUNCATE_ONLY )]
    }
    |
    {
    TO устройство_резервного_копирования
    }
    [ WITH необязательные параметры ]

    Для этого оператора обязательными параметрами являются только имя базы данных и параметр WITH NO_LOG или WITH TRUNCATE_ONLY либо имя устройства резервного копирования. Вы можете затем добавлять любые нужные вам параметры. Параметры NO_LOG и TRUNCATE ONLY является синонимами; оба указывают усечение журнала без создания его резервной копии.

    Внимание. Если вы используете любой из этих параметров в вашем операторе BACKUP LOG, то в случае отказа системы вы не сможете воспроизвести базу данных к состоянию, в котором она находилась в момент отказа, поскольку не будут сохранены записи журнала. Применение этих параметров не рекомендуется; используйте их на свое собственное усмотрение.

    Во всех трех указанных командах резервного копирования имя_базы_данных представляет базу данных, для которой будет создана резервная копия. Устройство_ резервного_копирования – это имя логического устройства резервного копирования или имя физического устройства. Если указано физическое устройство, то имени устройства должен предшествовать текст DISK =, TAPE = или PIPE = (в зависимости от типа устройства). Вы можете задать одно устройство или набор разделенных запятыми устройств, как это показано в следующих двух примерах:

    Backup_dev_1, Backup_dev_2, Backup_dev_3
    
    TAPE = '\\.\Tape0', TAPE = '\\.\Tape1', TAPE = '\\.\Tape2'

    Необязательные параметры

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

    Необязательные параметры оператора BACKUP
    Параметр Описание
    BLOCKSIZE Этот параметр указывает размер физического блока в байтах
    DESCRIPTION Этот параметр указывает текстовое описание набора резервного копирования. Его полезно использовать для поиска нужной резервной копии, с которой будет выполняться восстановление
    DIFFERENTIAL Этот параметр указывает разностное резервное копирование. Его можно использовать только при наличии полной резервной копии базы данных
    EXPIREDATE = дата RETAINDAYS = дни Параметр EXPIREDATE указывает дату, когда истекает срок действия данного набора резервного копирования (и когда его можно перезаписывать).
    RETAINDAYS указывает количество дней, соответствующих сроку действия данного набора резервного копирования
    PASSWORD = пароль Параметр PASSWORD позволяет вам задавать пароль для резервной копии, что повышает безопасность самой резервной копии
    FORMAT | NOFORMAT Параметр FORMAT указывает, что заголовок носителя должен быть перезаписан, делая тем самым недействительными первоначальные данные на этом носителе. Параметр NOFORMAT указывает, что заголовок носителя не должен перезаписываться
    INIT | NOINIT Параметр INIT указывает, что набор резервной копии должен находиться в первом файле на данном носителе, причем заголовок носителя остается без изменений, но все данные на этом носителе перезаписываются; иными словами, INIT указывает перезапись всего, чт.е. на ленте. Параметр NOINIT указывает, что данный набор резервной копии добавляется к содержимому носителя. Если вы повторно используете ленты, то вам нужно использовать этот параметр
    MEDIADESCRIPTION = текст Это текстовое поле задает описание набора носителей
    MEDIANAME= имя_носителя Указывает имя носителя
    MEDIAPASSWORD = пароль С помощью этого параметра вы можете указывать пароль для набора носителей
    NAME= имя_набора_резервной_копии Этот параметр позволяет вам задавать имя набора резервной копии
    NOSKIP | SKIP Параметр NOSKIP указывает, что прежде чем перезаписывать наборы резервных копий на данном носителе, будут проверяться даты истечения срока действия соответствующих наборов резервных копий. Параметр SKIP отключает проверку этой даты
    NO_TRUNCATE Этот параметр запрещает усечение журнала транзакций после создания резервной копии. Используется только для резервного копирования журнала транзакций
    NOUNLOAD | UNLOAD Параметр NOUNLOAD указывает, что после завершения резервного копирования носитель не будет выгружаться из устройства (например, не будет извлекаться лента). Параметр UNLOAD указывает, что по окончании резервного копирования носитель будет выгружен
    RESTART Этот параметр указывает SQL Server необходимость перезапуска резервного копирования, которое было прервано
    STATS [ = процент ] Этот параметр указывает вывод сообщения после выполнения определенного процента резервного копирования. Его полезно использовать, если вы любите следить за ходом выполнения операций

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

    Практические советы.

    Использование оператора BACKUP

    В этом разделе мы рассмотрим пару примеров использования оператора T-SQL BACKUP. Следующий оператор используется для резервного копирования файлов данных базы данных Example:

    BACKUP DATABASE Example 
    TO Backup_Dev_1, Backup_Dev_2 
    WITH 
    DESCRIPTION = "DB backup of example", 
    STATS = 5 
    GO

    Здесь устройства резервного копирования – это Backup_Dev_1 и Backup_Dev_2, а сообщение о состоянии будет выводиться после выполнения очередных 5 процентов резервного копирования. Отметим, что в этом примере задано описание резервной копии.

    Если вы будете проверять этот пример на небольшой базе данных, такой как Northwind, то вы не увидите сообщений с приращением по 5 процентов. Это будут приращения, например, в 7 процентов, 16 процентов и т.д. Дело в том, что программа резервного копирования читает и записывает за один раз более 5 процентов от объема всех данных такой базы данных. Для наборов данных большего размера за один раз будет записываться меньше 5 процентов данных и поэтому сообщения будут появляться ожидаемым образом.

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

    BACKUP LOG Example 
    TO Backup_Dev_3, Backup_Dev_4 
    WITH 
    DESCRIPTION = "DB backup of example", 
    STATS = 25 
    GO

    Здесь устройства резервного копирования – это Backup_Dev_3 и Backup_Dev_4, а сообщения о состоянии будут выводиться с интервалом в 25 процентов. В результирующем наборе будет представлен процент выполненных операций, а также результаты резервного копирования. Будет указано количество скопированных страниц, сколько времени длится резервное копирование и какова скорость (Мб/с).

    Управление резервным копированием

    Поскольку оператор T-SQL BACKUP не выполняется под управлением Enterprise Manager и, тем самым, не выполняется под управлением SQL Server Agent, вы не можете задать расписание этого задания в операторе BACKUP . Но вы можете задать расписание для оператора T-SQL BACKUP с помощью средств планирования заданий в SQL Server. После того как составлено расписание для задания, им можно управлять точно так же, как и заданиями резервного копирования в Enterprise Manager.

    Резервное копирование с помощью мастера Create Database Backup Wizard

    Теперь обратимся к третьему методу выполнения резервного копирования: использование мастера Create Database Backup Wizard.

    Выполнение резервного копирования

    Для резервного копирования с помощью мастера Create Database Backup Wizard выполните следующие шаги.

  • В окне Enterprise Manager щелкните на базе данных, для которой хотите создать резервную копию, и затем выберите из меню Tools пункт Wizards (Мастера), чтобы появилось диалоговое окно Select Wizard (Выбор мастера). В диалоговом окне Select Wizard раскройте папку Management, выберите Backup Wizard (Мастер резервного копирования) и затем щелкните на кнопке OK. Появится начальное окно мастера Create Database Backup Wizard (рис 32.9(рис 32.9) Начальное окно мастера Create Database Backup Wizard
  • Щелкните на кнопке Next, чтобы появилось окно Select Database to Backup (Выбор баз данных для резервного копирования) (рис 32.10(рис 32.11) Окно Select Database to Backup (Выбор баз данных для резервного копирования)(рис 32.10) Окно Type Name and Description for Backup (Ввод имени и описания для резервной копии)
  • Щелкните на кнопке Next, чтобы появилось окно Type Name and Description for Backup (Ввод имени и описания для резервной копии) (рис. 32.11). Здесь вы задаете имя и описание для набора резервной копии путем ввода нужного имени в текстовом поле Name и описания в текстовом поле Description. Хорошее описание поможет вам в будущем, когда у вас будет много резервных копий.
  • Щелкните на кнопке Next, чтобы появилось окно Select Type of Backup (Выбор типа резервного копирования) (рис 32.12(рис 32.12) Окно Select Type of Backup
  • Щелкните на кнопке Next, чтобы появилось окно Select Backup Destination and Action (Выбор местоположения резервной копии и действия) (рис 32.13(рис 32.13) Окно Select Backup Destination and Action (Выбор местоположения резервной копии и действия)Примечание. К сожалению, мастер Create Database Backup Wizard позволяет вам выбрать только одно устройство резервного копирования, что может резко повлиять на производительность резервного копирования. (Cм. раздел "Улучшение характеристик резервного копирования" далее.) По этой причине использование Enterprise Manager может оказаться предпочтительнее мастера Create Database Backup Wizard.
  • Щелкните на кнопке Next, чтобы появилось окно Backup Verification аnd Scheduling (Проверка резервной копии и создание расписания) (рис. 32.14). Здесь вы можете задать проверку меток носителей и дат окончания срока действия. (См. раздел "Резервное копирование с помощью Enterprise Manager".) Вы можете также запланировать резервное копирование на определенные моменты в будущем с помощью диалогового окна Edit Schedule, как это описано выше в этой лекции.
  • Щелкните на кнопке Next, чтобы появилось окно Completing the Create Database Backup Wizard (Завершение работы мастера создания резервной копии базы данных) (рис. 32.15). Проверьте информацию в текстовом поле и щелкните на кнопке Finish, чтобы запустить резервное копирование.
  • (рис 32.15) Окно Backup Verification and Scheduling (Проверка резервной копии и создание расписания)(рис 32.14) Окно Completing the Create Database Backup Wizard (Завершение работы мастера создания резервной копии базы данных)

    Управление резервным копированием

    С помощью мастера Create Database Backup Wizard вы можете только выполнять резервное копирование или создавать задание на резервное копирование (которое запускается по расписанию). Создав задание, вы должны использовать для управления этим заданием Enterprise Manager или оператора T-SQL. (Об управлении заданиями см. раздел "Резервное копирование с помощью Enterprise Manager" выше в этой лекции.)

    Слежение за резервным копированием

    При выполнении резервного копирования (с помощью Enterprise Manager, T-SQL или мастера Create Database Backup Wizard) сохраняется запись об этом резервном копировании. Эта запись сохраняется в виде строки в таблице backupfile базы данных msdb. Во время восстановления данная информация используется, чтобы определить, когда было выполнено последнее резервное копирование для базы данных. Кроме того, сохраняется такая информация, как идентификатор набора резервной копии и имена файлов, сохраненных при резервном копировании. Поэтому важно выполнять периодическое резервное копирование системных баз данных, чтобы можно было при необходимости восстановить эту информацию.

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

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

    Рекомендации по составлению расписания

    Следующие рекомендации могут помочь вам в составлении "идеального" расписания резервного копирования для вашей системы.

  • Планируйте выполнение полного резервного копирования в нерабочее время.Если ваша компания не поддерживает непрерывный цикл работы (по 24 часа 7 дней в неделю), то нерабочее время наиболее подходит для резервного копирования.
  • Разбейте расписание резервного копирования на несколько дней.Если у вас большая база данных и вы не успеваете выполнить резервное копирование в заданное время, разбейте операцию резервного копирования на части. Вы можете за один раз выполнить резервное копирование файла или группы файлов определенной части базы данных. Через несколько дней у вас будет выполнено резервное копирование всех данных.
  • Используйте разностное резервное копирование. Если у вас нет времени, чтобы выполнять полное резервное копирование каждую ночь, создавайте разностные резервные копии в течение недели, а полную резервную копию – в выходные дни.
  • Выполняйте настройку плана резервного копирования.Каждая система отличается от других систем, и каждая компания – от других компаний. Разрабатывайте расписание резервного копирования, наиболее отвечающее вашим требованиям.
  • Практические советы.

    Планирование операций резервного копирования

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

  • Небольшая система в условиях "8 на 5" (8-часовой рабочий день 5 дней в неделю). Этот тип системы обычно позволяет выполнять полное резервное копирование каждый вечер. Журнал транзакций, видимо, нужно копировать только раз в день (в зависимости от размера журнала транзакций и количества выполненных транзакций).
  • Система среднего масштаба в условиях "24 на 7". Система среднего масштаба, работающая в условиях "24 на 7" не позволяет выделить слишком много времени для резервного копирования. Однако в системе такого масштаба у вас, скорее всего, есть возможность выполнения резервного копирования в выходные дни. В следующей таблице показано, как может выглядеть расписание резервного копирования для компании среднего масштаба.
    Понедельник Разностное резервное копирование базы данных
    Вторник Разностное резервное копирование базы данных
    Среда Разностное резервное копирование базы данных
    Четверг Разностное резервное копирование базы данных
    Пятница Разностное резервное копирование базы данных
    Суббота Разностное резервное копирование базы данных
    Воскресенье Полное резервное копирование базы данных
    Все дни Резервное копирование журнала транзакций по необходимости
  • Крупная система в условиях "24 на 7" В очень крупных системах может не оказаться возможности полного резервного копирования хотя бы в один из дней недели. Компромиссное решение – разбить полное резервное копирование на несколько дней, как это показано в следующей таблице. (В приведенном расписании полное резервное копирование выполняется за два дня – в субботу и воскресенье.)
    Понедельник Разностное резервное копирование базы данных
    Вторник Разностное резервное копирование базы данных
    Среда Разностное резервное копирование базы данных
    Четверг Разностное резервное копирование базы данных
    Пятница Разностное резервное копирование базы данных
    Суббота Полное резервное копирование групп файлов
    Воскресенье Полное резервное копирование групп файлов
    Все дни Резервное копирование журнала транзакций по необходимости
  • Эта информация дает вам представление о том, как планировать резервное копирование. Поскольку все системы и требования этих систем отличаются друг от друга, только вы сами можете решить, как наилучшим образом спланировать расписание вашего резервного копирования.

    Улучшение характеристик резервного копирования

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

    Повышение производительности резервного копирования

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

  • Используйте несколько устройств резервного копирования. Использование нескольких устройств резервного копирования позволяет SQL Server выполнять некоторые операции резервного копирования параллельно. SQL Server осуществляет это путем распределения резервной копии между несколькими устройствами. Для этого SQL Server создает несколько потоков, исходя из количества файлов данных и количества устройств резервного копирования. Производительность резервного копирования также повышается за счет дополнительных потоков, используемых для записи на эти устройства. Параллельное выполнение операций снижает суммарное количество времени, необходимое для этих операций, особенно в многопроцессорной системе. Этот метод позволяет повысить производительность резервного копирования, а также процесса восстановления.
  • Используйте несколько файлов данных в базе данных.Использование нескольких файлов данных меньшего размера вместо одного большого файла позволяет SQL Server выполнять значительную часть резервного копирования параллельно. Этот метод позволяет повысить производительность резервного копирования, а также процесса восстановления.
  • Используйте несколько сегментов локальной сети для резервного копирования. Распределяя резервное копирование между несколькими сегментами локальной сети, вы можете увеличить долю пропускной способности сети, доступную для резервного копирования. Два сегмента локальной сети увеличивают пропускную способность вдвое по сравнению с одним сегментом, три сегмента – втрое, и т.д.
  • Выполняйте резервное копирование поэтапно.Чтобы повысить производительность резервного копирования, вы можете выполнять резервное копирование на диск, а затем копировать файлы дисковой резервной копии на ленту. Этот метод повышает производительность, поскольку операции на диске выполняются быстрее, чем на ленте, и это позволяет вам держать несколько последних резервных копий на диске. Этот метод повышает производительность процесса восстановления только для файлов резервного копирования, оставшихся на диске.
  • Используйте разностные резервные копии. Разностное резервное копирование повышает производительность каждого резервного копирования, но если вы используете его, то восстановление всей базы данных занимает намного больше времени (см. лекцию 33). Если у вас недостаточно времени для полного резервного копирования, этот метод может стать для вашей системы наилучшим решением. Если восстановление данных требуется редко, то это, возможно, приемлемый компромисс.
  • Дополнительные рекомендации

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

  • Сохраняйте резервные копии вне рабочего места. Если вы храните резервные копии вне рабочего места, то они, возможно, останутся целы после таких катастроф, как пожар или затопление водой. Данные резервных копий намного важнее, чем сами компьютерные системы.
  • Проверяйте резервную копию. Резервная копия не будет вечно в хорошем состоянии. Ленты могут портиться, особенно если вы многократно используете одни и те же ленты. Проверяя резервную копию (хотя бы время от времени), вы будете знать, что лента в хорошем состоянии.
  • Не используйте один и тот же носитель каждый день. Используя один и тот же носитель каждый день, вы не сможете восстановить данные, удаленные за несколько дней до вашей попытки восстановления. Чередуйте ленты с резервными копиями, чтобы иметь возможность восстановления информации хотя бы за несколько дней.
  • Ведите запись того, как происходит резервное копирование. Вы должны документировать, как выполняется резервного копирования и как восстановить систему при необходимости. Помните, вы не всегда будете на месте, чтобы самому восстановить систему.
  • Создавайте резервные копии системных таблиц. Не забывайте периодически выполнять резервное копирование системных баз данных, таких как master и msdb.
  • Эти рекомендации помогут вам в разработке вашей собственной стратегии резервного копирования. Каждая система имеет свои отличия, и потребности каждой компании тоже отличаются. И снова скажем, что вы должны разрабатывать стратегию, которая подходит именно для вас.

    Заключение

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

    Вернуться к учебному плану