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


Снимки базы данных (SQL Server)

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

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

Замечание

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

В этом разделе:

Общие сведения о функциях

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

Для хранения скопированных исходных страниц моментальный снимок использует один или несколько разреженных файлов. Изначально разреженный файл является по сути пустым файлом, который не содержит пользовательских данных и еще не был выделен место на диске для пользовательских данных. По мере обновления всех страниц в исходной базе данных размер файла увеличивается. На этом рисунке показано действие двух различных конфигураций обновления на размер моментального снимка. Конфигурация обновления А отражает условия, при которых в течение жизни моментального снимка обновляется только 30% всех исходных страниц. Конфигурация обновления Б отражает условия, при которых в течение жизни моментального снимка обновляется только 80% всех исходных страниц.

Альтернативные шаблоны обновления и размер моментального снимка

Преимущества моментальных снимков базы данных

  • Моментальные снимки можно использовать для составления отчетов.

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

  • Поддержка хронологических данных для создания отчетов.

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

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

    Применение моментальных снимков с зеркальным отображением баз данных позволяет сделать данные на зеркальном сервере доступными для отчетов. Кроме того, выполнение запросов в зеркальной базе данных может освободить ресурсы основной базы данных. Дополнительные сведения см. в разделе "Зеркальное отображение базы данных" и "Моментальные снимки базы данных" (SQL Server).

  • Защита данных от административных ошибок.

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

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

    Это важно

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

    Замечание

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

  • Защита данных от пользовательских ошибок.

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

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

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

    Замечание

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

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

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

Условия и определения

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

исходная база данных
Для моментального снимка базы данных — база данных, в которой создан моментальный снимок. Моментальные снимки базы данных зависят от базы данных-источника. Они должны находиться на одном экземпляре сервера вместе с базой данных. Кроме того, если эта база данных становится недоступной по какой-либо причине, все её моментальные снимки базы данных также становятся недоступными.

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

Требования и ограничения снимков состояния базы данных

В этом разделе.

Предпосылки

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

  • Редакция SQL Server, на которой работает экземпляр сервера, должна поддерживать моментальные снимки базы данных. Дополнительные сведения см. в разделе Features Supported by the Editions of SQL Server 2014.

  • База данных-источник должна быть в сети, если база данных не является зеркалом в сеансе зеркалирования.

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

    Для создания моментального снимка рекомендуется, чтобы состояние синхронизации базы данных было SYNCHRONIZING или SYNCHRONIZED. Однако моментальные снимки базы данных можно создавать, когда состояние синхронизации базы данных НЕ НАХОДИТСЯ В РЕЖИМЕ СИНХРОНИЗАЦИИ.

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

  • Для создания моментального снимка в зеркальной базе данных эта база данных должна быть в состоянии зеркального отображения SYNCHRONIZED.

  • База данных-источник не может быть настроена в качестве масштабируемой общей базы данных.

Замечание

Все модели восстановления поддерживают моментальные снимки базы данных.

Ограничения базы данных-источника

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

  • Базу данных нельзя удалить, отсоединить или восстановить.

    Замечание

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

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

  • Файлы нельзя переместить из исходной базы данных или из каких-либо снимков.

Ограничения для моментальных снимков базы данных

Следующие ограничения применяются к моментальным снимкам базы данных.

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

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

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

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

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

  • Снимки модельной, master и tempdb баз данных запрещены.

  • Невозможно изменить какие-либо спецификации файлов моментальных снимков базы данных.

  • Нельзя удалять файлы из снимка базы данных.

  • Невозможно выполнить резервное копирование или восстановление моментальных снимков базы данных.

  • Невозможно присоединить или отсоединить снимки базы данных.

  • Невозможно создать моментальные снимки базы данных в файловой системе FAT32 или разделах RAW. Разреженные файлы, которые используются для моментальных снимков базы данных, предоставляются файловой системой NTFS.

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

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

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

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

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

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

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

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

    Замечание

    В инструкции SELECT, применяемой к моментальному снимку базы данных, нельзя указывать столбцы FILESTREAM; в противном случае будет возвращено следующее сообщение об ошибке: Could not continue scan with NOLOCK due to data movement.

  • Если статистика по моментальному снимку только для чтения отсутствует или устарела, ядро СУБД создает и сохраняет временную статистику в tempdb. Дополнительные сведения см. в статье Managing statistics on tables in SQL Data Warehouse (Управление статистикой таблиц в хранилище данных SQL).

Требования к местам на диске

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

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

Если моментальный снимок базы данных не имеет места на диске, его необходимо удалить (удалить).

Замечание

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

Моментальные снимки базы данных с отключенными файловыми группами

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

  • Создайте моментальный снимок

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

  • Перевод файловой группы в режим вне сети

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

  • Перевод файловой группы в режим в сети

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

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

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

Связанные задачи

См. также

Зеркалирование баз данных и моментальные снимки баз данных (SQL Server)