Опубликован: 11.12.2006 | Уровень: специалист | Доступ: свободно
Лекция 27:

Репликация транзакций

Настройка репликации транзакций

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

Атрибуты репликации транзакций

Репликация транзакций начинается с копирования снимка на дистрибьютор и затем на подписчик. После копирования снимка на дистрибьюторе начинает работать агент Log Reader Agent, который выполняет чтение журнала транзакций издателя в непрерывном режиме или в соответствии с регулярным расписанием. Периодичность чтения журнала транзакций определяется тем, как вы сконфигурировали Log Reader Agent. (Нагрузка, налагаемая на издатель при чтении журнала транзакций, – это единственная нагрузка на издатель, относящаяся к репликации.)

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

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

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

Конфигурирование репликации транзакций

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

  • Сконфигурируйте достаточную мощность подсистем ввода-вывода на всех системах, участвующих в репликации в соответствии с общими рекомендациями по конфигурированию мощности подсистем ввода-вывода. (Возможно, вам потребуется сконфигурировать более высокую мощность ввода-вывода для журнала транзакций на издателе, чем это обычно требуется.)
  • Увеличьте размер пакета фиксирования на дистрибьюторе.
  • Настройте Log Reader Agent.
Конфигурирование достаточной мощности ввода-вывода

Конфигурируя достаточную мощность подсистем ввода-вывода, вы можете повысить производительность всего процесса репликации. Как и в любой системе SQL Server, журнал транзакций системы, участвующей в репликации, должен находиться для защиты данных на своем томе RAID 1. Файлы данных должны находиться на одном или нескольких томах RAID 10 или RAID 5. В отличие от репликации снимков для репликации транзакций требуются лишь небольшие изменения в стандартных конфигурациях ввода-вывода. Эти требования описаны в данном разделе.

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

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

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

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

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

Вы можете конфигурировать размер пакета фиксирования в Enterprise Manager, вызвав окно свойств агента распространения Distribution Agent. (См. раздел "Мониторинг и управление агентами репликации" в "Репликация в Microsoft SQL Server: обзор типов репликации и репликация моментальных снимков" )

Настройка Log Reader Agent

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

Еще один способ настройки Log Reader Agent – это его конфигурирование для менее частого запуска. Log Reader Agent может работать в непрерывном режиме или периодически. Если в вашей системе не происходит большого количества модификаций, то, возможно, Log Reader Agent может работать непрерывно без нарушения доступа к журналу транзакций. Но при высоком уровне занятости журнала транзакций вашей системы вы можете увеличить производительность издателя, задав менее частые запуски Log Reader Agent. Тогда Log Reader Agent будет выполнять чтение из журнала транзакций реже, что позволит сохранить последовательный доступ для операций ввода-вывода этого журнала.

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

Вы можете конфигурировать агент Log Reader Agent путем вызова окна его свойств в Enterprise Manager. (См. раздел "Мониторинг и управление агентами репликации" в "Репликация в Microsoft SQL Server: обзор типов репликации и репликация моментальных снимков" .)