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


репликация моментальных снимков;

Область применения: SQL Server Управляемый экземпляр SQL Azure

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

Примечание.

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

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

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

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

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

Как работает репликация моментальных снимков

По умолчанию все три типа репликации для инициализации подписчиков используют моментальный снимок. SQL Server агент моментальных снимков всегда создает файлы моментальных снимков, но агент, который поставляет файлы, отличается в зависимости от типа используемой репликации. Репликация моментальных снимков и репликация транзакций используют агент распространения для доставки файлов, а репликация слиянием использует агент слияния SQL Server. Агент моментальных снимков выполняется на распространителе. Агент распространителя и агент слияния выполняются на распространителе для принудительных подписок и на подписчиках для подписок по запросу.

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

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

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

Снимок экрана: компоненты репликации моментальных снимков и поток данных.

агент моментальных снимков

Для репликации слиянием моментальный снимок формируется при каждом запуске агента моментальных снимков. Для репликации транзакций создание моментальных снимков зависит от параметра свойства immediate_syncпубликации. Если для свойства задано true значение (по умолчанию при использовании мастера создания публикаций), моментальный снимок создается при каждом запуске агент моментальных снимков, и он может применяться к подписчику в любое время. Если для свойства задано значение false (значение по умолчанию при использованииsp_addpublication), моментальный снимок создается только в том случае, если новая подписка была добавлена с момента последнего запуска агент моментальных снимков; Подписчики должны ждать завершения агент моментальных снимков, прежде чем они смогут синхронизироваться.

Агент моментальных снимков выполняет следующие шаги:

  1. Устанавливает соединение распространителя с издателем, а затем, если это необходимо, блокирует публикуемые таблицы:

    • Для публикаций слиянием агент моментальных снимков не принимает никаких блокировок.

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

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

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

  3. Копирует данные из опубликованной таблицы на издателе и записывает данные в папку моментальных снимков. Моментальный снимок формируется как набор файлов программы массового копирования (BCP).

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

    Для публикаций слиянием агент моментальных снимков выполняет дополнительные действия.

  5. Снимает любые блокировки с опубликованных таблиц.

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

Агент распространителя и агент слияния

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

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

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

  1. Устанавливает соединение с распространителем.

  2. Проверяет MSrepl_commands и MSrepl_transactions таблицы в базе данных распространителя. Агент считывает местонахождение файлов моментального снимка из первой таблицы и команды синхронизации подписчика из обеих таблиц.

  3. Применяет схему и команды к базе данных подписки.

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

  1. Устанавливает соединение с издателем.

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

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