Репликация слиянием отличается от репликации транзакций тем, что она по своей сути является многонаправленной. При использовании репликации слиянием издатели и подписчики могут равным образом обновлять публикацию. Репликация транзакций также позволяет подписчикам обновлять публикацию, но эти два типа репликации выполняются совершенно различным образом. В этой лекции вы узнаете, как действует репликация слиянием и как выполнять ее конфигурирование, мониторинг и настройку.
Введение в репликацию слиянием
При репликации слиянием происходит многонаправленная репликация между издателем и одним или несколькими подписчиками. Это позволяет нескольким системам иметь модифицируемые копии публикации и модифицировать свои собственные копии. Модификация на издателе будет реплицироваться подписчикам. Модификация на подписчике будет реплицироваться издателю и затем реплицироваться остальным подписчикам.
В отличие от репликации транзакций репликация слиянием осуществляется путем инсталляции триггеров на издателе и на подписчиках. При каждом изменении в публикации или в одной из ее копий происходит активизация соответствующего триггера, который помещает в очередь команду репликации для отправки в дистрибутивную базу данных. Эта команда, в конце концов, передается в дистрибутивную базу данных и затем передается на системы, участвующие в репликации. В связи с таким способом работы репликация слиянием создает значительно более высокую нагрузку (в особенности на издателе), чем репликация транзакций.
Как вы узнаете из этой лекции, ключевыми компонентами системы репликации слиянием являются агент слияния Merge Agent и дистрибутивная база данных. Merge Agent согласует (выполняет слияние) накапливающиеся изменения, которые были внесены после предыдущего согласования. В случае репликации слиянием агент распространения (Distribution Agent) не используется – Merge Agent взаимодействует как с и издателем, так и с дистрибьютором. Агент создания снимка (Snapshot Agent) используется только для создания начальной базы данных. Merge Agent выполняет следующие задачи:
Merge Agent загружает все изменения с подписчика.
Все строки без конфликта (строки, которые не были одновременно модифицированы и на издателе, и на подписчике), загружаются сразу; конфликтующие строки (строки, модифицированные на обеих системах) отправляются арбитру. Арбитр – это модуль, который используется для разрешения конфликтов в репликации слиянием. Вы можете конфигурировать этот модуль для разрешения конфликтов в соответствии с вашими требованиями.
Все изменения применяются к издателю.
Merge Agent загружает все изменения с издателя.
Все строки без конфликта загружаются сразу; конфликтующие строки отправляются арбитру.
Все изменения применяются к подписчику.
Этот процесс повторяется в соответствии с тем, как он запланирован. В случае push-подписок (принудительных подписок) агент Merge Agent запускается на издателе. В случае pull-подписок (подписок по запросу) Merge Agent запускается на подписчике. Каждая публикация в репликации слиянием имеет своего собственного агента Merge Agent.
Виды использования репликации слиянием
Репликация слиянием используется при необходимости многонаправленной репликации. Репликация слиянием находит разнообразное применение. То, что подписчики могут модифицировать данные, повышает уровень ее гибкости и применимости. В частности, репликация слиянием может находить следующее применение:
Совместное использование данных отделами. Отделы, обрабатывающие, например, платежные ведомости, счета кредиторов и счета дебиторов, могут иметь доступ к одним и тем же данным. Пользователи каждого отдела могут модифицировать эти данные и получать слияние изменений на системах других отделов.
Совместная работа с данными в нескольких точках. Репликацию слиянием можно использовать в тех случаях, когда пользователям в нескольких точках требуются одни и те же данные и внесение изменений в эти данные.
Передача сообщений.Репликацию слиянием можно использовать как систему передачи сообщений, в которой можно модифицировать данные и отправлять изменения назад в исходную систему.
Конфигурирование системы
репликации слиянием
Конфигурирование репликации слиянием происходит аналогично конфигурированию репликации моментальных снимков и репликации транзакций. Сначала вы должны сконфигурировать публикацию и затем задать, чтобы она принудительно передавалась подписчику (push-подписка) или запрашивалась подписчиком (pull-подписка).
Примечание.Прежде чем конфигурировать любой тип репликации SQL Server, вы должны сначала сконфигурировать публикование и распространение. (См. разделе "Конфигурирование публикования и распространения" в лекции 26.)
Конфигурирование публикаций
Несмотря на то, что процесс конфигурирования публикаций был описан в лекциях 26 и 27, здесь приводятся процедуры, используемые с целью создания публикаций для репликации слиянием, поскольку они несколько отличаются от процедур, используемых для создания публикаций других типов. Чтобы сконфигурировать публикацию для репликации слиянием, выполните следующие шаги.
В окне Enterprise Manager щелкните на меню Tools. Далее укажите пункт Replication (Репликация) и выберите команду Create аnd Manage Publications (Создание и управление публикациями); или выберите пункт Wizards (Мастера), раскройте папку Replication в появившемся в диалоговом окне и выберите Create Publication Wizard (Мастер создания публикации). При любом способе появится диалоговое окно Create аnd Manage Publications (рис 28.1(рис 28.1) Диалоговое окно Create аnd Manage Publications (Создание и управление публикациями) Если публикации уже существуют, то в дополнение к кнопке Create Publication (Создать публикацию) будут доступны следующие кнопки:Push New Subscription (Новая push-подписка). Позволяет вам создать новую push-подписку для уже существующей публикации. (Cм. раздел "Конфигурирование подписок" далее.)
Properties and Subscriptions (Свойства и подписки).Позволяет вам модифицировать свойства как публикаций, так и подписок.
Script Publication (Сценарий создания публикации).Позволяет вам создать сценарий, который можно использовать для создания других публикаций.
Delete Publication (Удалить публикацию).Позволяет вам удалить уже сконфигурированную публикацию.
Выберите базу данных, которую хотите использовать для данной публикации (на рис 28.1(рис 28.2) Начальное окно мастера Create Publication Wizard
Щелкните на кнопке Next, чтобы появилось окно Choose Publication Database (Выбор базы данных для публикации) (рис 28.3(рис 28.3) Окно Choose Publication Database (Выбор базы данных для публикации)
Щелкните на кнопке Next, чтобы появилось окно Select Publication Type (Выбор типа публикации) (рис 28.4(рис 28.4) Окно Select Publication Type (Выбор типа публикации)В этом окне вы можете выбрать один из трех типов репликации. Будут представлены следующие варианты выбора:Snapshot publication (Публикация для репликации снимков).Создает публикацию для репликации снимка соответствующей статьи, который периодически копируется на подписчик. Такую публикацию можно создавать из любой таблицы.
Transactional publication (Публикация для репликации транзакций). Создает публикацию для репликации транзакций, в соответствии с которыми происходит обновление подписки изменениями, выполненными на издателе. Статьи могут создаваться только из таблиц с первичным ключом.
Merge publication (Публикация для репликации слиянием).Создает публикацию для репликации слиянием, которая позволяет выполнять двустороннюю репликацию между издателем и подписчиком. Статьи могут создаваться из любых таблиц.
Щелкните на кнопке выбора Merge publication и щелкните на кнопке Next, чтобы появилось окно Specify Subscriber Types (Указание типов подписчиков) (рис 28.5(рис 28.5) Окно Specify Subscriber Types (Указание типов подписчиков)
Щелкните на кнопке Next, чтобы появилось окно Specify Articles (Указание статей) (рис 28.6(рис 28.6) Окно Specify Articles (Указание статей)Примечание.Если на подписчике имеются хранимые процедуры, то репликацию можно сконфигурировать таким образом, чтобы реплицировать вызовы этих хранимых процедур, а не результаты вызовов хранимых процедур.
Поскольку мы указываем репликацию слиянием, то можно определить дополнительные атрибуты по статьям. Чтобы сконфигурировать эти атрибуты, сначала щелкните на кнопке [...] справа от определения соответствующей статьи. Появится окно Article Properties (Свойства статьи) (рис 28.7(рис 28.7) Вкладка General окна Table Article Properties (Свойства статьи)Во вкладках этого окна вы можете конфигурировать различные свойства статьи. На рис. 28.7 показана вкладка General (Общие). Здесь вы можете задавать имя статьи и владельца целевой базы данных, а также определять, что считается конфликтом. Принятый по умолчанию вариант (вторая кнопка выбора) указывает, что модификации, которые вносятся в одну колонку двумя источниками, будут рассматриваться как конфликт. Вы можете расширить это определение (первая кнопка выбора), указав, что изменения, которые вносятся в одну строку двумя источниками, будут рассматриваться как конфликт.
Щелкните на вкладке Resolver (Арбитр) (рис 28.8(рис 28.8) Вкладка Resolver (Арбитр) окна Table Article Properties
Во вкладке Merging Changes (Изменения при слиянии) (рис. 28.9), вы можете задавать дополнительную проверку безопасности для определенных операций. Установив один или несколько флажков в секции Check Permissions (Проверка полномочий) вы указываете, что перед выполнением определенной операции или операций будут проверяться полномочия агента Merge Agent на выполнение этой операции или операций. Кроме того, эта вкладка содержит флажок, который установлен по умолчанию. Этот флажок указывает, что изменения нескольких колонок в одной строке будут выполняться в виде одной операции с оператором UPDATE. Вам следует согласиться с этой установкой по умолчанию. Когда будете готовы продолжить работу, щелкните на кнопке OK.
Щелкните на кнопке Next. На данном этапе происходит проверка публикации, и, скорее всего, вы увидите окно (рис 28.10(рис 28.10) Вкладка Merging Changes (Изменения при слиянии) окна Table Article Properties(рис 28.9) Окно Article Issues (Вопросы по статьям)
Щелкните на кнопке Next. Появится окно Select Publication Name and Description (Выбор имени и описания публикации) (рис. 28.11). В этом окне вы указываете имя и описание публикации.
Щелкните на кнопке Next, чтобы появилось окно Customize the Properties of the Publication (Настройка свойств данной публикации) (
(рис 28.12) Окно Select Publication Name and Description (Выбор имени и описания публикации)(рис 28.11) Окно Customize the Properties of the Publication (Настройка свойств данной публикации)
Щелкните на кнопке Next. Появится окно мастера Completing the Create Publication Wizard (Завершение работы мастера создания публикации). Щелкните на кнопке Finish (Готово), и для вас будет создана публикация. Вы увидите ход выполнения по мере завершения различных шагов. И, наконец, вы увидите окно, в котором показаны выполненные шаги и сводка результатов.
Если вы посмотрите теперь содержимое папки Replication Monitor для агентов слияния Merge Agent, то обнаружите, что там ничего нет. Поскольку агенты Merge Agent используются для двусторонней репликации, то прежде чем начать репликацию, вам необходимо сконфигурировать подписчиков. После того как вы сконфигурируете подписчиков, Merge Agents появятся в папке Replication Monitor.
Конфигурирование подписок
Аналогично репликации моментальных снимков и репликации транзакций последним шагом в конфигурировании репликации слиянием является конфигурирование подписчиков. Сначала вы должны активизировать подписчиков в дистрибутивной базе данных; этот процесс был описан в разделе "Активизация подписчиков" лекции 26. Затем вы конфигурируете подписки со стороны подписчика или издателя. Со стороны подписчика вы можете конфигурировать pull-подписку; со стороны издателя вы можете конфигурировать push-подписку.
Конфигурирование pull-подписок
Управление и конфигурирование pull-подписок осуществляется со стороны подписчика. Тем самым вы должны конфигурировать pull-подписку с помощью Enterprise Manager в системе подписчика. Мы уже видели в разделе "Конфигурирование pull-подписок" лекции 27, как конфигурировать pull-подписку. Поскольку в данном случае используются почти те же шаги, мы приведем краткое описание и выделим отличия.
Вызовите окно мастера Pull Subscription Wizard (Мастер pull-подписки).
Появится начальное окно Pull Subscription Wizard.
Щелкните на кнопке Next, чтобы появилось окно Look for Publications (Поиск публикаций) Выберите для данного примера зарегистрированные серверы.
Щелкните на кнопке Next, чтобы появилось окно Choose Publications (Выбор публикаций), и выберите публикацию, которую хотите реплицировать.
Щелкните на кнопке Next, чтобы появилось окно Specify Synchronization Agent Login (Задать учетную запись подключения [login-запись] для агента синхронизации), и укажите, какую учетную запись будет использовать агент слияния для взаимодействия с издателем и дистрибьютором.
Щелкните на кнопке Next, чтобы появилось окно Choose Destination Database (Выбор целевой базы данных), и выберите базу данных.
Щелкните на кнопке Next, чтобы появилось окно Initialize Subscription (Инициализация подписки), и щелкните на нужной кнопке выбора.
Щелкните на кнопке Next, чтобы появилось окно Snapshot Delivery (Доставка снимка), и укажите местоположение для снимка.
Щелкните на кнопке Next, чтобы появилось окно Set Merge Agent Schedule (Задать расписание для агента слияния). Это окно аналогично окну Set Distribution Agent Schedule, которое вы видели в предыдущей лекции. Сделайте свой выбор в этом окне.
Щелкните на кнопке Next, чтобы появилось окно Set Subscription Priority (Задать приоритет подписки) (рис. 28.13). Здесь вы можете задать значение приоритета подписки, которое будет использовано для определения "победителя" конфликта. Вариант по умолчанию (рекомендованный) указывает, что для разрешения конфликта будет использоваться значение приоритета по издателю.
Щелкните на кнопке Next, чтобы появилось окно Start Required Services (Запуск требуемых служб), и запустите SQL Server Agent, если он еще не запущен.
Щелкните на кнопке Next, чтобы появилось окно Completing the Pull Subscription Wizard (Завершение работы мастера pull-подписки). Просмотрите ваши установки и затем щелкните на кнопке Finish. По окончании вашей работы с этим мастером будет создана pull-подписка, которая будет обновляться в соответствии с регулярным расписанием.
(рис 28.13) Окно Set Subscription Priority (Задать приоритет подписки)
Конфигурирование push-подписок
Push-подписка (принудительная подписка) инициируется на издателе. Push-подписка конфигурируется с помощью мастера Push Subscription Wizard (Мастер push-подписки). Для запуска этого мастера выполните следующие шаги:
Вызовите Push Subscription Wizard, используя один из двух методов. Для использования первого метода укажите пункт Replication в меню Tools окна Enterprise Manager и затем выберите пункт Push Subscription to Others (Push-подписка для других). Появится диалоговое окно Create and Manage Publications (Создание и управление публикациями) (рис 28.14(рис 28.14) Публикация, выбранная в диалоговом окне Create and Manage Publications (Создание и управление публикациями)Выделите публикацию в списке Databases and Publications (Базы данных и публикации) и затем щелкните на кнопке Push New Subscription (Создать push-подписку). Чтобы использовать второй метод, выберите из меню Tools пункт Wizards, раскройте папку Replication в появившемся диалоговом окне Select Wizards, выберите Create Push Subscription Wizard и щелкните на кнопке OK. Выделите публикацию в появившемся диалоговом окне Create and Manage Publications и затем щелкните на кнопке Push New Subscription.
Появится начальное окно мастера Push Subscription Wizard (рис 28.15(рис 28.15) Начальное окно мастера Push Subscription Wizard
Щелкните на кнопке Next, чтобы появилось окно Choose Subscribers (Выбор подписчиков) (рис 28.16(рис 28.16) Окно Choose Subscribers (Выбор подписчиков)
Щелкните на кнопке Next, чтобы появилось окно Choose Destination Database (рис 28.17(рис 28.17) Окно Choose Destination Database
Щелкните на кнопке Next, чтобы появилось окно Set Merge Agent Location (Задать местоположение для агента слияния) (рис 28.18(рис 28.18) Окно Set Merge Agent Location (Задать местоположение для агента слияния)
Щелкните на кнопке Next, чтобы появилось окно Set Merge Agent Schedule (рис 28.19(рис 28.19) Окно Set Merge Agent Schedule (Задать расписание для агента слияния)
Щелкните на кнопке Next, чтобы появилось окно Initialize Subscription (Инициализация подписки) (рис 28.20(рис 28.20) Окно Initialize Subscription (Инициализация подписки)В этом окне вы указываете, нужно ли инициализировать данную подписку. По умолчанию выбран вариант инициализации схемы и набора данных на подписчике. В этом окне вы можете также запустить Snapshot Agent, если он еще не запущен. Имеет смысл запускать Snapshot Agent, когда вы инициализируете снимок; в противном случае вам придется запускать этот агент вручную. После того как снимок инициализирован и начинается репликация, вам не нужно использовать снимок, пока не потребуется создать новую подписку. Каждый раз, как вы создаете подписку, создавайте новый снимок, и вам больше не нужно создавать снимки в соответствии с каким-либо расписанием, если только вам не потребуется ресинхронизация базы данных подписчика с использованием снимков.
Щелкните на кнопке Next, чтобы появилось окно Set Subscription Priority (рис 28.21(рис 28.21) Окно Set Subscription Priority (Задать приоритет подписки)
Щелкните на кнопке Next, чтобы появилось окно Start Required Services (рис 28.22(рис 28.22) Окно Start Required Services
Щелкните на кнопке Next, чтобы появилось окно Completing the Push Subscription Wizard (Завершение работы мастера push-подписки) (рис 28.23(рис 28.23) Окно Completing the Push Subscription Wizard
Управление репликацией
Теперь вы знаете, как создавать и конфигурировать реплицируемую базу данных в среде SQL Server 2000. Чтобы управлять этой реплицируемой средой или устранять проблемы, если репликация не запускается, вы будете использовать возможности мониторинга и параметры конфигурирования в Enterprise Manager.
Мониторинг и управление агентами
репликации
Агенты репликации можно найти в папке Replication Monitor окна Enterprise Manager. Для доступа к этим агентам выполните следующие шаги.
Раскройте группу серверов, раскройте сервер и затем раскройте папку Replication Monitor.
Если сервер, который вы раскрыли, является издателем, то под папкой Replication Monitor появится папки Publishers (Издатели) и Agents (Агенты). В папке Publishers находятся издатели, которые принадлежат данному серверу. В папке Agents находятся папки для агентов Snapshot Agents, Log Reader Agents, Distribution Agents, Merge Agents и различных агентов (папка Miscellaneous Agents), которые используются для очистки и протоколирования выполняемых операций.
Хотя обычно не требуется запускать или прекращать работу агентов, вы можете использовать для этого Replication Monitor. Если создается впечатление, что ваша реплицируемая система не работает после того, как вы сконфигурировали ее, то вполне вероятно, что не запущен агент Snapshot Agent, возможно, из-за того, что этот агент использует принятое по умолчанию расписание. (Именно поэтому в процессе конфигурирования вы имеете возможность сразу инициализировать создание снимка.) Проверяйте состояние агентов, щелкая на папке соответствующих агентов в Enterprise Manager и просматривая информацию об этих агентах в правой панели (рис 28.24(рис 28.24) Агент Merge Agent, представленный в окне Enterprise Manager
Щелкните правой кнопкой мыши на агенте, чтобы появилось контекстное меню, содержащее ряд опций, которые вы можете использовать для мониторинга и управления агентами. Меню, которое появляются для агента Merge Agent (рис. 28.25).Ниже описываются опции меню для агента Merge Agent.
Error Details (Подробности ошибок).Выводятся подробное описание возникших ошибок.
Agent History (Журнал работы агента). Выводится протокол операций агента.
(рис 28.25) Опции агента Merge Agent
Agent Profiles (Профили агента). Позволяет вам просматривать и модифицировать параметры агента, такие как тайм-ауты учетной записи подключения (login), размер пакета и тайм-ауты запросов.
Run Agent At Subscriber (Запуск агента на подписчике). Позволяет указывать запуск агента на подписчике.
Run Agent At Distributor (Запуск агента на дистрибьюторе). Позволяет указывать запуск агента на дистрибьюторе.
Start Agent и Stop Agent (Запуск агента и Остановка агента). Позволяют вам запускать агент, если он остановлен, или останавливать его, если он запущен.
Refresh Rate And Settings (Частота и параметры обновления). Позволяет вам модифицировать частоту обновления данных монитора производительности Performance Monitor.
Select Columns (Выбрать колонки). Позволяет вам указывать, какие колонки просматриваются в панели результатов.
Show Anonymous Subscriptions (Показать анонимные подписки). Указывает, будут ли показаны анонимные подписки в этом окне.
Help (Справка). Справочная информация для данного окна.
Конфигурирование Merge Agent
После создания публикации вам, возможно, потребуется модифицировать поведение агента слияния Merge Agent. Например, вы можете задать, как происходит вызов Merge Agent, выбрав режим, в котором он будет работать. В непрерывном режиме запуск Merge Agent происходит при запуске SQL Server Agent. В режиме расписания (который является предпочтительным режимом) Merge Agent запускается в соответствии с расписанием и переходит в неактивное состояние после доставки всех реплицируемых транзакций. Чтобы сконфигурировать Merge Agent, выполните следующие шаги.
В окне Enterprise Manager раскройте сервер, раскройте папку Replication Monitor, раскройте папку Agents и затем щелкните на папке Merge Agents.
В правой панели Enterprise Manager щелкните правой кнопкой мыши на публикации и выберите из появившегося контекстного меню пункт Agent Properties (Свойства агента).
Появится окно свойств данного агента Merge Agent (рис 28.26(рис 28.26) Вкладка General окна свойств Merge Agent
Щелкните на вкладке Steps (Шаги) (рис 28.27(рис 28.27) Вкладка Steps (Шаги) окна свойств Merge AgentВ этой вкладке вы увидите шаги, которые выполняет данный Merge Agent, когда происходит его вызов. Здесь выводятся и описываются три следующих шага.Merge Agent Startup Message (Сообщение о запуске агента). В таблицу журнала работы агента Log Reader Agent помещается сообщение (таблица MSLogreader_history в дистрибутивной базе данных).
Run Agent (Запуск агента). Запуск данного агента в соответствии с заданным расписанием. При работе в непрерывном режиме этот агент работает, пока не будет отключена система.
Detect Nonlogged Agent Shutdown (Обнаружено незарегистрированное отключение агента). В таблицу журнала работы агента Log Reader Agent помещается сообщение в случае отключения агента.
Выделите шаг Run Agent и щелкните на кнопке Edit (Редактировать), чтобы появилось диалоговое окно Edit Job Step (Редактирование шага) (рис 28.28(рис 28.28) Вкладка General диалогового окна Edit Job Step (Редактирование шага)Для агента Merge Agent можно сконфигурировать много параметров. Параметры по умолчанию этого агента можно модифицировать в окне Command (Команда) диалогового окна Edit Job Step и в диалоговом окне Replication Agent Profile Details (Детали профиля агента репликации), которое описано ниже в этой лекции. Здесь описаны два параметра, которые вы можете модифицировать в диалоговом окне Edit Job Step.
ДContinuous (Непрерывный). Указывает, работает ли Merge Agent в непрерывном режиме. Чтобы задать режим расписания, удалите этот параметр.
DistributorSecurityMode (Режим безопасности дистрибьютора). Указывает, какой режим аутентификации использует Merge Agent: SQL или Microsoft Windows 2000.
Кроме того, вы можете задать в диалоговом окне Edit Job Step другие параметры, такие как LoginTimeout, PollingInterval, QueryTimeout, информацию о дистрибьюторе и подписчиках и Output.Дополнительная информация. Описание этих параметров можно найти в SQL Server Books Online. Выполните поиск "Merge Agent, starting" (Merge Agent, запуск) в индексе Books Online.
Закончив модифицирование свойств Merge Agent, щелкните на кнопке OK, чтобы сохранить ваши изменения.
Вы можете модифицировать другие параметры в профиле Merge Agent. Чтобы модифицировать профиль, выполните следующие шаги:
В правой панели Enterprise Manager щелкните правой кнопкой мыши на Merge Agent, как это описано выше в этом разделе, и выберите из появившегося контекстного меню пункт Agent Profiles (Профили агента). Появится диалоговое окно Merge Agent Profiles (рис 28.29(рис 28.29) Диалоговое окно Merge Agent ProfilesОтметим, что это диалоговое окно содержит гораздо больше вариантов, чем диалоговое окно Log Reader Agent Profiles, которое вы видели в лекции 27. Эти профили обеспечивают широкий диапазон функциональных возможностей, чтобы вы могли выбрать профиль, который наиболее подходит для конкретной конфигурации вашей системы.
Щелкните на кнопке New Profile (Создать профиль), чтобы создать новый профиль. Текущий профиль нельзя модифицировать. В результате появится диалоговое окно Replication Agent Profile Details (Детали профиля агента репликации), (рис. 28.30).
В этом диалоговом окне вы можете модифицировать следующие параметры:BcpBatchSize. Указывает количество строк, которые будут передаваться в операции массового копирования. Он используется в основном для журнального протоколирования.
ChangesPerHistory. Указывает пороговое значение, при переходе которого происходит журнальное протоколирование передаваемых и получаемых сообщений.
DownloadGenerationsPerBatch. Указывает количество поколений данных, которое будет загружаться в пакете
DownloadReadChangesPerBatch. Указывает количество изменений, которое будет считываться в пакете.
(рис 28.30) иалоговое окно Replication Agent Profile Details (Детали профиля агента репликации)
FastRowCount. Указывает тип проверки достоверности, который будет использоваться. Значение 1 указывает быстрый метод, значение 0 – метод подсчета строк (rowcount).
HistoryVerboseLevel. Указывает, сколько информации будет протоколироваться в журнале.
KeepAliveMessageInterval. Указывает количество секунд между проверкой с помощью метода контрольных импульсов (heartbeat), реализуемого участниками репликации, чтобы определить, функционируют ли остальные участники репликации.
LoginTimeout. Указывает допустимое время ожидания в секундах для Merge Agent.
MaxDownloadChanges. Указывает максимальное количество получаемых загрузок в одном сеансе.
MaxUploadChanges. Указывает максимальное количество отправляемых загрузок в одном сеансе.
MaxDeadlockRetries. Указывает максимальное количество попыток агента в случае взаимоблокировки.
PollingInterval. Указывает, насколько часто опрашивается журнал транзакций на издателе (для получения новых транзакций).
QueryTimeout. Указывает допустимое время ожидания в секундах для запроса.
UploadGenerationsPerBatch. Указывает количество поколений отправляемых загрузок, которые будут обрабатываться в одном пакете.
UploadReadChangesPerBatch. Указывает количество операций чтения, которое будет обрабатываться в одном пакете.
UploadWriteChangesPerBatch.Указывает количество операций записи, которое будет обрабатываться в одном пакете.
Validate. Указывает, нужно ли проводить проверку достоверности в конце сеанса.
ValidateInterval. Указывает, насколько часто проводится проверка достоверности (если она вообще проводится), когда агент работает в непрерывном режиме.
Если Merge Agent используется в режиме расписания, а не в непрерывном режиме, то он вызывается агентом SQL Server Agent и выполняет, прежде чем закончить работу, то количество изменений, которое указано параметрами MaxUploadChanges и MaxDownloadChanges.
Отключение репликации
Вы можете легко отключить все операции или часть операций репликации в вашей системе с помощью мастеров Enterprise Manager, чтобы удалить определенные компоненты репликации. В этом разделе вы узнаете, как выполнять эту простую задачу.
Удаление push-подписок
Чтобы удалить push-подписку, используйте Enterprise Manager в системе дистри-бьютора для вызова мастера Push Subscription Wizard. После вызова этого мастера появится диалоговое окно Create and Manage Publications. В поле списка Databases and Publications выделите подписку, которую хотите удалить, и затем щелкните на кнопке Delete Publication (Удалить публикацию). Вы получите запрос для подтверждения того, что действительно хотите удалить данную подписку. Щелкните на кнопке Yes, чтобы удалить подписку.
Удаление pull-подписок
Чтобы удалить pull-подписку, используйте Enterprise Manager в системе подписчика для вызова мастера Pull Subscription Wizard. После вызова этого мастера появится диалоговое окно Create and Manage Publications. В поле списка Databases And Publications выделите подписку, которую хотите удалить, и затем щелкните на кнопке Delete Publication. Вы получите запрос для подтверждения того, что действительно хотите удалить данную подписку.
Удаление распространения и публикаций
Чтобы удалить распространение и публикации, вы должны вызвать мастер Disable Publishing and Distribution Wizard (Отключение публикования и распространения). В первом окне этого мастера вы указываете, что вам нужно: отключить все распространение и все публикации или удалить только публикации. Если выбрать первый вариант, то будет удалено все – публикование, распространение и публикации. Если выбрать второй вариант (принятый по умолчанию), то будут удалены только публикации. Затем вы должны выбрать публикации, которые хотите удалить. После вашего выбора появится окно подтверждения, где вам дается последняя возможность отменить свое решение. Чтобы удалить выбранные вами компоненты репликации, щелкните на кнопке Yes.
Мониторинг и настройка системы репликации слиянием
В этом разделе описывается, как выполнять мониторинг и настройку системы репликации слиянием для получения оптимальной производительности. Кроме того, в этом разделе представлены некоторые рекомендации по конфигурированию для систем репликации слиянием. В данном разделе также дается обзор атрибутов репликации слиянием.
Атрибуты репликации слиянием
Репликация слиянием существенно отличается от других методов репликации. В отличие от репликации транзакций и репликации снимков она не является однонаправленным методом репликации. Модификации могут выполняться на издателе и на любом числе подписчиков. Кроме того, в случае репликации транзакций происходит чтение журнала транзакций (для отслеживания изменений), что является внешней операций по отношению к обычным операциям SQL Server, в то время как в случае репликации слиянием для реплицируемых таблиц создаются триггеры, которые активизируются при изменениях в этих таблицах.
Репликация слиянием начинается с применения снимка, но поскольку эта операция выполняется только один раз, вам не нужно настраивать процесс репликации снимка. Чтобы выполнять репликацию, система слияния создает таблицы как на издателе, так и на дистрибьюторе. Кроме того, к каждой реплицируемой таблице добавляется новая колонка, содержащая уникальный идентификатор строк. Он используется для уникального идентифицирования каждой строки, чтобы агент репликации мог эффективно отслеживать изменения.
При вставке или модифицировании строки триггер помечает эту строку для репликации. Затем происходит активизация агента Merge Agent, который собирает все помеченные строки и отправляет их дистрибьютору для репликации. Одновременно с этим Merge Agent модифицирует любые строки в таблицах издателя, которые были модифицированы в таблицах системы или систем подписчика. Так осуществляется двусторонняя репликация.
Конфигурирование репликации слиянием
Если вы используете репликацию слиянием, правильное конфигурирование сети и подсистем ввода-вывода, участвующих в репликации систем, крайне важно для повышения производительности репликации так же, как и в случае использования других методов репликации. Вы можете также повысить производительность репликации слиянием за счет конфигурирования размера пакета слияния. Увеличивая размер этого пакета, вы обеспечиваете использования меньшего числа более крупных пакетов, что является более эффективным методом. Кроме того, вам может потребоваться настройка репликации снимка, однако репликация снимка происходит только один раз, поэтому вы можете пропустить этот шаг. И наконец, вы можете модифицировать Merge Agent; этот процесс был описан выше в этой лекции. В данном разделе описаны конфигурирование ввода-вывода и конфигурирование размера пакета слияния.
Конфигурирование достаточной мощности
ввода-вывода
Конфигурируя достаточную мощность подсистем ввода-вывода, вы можете повысить производительность всего процесса репликации. Как и в любой системе SQL Server, журнал транзакций системы, участвующей в репликации, должен находиться для защиты данных на своем собственном томе RAID 1. Файлы данных должны находиться на одном или нескольких томах RAID 10 или RAID 5. В отличие от репликации транзакций для репликации слиянием требуются лишь небольшие изменения в стандартных конфигурациях ввода-вывода.
Конфигурирование подсистем ввода-вывода на издателе. В общем случае при конфигурировании подсистемы ввода-вывода издателя вы должны следовать стандартным рекомендациям по конфигурированию SQL Server, описанным на протяжении этой книги. В отличие от репликации транзакций при репликации слиянием не возникает дополнительной нагрузки на журнал транзакций, поэтому следуйте стандартным рекомендациям по настройке, когда конфигурируете мощность подсистемы ввода-вывода для этого журнала.
Конфигурирование подсистемы ввода-вывода на дистрибьюторе.Дистрибьютор следует конфигурировать таким образом, чтобы дистрибутивная база данных имела собственный журнал транзакций на выделенном дисковом томе RAID 1. Это позволит получить максимальную производительность для журнала дистрибутивной базы данных, что повысит производительность самого дистрибьютора.
Конфигурирование подсистемы ввода-вывода на подписчике. Поскольку репликация слиянием является многонаправленной, подписчик и издатель настраиваются аналогичным образом. Просто следуйте общим рекомендациям по определению состава и конфигурации систем, описанным на протяжении этой книги.
Конфигурирование размера пакета слияния
В нагруженных системах вы можете повышать производительность репликации слиянием путем конфигурирования размера пакета слияния. Размер пакета слияния определяет, сколько измененных строк копируется на дистрибьютор за один раз. Если увеличить размер пакета, то будет отправляться меньшее количество более крупных пакетов, что может оказаться более эффективным.
Мониторинг системы репликации слиянием
Мониторинг репликации слиянием выполняется через Windows 2000 Performance Monitor (perfmon). В perfmon имеется ряд объектов, которые добавляются при использовании репликации SQL Server. Это следующие объекты:
SQLServer:Replication Agents. Указывает количество работающих агентов репликации каждого типа.
SQLServer:Replication Merge. Предоставляет данные об интенсивности операций слияния. Это информация о количестве конфликтов в секунду, количестве отправляемых загрузок в секунду и количестве получаемых загрузок в секунду. Эта информация фактически не помогает при настройке репликации транзакций.
Счетчики репликации слиянием SQL Server не слишком полезны для выявления проблем производительности. Лучше всего настроить систему репликации транзакций так же, как любую систему SQL Server, и уделить особое внимание тому, как работает сеть. Выявляйте узкие места там, где они обычно возникают в сети, а также следуйте рекомендациям этой лекции и двух предыдущих лекций, чтобы определить, не перегружен ли дистрибьютор.
Настройка системы репликации слиянием
Основные шагами в настройке системы репликации слиянием являются надлежащее конфигурирование и мониторинг системы, как это описано в предыдущих разделах; кроме того, следует уделять особое внимание производительности подсистем ввода-вывода и сети. Вы можете выполнять мониторинг системы через perfmon, но, как уже говорилось, perfmon не дает достаточно полезных данных для репликации слиянием. Вместо этого для настройки системы вы можете полагаться на другие счетчики SQL Server и счетчики Microsoft Windows 2000.
Как уже говорилось в лекции 24, вам может потребоваться изменение размера пакета массового копирования (BCP) и размера пакета слияния, если ваша система выполняет много обновлений. Увеличивая размер пакета BCP, вы увеличиваете производительность применения исходного снимка. Увеличивая размер пакета слияния, вы обеспечиваете копирование большего количества изменений за один раз, что может оказаться более эффективным методом. Если за один раз копируется больше изменений, система затрагивается менее часто, но она должна выполнять больше работы во время выполнения репликации.
Кроме того, вы можете изменять интервал опроса. Обычно вполне подходит значение этого интервала по умолчанию. Прежде чем настраивать интервал опроса, попробуйте изменить размеры пакетов. Если вы считаете, что репликация слиянием должна выполняться более часто или менее часто, измените интервал опроса.
Вам может также потребоваться мониторинг производительности сети и (при необходимости) ее увеличение, как и в случае репликации снимков или репликации транзакций. Если видно, что ваша система работает не оптимально, например, если центральные процессоры и подсистемы ввода-вывода достигли предела своих возможностей, а процесс репликации занимает слишком много времени, то у вас, возможно, имеются сетевые проблемы. К сожалению, сетевые проблемы нельзя диагностировать с помощью perfmon. Perfmon не имеет счетчика, который бы отражал проблемы сети. Следует использовать продукт для мониторинга сети, такой как Microsoft Systems Management Server (SMS). Выполните мониторинг сетевой платы, чтобы определить, не достигла ли она предела своих возможностей. Если ваша сеть достигла предела своих возможностей, приобретите более быстрые сетевые платы или добавьте для репликации и/или резервного копирования и восстановления частную сеть. И, наконец, помните, что издатель, дистрибьютор и подписчики – это системы SQL Server. Поэтому вам следует настраивать эти системы точно так же, как и любую другую систему SQL Server. Рекомендации по настройке для систем SQL Server приводятся на протяжении всей этой книги.
Заключение
Эта лекция является последней из трех лекций, описывающих репликацию в SQL Server. В этой лекции вы узнали, как выполняется репликация слиянием, почему вам может потребоваться репликация слиянием и как правильно конфигурировать, отслеживать и настраивать репликацию слиянием. В следующей лекции вы узнаете, что такое Microsoft Analysis Services и как использовать эти службы.
Репликация слиянием отличается от репликации транзакций тем, что она по своей сути является многонаправленной. При использовании репликации слиянием издатели и подписчики могут равным образом обновлять публикацию. Репликация транзакций также позволяет подписчикам обновлять публикацию, но эти два типа репликации выполняются совершенно различным образом. В этой лекции вы узнаете, как действует репликация слиянием и как выполнять ее конфигурирование, мониторинг и настройку.
Введение в репликацию слиянием
При репликации слиянием происходит многонаправленная репликация между издателем и одним или несколькими подписчиками. Это позволяет нескольким системам иметь модифицируемые копии публикации и модифицировать свои собственные копии. Модификация на издателе будет реплицироваться подписчикам. Модификация на подписчике будет реплицироваться издателю и затем реплицироваться остальным подписчикам.
В отличие от репликации транзакций репликация слиянием осуществляется путем инсталляции триггеров на издателе и на подписчиках. При каждом изменении в публикации или в одной из ее копий происходит активизация соответствующего триггера, который помещает в очередь команду репликации для отправки в дистрибутивную базу данных. Эта команда, в конце концов, передается в дистрибутивную базу данных и затем передается на системы, участвующие в репликации. В связи с таким способом работы репликация слиянием создает значительно более высокую нагрузку (в особенности на издателе), чем репликация транзакций.
Как вы узнаете из этой лекции, ключевыми компонентами системы репликации слиянием являются агент слияния Merge Agent и дистрибутивная база данных. Merge Agent согласует (выполняет слияние) накапливающиеся изменения, которые были внесены после предыдущего согласования. В случае репликации слиянием агент распространения (Distribution Agent) не используется – Merge Agent взаимодействует как с и издателем, так и с дистрибьютором. Агент создания снимка (Snapshot Agent) используется только для создания начальной базы данных. Merge Agent выполняет следующие задачи:
Merge Agent загружает все изменения с подписчика.
Все строки без конфликта (строки, которые не были одновременно модифицированы и на издателе, и на подписчике), загружаются сразу; конфликтующие строки (строки, модифицированные на обеих системах) отправляются арбитру. Арбитр – это модуль, который используется для разрешения конфликтов в репликации слиянием. Вы можете конфигурировать этот модуль для разрешения конфликтов в соответствии с вашими требованиями.
Все изменения применяются к издателю.
Merge Agent загружает все изменения с издателя.
Все строки без конфликта загружаются сразу; конфликтующие строки отправляются арбитру.
Все изменения применяются к подписчику.
Этот процесс повторяется в соответствии с тем, как он запланирован. В случае push-подписок (принудительных подписок) агент Merge Agent запускается на издателе. В случае pull-подписок (подписок по запросу) Merge Agent запускается на подписчике. Каждая публикация в репликации слиянием имеет своего собственного агента Merge Agent.
Виды использования репликации слиянием
Репликация слиянием используется при необходимости многонаправленной репликации. Репликация слиянием находит разнообразное применение. То, что подписчики могут модифицировать данные, повышает уровень ее гибкости и применимости. В частности, репликация слиянием может находить следующее применение:
Совместное использование данных отделами. Отделы, обрабатывающие, например, платежные ведомости, счета кредиторов и счета дебиторов, могут иметь доступ к одним и тем же данным. Пользователи каждого отдела могут модифицировать эти данные и получать слияние изменений на системах других отделов.
Совместная работа с данными в нескольких точках. Репликацию слиянием можно использовать в тех случаях, когда пользователям в нескольких точках требуются одни и те же данные и внесение изменений в эти данные.
Передача сообщений.Репликацию слиянием можно использовать как систему передачи сообщений, в которой можно модифицировать данные и отправлять изменения назад в исходную систему.
Конфигурирование системы
репликации слиянием
Конфигурирование репликации слиянием происходит аналогично конфигурированию репликации моментальных снимков и репликации транзакций. Сначала вы должны сконфигурировать публикацию и затем задать, чтобы она принудительно передавалась подписчику (push-подписка) или запрашивалась подписчиком (pull-подписка).
Примечание.Прежде чем конфигурировать любой тип репликации SQL Server, вы должны сначала сконфигурировать публикование и распространение. (См. разделе "Конфигурирование публикования и распространения" в лекции 26.)
Конфигурирование публикаций
Несмотря на то, что процесс конфигурирования публикаций был описан в лекциях 26 и 27, здесь приводятся процедуры, используемые с целью создания публикаций для репликации слиянием, поскольку они несколько отличаются от процедур, используемых для создания публикаций других типов. Чтобы сконфигурировать публикацию для репликации слиянием, выполните следующие шаги.
В окне Enterprise Manager щелкните на меню Tools. Далее укажите пункт Replication (Репликация) и выберите команду Create аnd Manage Publications (Создание и управление публикациями); или выберите пункт Wizards (Мастера), раскройте папку Replication в появившемся в диалоговом окне и выберите Create Publication Wizard (Мастер создания публикации). При любом способе появится диалоговое окно Create аnd Manage Publications (рис 28.1(рис 28.1) Диалоговое окно Create аnd Manage Publications (Создание и управление публикациями) Если публикации уже существуют, то в дополнение к кнопке Create Publication (Создать публикацию) будут доступны следующие кнопки:Push New Subscription (Новая push-подписка). Позволяет вам создать новую push-подписку для уже существующей публикации. (Cм. раздел "Конфигурирование подписок" далее.)
Properties and Subscriptions (Свойства и подписки).Позволяет вам модифицировать свойства как публикаций, так и подписок.
Script Publication (Сценарий создания публикации).Позволяет вам создать сценарий, который можно использовать для создания других публикаций.
Delete Publication (Удалить публикацию).Позволяет вам удалить уже сконфигурированную публикацию.
Выберите базу данных, которую хотите использовать для данной публикации (на рис 28.1(рис 28.2) Начальное окно мастера Create Publication Wizard
Щелкните на кнопке Next, чтобы появилось окно Choose Publication Database (Выбор базы данных для публикации) (рис 28.3(рис 28.3) Окно Choose Publication Database (Выбор базы данных для публикации)
Щелкните на кнопке Next, чтобы появилось окно Select Publication Type (Выбор типа публикации) (рис 28.4(рис 28.4) Окно Select Publication Type (Выбор типа публикации)В этом окне вы можете выбрать один из трех типов репликации. Будут представлены следующие варианты выбора:Snapshot publication (Публикация для репликации снимков).Создает публикацию для репликации снимка соответствующей статьи, который периодически копируется на подписчик. Такую публикацию можно создавать из любой таблицы.
Transactional publication (Публикация для репликации транзакций). Создает публикацию для репликации транзакций, в соответствии с которыми происходит обновление подписки изменениями, выполненными на издателе. Статьи могут создаваться только из таблиц с первичным ключом.
Merge publication (Публикация для репликации слиянием).Создает публикацию для репликации слиянием, которая позволяет выполнять двустороннюю репликацию между издателем и подписчиком. Статьи могут создаваться из любых таблиц.
Щелкните на кнопке выбора Merge publication и щелкните на кнопке Next, чтобы появилось окно Specify Subscriber Types (Указание типов подписчиков) (рис 28.5(рис 28.5) Окно Specify Subscriber Types (Указание типов подписчиков)
Щелкните на кнопке Next, чтобы появилось окно Specify Articles (Указание статей) (рис 28.6(рис 28.6) Окно Specify Articles (Указание статей)Примечание.Если на подписчике имеются хранимые процедуры, то репликацию можно сконфигурировать таким образом, чтобы реплицировать вызовы этих хранимых процедур, а не результаты вызовов хранимых процедур.
Поскольку мы указываем репликацию слиянием, то можно определить дополнительные атрибуты по статьям. Чтобы сконфигурировать эти атрибуты, сначала щелкните на кнопке [...] справа от определения соответствующей статьи. Появится окно Article Properties (Свойства статьи) (рис 28.7(рис 28.7) Вкладка General окна Table Article Properties (Свойства статьи)Во вкладках этого окна вы можете конфигурировать различные свойства статьи. На рис. 28.7 показана вкладка General (Общие). Здесь вы можете задавать имя статьи и владельца целевой базы данных, а также определять, что считается конфликтом. Принятый по умолчанию вариант (вторая кнопка выбора) указывает, что модификации, которые вносятся в одну колонку двумя источниками, будут рассматриваться как конфликт. Вы можете расширить это определение (первая кнопка выбора), указав, что изменения, которые вносятся в одну строку двумя источниками, будут рассматриваться как конфликт.
Щелкните на вкладке Resolver (Арбитр) (рис 28.8(рис 28.8) Вкладка Resolver (Арбитр) окна Table Article Properties
Во вкладке Merging Changes (Изменения при слиянии) (рис. 28.9), вы можете задавать дополнительную проверку безопасности для определенных операций. Установив один или несколько флажков в секции Check Permissions (Проверка полномочий) вы указываете, что перед выполнением определенной операции или операций будут проверяться полномочия агента Merge Agent на выполнение этой операции или операций. Кроме того, эта вкладка содержит флажок, который установлен по умолчанию. Этот флажок указывает, что изменения нескольких колонок в одной строке будут выполняться в виде одной операции с оператором UPDATE. Вам следует согласиться с этой установкой по умолчанию. Когда будете готовы продолжить работу, щелкните на кнопке OK.
Щелкните на кнопке Next. На данном этапе происходит проверка публикации, и, скорее всего, вы увидите окно (рис 28.10(рис 28.10) Вкладка Merging Changes (Изменения при слиянии) окна Table Article Properties(рис 28.9) Окно Article Issues (Вопросы по статьям)
Щелкните на кнопке Next. Появится окно Select Publication Name and Description (Выбор имени и описания публикации) (рис. 28.11). В этом окне вы указываете имя и описание публикации.
Щелкните на кнопке Next, чтобы появилось окно Customize the Properties of the Publication (Настройка свойств данной публикации) (
(рис 28.12) Окно Select Publication Name and Description (Выбор имени и описания публикации)(рис 28.11) Окно Customize the Properties of the Publication (Настройка свойств данной публикации)
Щелкните на кнопке Next. Появится окно мастера Completing the Create Publication Wizard (Завершение работы мастера создания публикации). Щелкните на кнопке Finish (Готово), и для вас будет создана публикация. Вы увидите ход выполнения по мере завершения различных шагов. И, наконец, вы увидите окно, в котором показаны выполненные шаги и сводка результатов.
Если вы посмотрите теперь содержимое папки Replication Monitor для агентов слияния Merge Agent, то обнаружите, что там ничего нет. Поскольку агенты Merge Agent используются для двусторонней репликации, то прежде чем начать репликацию, вам необходимо сконфигурировать подписчиков. После того как вы сконфигурируете подписчиков, Merge Agents появятся в папке Replication Monitor.
Конфигурирование подписок
Аналогично репликации моментальных снимков и репликации транзакций последним шагом в конфигурировании репликации слиянием является конфигурирование подписчиков. Сначала вы должны активизировать подписчиков в дистрибутивной базе данных; этот процесс был описан в разделе "Активизация подписчиков" лекции 26. Затем вы конфигурируете подписки со стороны подписчика или издателя. Со стороны подписчика вы можете конфигурировать pull-подписку; со стороны издателя вы можете конфигурировать push-подписку.
Конфигурирование pull-подписок
Управление и конфигурирование pull-подписок осуществляется со стороны подписчика. Тем самым вы должны конфигурировать pull-подписку с помощью Enterprise Manager в системе подписчика. Мы уже видели в разделе "Конфигурирование pull-подписок" лекции 27, как конфигурировать pull-подписку. Поскольку в данном случае используются почти те же шаги, мы приведем краткое описание и выделим отличия.
Вызовите окно мастера Pull Subscription Wizard (Мастер pull-подписки).
Появится начальное окно Pull Subscription Wizard.
Щелкните на кнопке Next, чтобы появилось окно Look for Publications (Поиск публикаций) Выберите для данного примера зарегистрированные серверы.
Щелкните на кнопке Next, чтобы появилось окно Choose Publications (Выбор публикаций), и выберите публикацию, которую хотите реплицировать.
Щелкните на кнопке Next, чтобы появилось окно Specify Synchronization Agent Login (Задать учетную запись подключения [login-запись] для агента синхронизации), и укажите, какую учетную запись будет использовать агент слияния для взаимодействия с издателем и дистрибьютором.
Щелкните на кнопке Next, чтобы появилось окно Choose Destination Database (Выбор целевой базы данных), и выберите базу данных.
Щелкните на кнопке Next, чтобы появилось окно Initialize Subscription (Инициализация подписки), и щелкните на нужной кнопке выбора.
Щелкните на кнопке Next, чтобы появилось окно Snapshot Delivery (Доставка снимка), и укажите местоположение для снимка.
Щелкните на кнопке Next, чтобы появилось окно Set Merge Agent Schedule (Задать расписание для агента слияния). Это окно аналогично окну Set Distribution Agent Schedule, которое вы видели в предыдущей лекции. Сделайте свой выбор в этом окне.
Щелкните на кнопке Next, чтобы появилось окно Set Subscription Priority (Задать приоритет подписки) (рис. 28.13). Здесь вы можете задать значение приоритета подписки, которое будет использовано для определения "победителя" конфликта. Вариант по умолчанию (рекомендованный) указывает, что для разрешения конфликта будет использоваться значение приоритета по издателю.
Щелкните на кнопке Next, чтобы появилось окно Start Required Services (Запуск требуемых служб), и запустите SQL Server Agent, если он еще не запущен.
Щелкните на кнопке Next, чтобы появилось окно Completing the Pull Subscription Wizard (Завершение работы мастера pull-подписки). Просмотрите ваши установки и затем щелкните на кнопке Finish. По окончании вашей работы с этим мастером будет создана pull-подписка, которая будет обновляться в соответствии с регулярным расписанием.
(рис 28.13) Окно Set Subscription Priority (Задать приоритет подписки)
Конфигурирование push-подписок
Push-подписка (принудительная подписка) инициируется на издателе. Push-подписка конфигурируется с помощью мастера Push Subscription Wizard (Мастер push-подписки). Для запуска этого мастера выполните следующие шаги:
Вызовите Push Subscription Wizard, используя один из двух методов. Для использования первого метода укажите пункт Replication в меню Tools окна Enterprise Manager и затем выберите пункт Push Subscription to Others (Push-подписка для других). Появится диалоговое окно Create and Manage Publications (Создание и управление публикациями) (рис 28.14(рис 28.14) Публикация, выбранная в диалоговом окне Create and Manage Publications (Создание и управление публикациями)Выделите публикацию в списке Databases and Publications (Базы данных и публикации) и затем щелкните на кнопке Push New Subscription (Создать push-подписку). Чтобы использовать второй метод, выберите из меню Tools пункт Wizards, раскройте папку Replication в появившемся диалоговом окне Select Wizards, выберите Create Push Subscription Wizard и щелкните на кнопке OK. Выделите публикацию в появившемся диалоговом окне Create and Manage Publications и затем щелкните на кнопке Push New Subscription.
Появится начальное окно мастера Push Subscription Wizard (рис 28.15(рис 28.15) Начальное окно мастера Push Subscription Wizard
Щелкните на кнопке Next, чтобы появилось окно Choose Subscribers (Выбор подписчиков) (рис 28.16(рис 28.16) Окно Choose Subscribers (Выбор подписчиков)
Щелкните на кнопке Next, чтобы появилось окно Choose Destination Database (рис 28.17(рис 28.17) Окно Choose Destination Database
Щелкните на кнопке Next, чтобы появилось окно Set Merge Agent Location (Задать местоположение для агента слияния) (рис 28.18(рис 28.18) Окно Set Merge Agent Location (Задать местоположение для агента слияния)
Щелкните на кнопке Next, чтобы появилось окно Set Merge Agent Schedule (рис 28.19(рис 28.19) Окно Set Merge Agent Schedule (Задать расписание для агента слияния)
Щелкните на кнопке Next, чтобы появилось окно Initialize Subscription (Инициализация подписки) (рис 28.20(рис 28.20) Окно Initialize Subscription (Инициализация подписки)В этом окне вы указываете, нужно ли инициализировать данную подписку. По умолчанию выбран вариант инициализации схемы и набора данных на подписчике. В этом окне вы можете также запустить Snapshot Agent, если он еще не запущен. Имеет смысл запускать Snapshot Agent, когда вы инициализируете снимок; в противном случае вам придется запускать этот агент вручную. После того как снимок инициализирован и начинается репликация, вам не нужно использовать снимок, пока не потребуется создать новую подписку. Каждый раз, как вы создаете подписку, создавайте новый снимок, и вам больше не нужно создавать снимки в соответствии с каким-либо расписанием, если только вам не потребуется ресинхронизация базы данных подписчика с использованием снимков.
Щелкните на кнопке Next, чтобы появилось окно Set Subscription Priority (рис 28.21(рис 28.21) Окно Set Subscription Priority (Задать приоритет подписки)
Щелкните на кнопке Next, чтобы появилось окно Start Required Services (рис 28.22(рис 28.22) Окно Start Required Services
Щелкните на кнопке Next, чтобы появилось окно Completing the Push Subscription Wizard (Завершение работы мастера push-подписки) (рис 28.23(рис 28.23) Окно Completing the Push Subscription Wizard
Управление репликацией
Теперь вы знаете, как создавать и конфигурировать реплицируемую базу данных в среде SQL Server 2000. Чтобы управлять этой реплицируемой средой или устранять проблемы, если репликация не запускается, вы будете использовать возможности мониторинга и параметры конфигурирования в Enterprise Manager.
Мониторинг и управление агентами
репликации
Агенты репликации можно найти в папке Replication Monitor окна Enterprise Manager. Для доступа к этим агентам выполните следующие шаги.
Раскройте группу серверов, раскройте сервер и затем раскройте папку Replication Monitor.
Если сервер, который вы раскрыли, является издателем, то под папкой Replication Monitor появится папки Publishers (Издатели) и Agents (Агенты). В папке Publishers находятся издатели, которые принадлежат данному серверу. В папке Agents находятся папки для агентов Snapshot Agents, Log Reader Agents, Distribution Agents, Merge Agents и различных агентов (папка Miscellaneous Agents), которые используются для очистки и протоколирования выполняемых операций.
Хотя обычно не требуется запускать или прекращать работу агентов, вы можете использовать для этого Replication Monitor. Если создается впечатление, что ваша реплицируемая система не работает после того, как вы сконфигурировали ее, то вполне вероятно, что не запущен агент Snapshot Agent, возможно, из-за того, что этот агент использует принятое по умолчанию расписание. (Именно поэтому в процессе конфигурирования вы имеете возможность сразу инициализировать создание снимка.) Проверяйте состояние агентов, щелкая на папке соответствующих агентов в Enterprise Manager и просматривая информацию об этих агентах в правой панели (рис 28.24(рис 28.24) Агент Merge Agent, представленный в окне Enterprise Manager
Щелкните правой кнопкой мыши на агенте, чтобы появилось контекстное меню, содержащее ряд опций, которые вы можете использовать для мониторинга и управления агентами. Меню, которое появляются для агента Merge Agent (рис. 28.25).Ниже описываются опции меню для агента Merge Agent.
Error Details (Подробности ошибок).Выводятся подробное описание возникших ошибок.
Agent History (Журнал работы агента). Выводится протокол операций агента.
(рис 28.25) Опции агента Merge Agent
Agent Profiles (Профили агента). Позволяет вам просматривать и модифицировать параметры агента, такие как тайм-ауты учетной записи подключения (login), размер пакета и тайм-ауты запросов.
Run Agent At Subscriber (Запуск агента на подписчике). Позволяет указывать запуск агента на подписчике.
Run Agent At Distributor (Запуск агента на дистрибьюторе). Позволяет указывать запуск агента на дистрибьюторе.
Start Agent и Stop Agent (Запуск агента и Остановка агента). Позволяют вам запускать агент, если он остановлен, или останавливать его, если он запущен.
Refresh Rate And Settings (Частота и параметры обновления). Позволяет вам модифицировать частоту обновления данных монитора производительности Performance Monitor.
Select Columns (Выбрать колонки). Позволяет вам указывать, какие колонки просматриваются в панели результатов.
Show Anonymous Subscriptions (Показать анонимные подписки). Указывает, будут ли показаны анонимные подписки в этом окне.
Help (Справка). Справочная информация для данного окна.
Конфигурирование Merge Agent
После создания публикации вам, возможно, потребуется модифицировать поведение агента слияния Merge Agent. Например, вы можете задать, как происходит вызов Merge Agent, выбрав режим, в котором он будет работать. В непрерывном режиме запуск Merge Agent происходит при запуске SQL Server Agent. В режиме расписания (который является предпочтительным режимом) Merge Agent запускается в соответствии с расписанием и переходит в неактивное состояние после доставки всех реплицируемых транзакций. Чтобы сконфигурировать Merge Agent, выполните следующие шаги.
В окне Enterprise Manager раскройте сервер, раскройте папку Replication Monitor, раскройте папку Agents и затем щелкните на папке Merge Agents.
В правой панели Enterprise Manager щелкните правой кнопкой мыши на публикации и выберите из появившегося контекстного меню пункт Agent Properties (Свойства агента).
Появится окно свойств данного агента Merge Agent (рис 28.26(рис 28.26) Вкладка General окна свойств Merge Agent
Щелкните на вкладке Steps (Шаги) (рис 28.27(рис 28.27) Вкладка Steps (Шаги) окна свойств Merge AgentВ этой вкладке вы увидите шаги, которые выполняет данный Merge Agent, когда происходит его вызов. Здесь выводятся и описываются три следующих шага.Merge Agent Startup Message (Сообщение о запуске агента). В таблицу журнала работы агента Log Reader Agent помещается сообщение (таблица MSLogreader_history в дистрибутивной базе данных).
Run Agent (Запуск агента). Запуск данного агента в соответствии с заданным расписанием. При работе в непрерывном режиме этот агент работает, пока не будет отключена система.
Detect Nonlogged Agent Shutdown (Обнаружено незарегистрированное отключение агента). В таблицу журнала работы агента Log Reader Agent помещается сообщение в случае отключения агента.
Выделите шаг Run Agent и щелкните на кнопке Edit (Редактировать), чтобы появилось диалоговое окно Edit Job Step (Редактирование шага) (рис 28.28(рис 28.28) Вкладка General диалогового окна Edit Job Step (Редактирование шага)Для агента Merge Agent можно сконфигурировать много параметров. Параметры по умолчанию этого агента можно модифицировать в окне Command (Команда) диалогового окна Edit Job Step и в диалоговом окне Replication Agent Profile Details (Детали профиля агента репликации), которое описано ниже в этой лекции. Здесь описаны два параметра, которые вы можете модифицировать в диалоговом окне Edit Job Step.
ДContinuous (Непрерывный). Указывает, работает ли Merge Agent в непрерывном режиме. Чтобы задать режим расписания, удалите этот параметр.
DistributorSecurityMode (Режим безопасности дистрибьютора). Указывает, какой режим аутентификации использует Merge Agent: SQL или Microsoft Windows 2000.
Кроме того, вы можете задать в диалоговом окне Edit Job Step другие параметры, такие как LoginTimeout, PollingInterval, QueryTimeout, информацию о дистрибьюторе и подписчиках и Output.Дополнительная информация. Описание этих параметров можно найти в SQL Server Books Online. Выполните поиск "Merge Agent, starting" (Merge Agent, запуск) в индексе Books Online.
Закончив модифицирование свойств Merge Agent, щелкните на кнопке OK, чтобы сохранить ваши изменения.
Вы можете модифицировать другие параметры в профиле Merge Agent. Чтобы модифицировать профиль, выполните следующие шаги:
В правой панели Enterprise Manager щелкните правой кнопкой мыши на Merge Agent, как это описано выше в этом разделе, и выберите из появившегося контекстного меню пункт Agent Profiles (Профили агента). Появится диалоговое окно Merge Agent Profiles (рис 28.29(рис 28.29) Диалоговое окно Merge Agent ProfilesОтметим, что это диалоговое окно содержит гораздо больше вариантов, чем диалоговое окно Log Reader Agent Profiles, которое вы видели в лекции 27. Эти профили обеспечивают широкий диапазон функциональных возможностей, чтобы вы могли выбрать профиль, который наиболее подходит для конкретной конфигурации вашей системы.
Щелкните на кнопке New Profile (Создать профиль), чтобы создать новый профиль. Текущий профиль нельзя модифицировать. В результате появится диалоговое окно Replication Agent Profile Details (Детали профиля агента репликации), (рис. 28.30).
В этом диалоговом окне вы можете модифицировать следующие параметры:BcpBatchSize. Указывает количество строк, которые будут передаваться в операции массового копирования. Он используется в основном для журнального протоколирования.
ChangesPerHistory. Указывает пороговое значение, при переходе которого происходит журнальное протоколирование передаваемых и получаемых сообщений.
DownloadGenerationsPerBatch. Указывает количество поколений данных, которое будет загружаться в пакете
DownloadReadChangesPerBatch. Указывает количество изменений, которое будет считываться в пакете.
(рис 28.30) иалоговое окно Replication Agent Profile Details (Детали профиля агента репликации)
FastRowCount. Указывает тип проверки достоверности, который будет использоваться. Значение 1 указывает быстрый метод, значение 0 – метод подсчета строк (rowcount).
HistoryVerboseLevel. Указывает, сколько информации будет протоколироваться в журнале.
KeepAliveMessageInterval. Указывает количество секунд между проверкой с помощью метода контрольных импульсов (heartbeat), реализуемого участниками репликации, чтобы определить, функционируют ли остальные участники репликации.
LoginTimeout. Указывает допустимое время ожидания в секундах для Merge Agent.
MaxDownloadChanges. Указывает максимальное количество получаемых загрузок в одном сеансе.
MaxUploadChanges. Указывает максимальное количество отправляемых загрузок в одном сеансе.
MaxDeadlockRetries. Указывает максимальное количество попыток агента в случае взаимоблокировки.
PollingInterval. Указывает, насколько часто опрашивается журнал транзакций на издателе (для получения новых транзакций).
QueryTimeout. Указывает допустимое время ожидания в секундах для запроса.
UploadGenerationsPerBatch. Указывает количество поколений отправляемых загрузок, которые будут обрабатываться в одном пакете.
UploadReadChangesPerBatch. Указывает количество операций чтения, которое будет обрабатываться в одном пакете.
UploadWriteChangesPerBatch.Указывает количество операций записи, которое будет обрабатываться в одном пакете.
Validate. Указывает, нужно ли проводить проверку достоверности в конце сеанса.
ValidateInterval. Указывает, насколько часто проводится проверка достоверности (если она вообще проводится), когда агент работает в непрерывном режиме.
Если Merge Agent используется в режиме расписания, а не в непрерывном режиме, то он вызывается агентом SQL Server Agent и выполняет, прежде чем закончить работу, то количество изменений, которое указано параметрами MaxUploadChanges и MaxDownloadChanges.
Отключение репликации
Вы можете легко отключить все операции или часть операций репликации в вашей системе с помощью мастеров Enterprise Manager, чтобы удалить определенные компоненты репликации. В этом разделе вы узнаете, как выполнять эту простую задачу.
Удаление push-подписок
Чтобы удалить push-подписку, используйте Enterprise Manager в системе дистри-бьютора для вызова мастера Push Subscription Wizard. После вызова этого мастера появится диалоговое окно Create and Manage Publications. В поле списка Databases and Publications выделите подписку, которую хотите удалить, и затем щелкните на кнопке Delete Publication (Удалить публикацию). Вы получите запрос для подтверждения того, что действительно хотите удалить данную подписку. Щелкните на кнопке Yes, чтобы удалить подписку.
Удаление pull-подписок
Чтобы удалить pull-подписку, используйте Enterprise Manager в системе подписчика для вызова мастера Pull Subscription Wizard. После вызова этого мастера появится диалоговое окно Create and Manage Publications. В поле списка Databases And Publications выделите подписку, которую хотите удалить, и затем щелкните на кнопке Delete Publication. Вы получите запрос для подтверждения того, что действительно хотите удалить данную подписку.
Удаление распространения и публикаций
Чтобы удалить распространение и публикации, вы должны вызвать мастер Disable Publishing and Distribution Wizard (Отключение публикования и распространения). В первом окне этого мастера вы указываете, что вам нужно: отключить все распространение и все публикации или удалить только публикации. Если выбрать первый вариант, то будет удалено все – публикование, распространение и публикации. Если выбрать второй вариант (принятый по умолчанию), то будут удалены только публикации. Затем вы должны выбрать публикации, которые хотите удалить. После вашего выбора появится окно подтверждения, где вам дается последняя возможность отменить свое решение. Чтобы удалить выбранные вами компоненты репликации, щелкните на кнопке Yes.
Мониторинг и настройка системы репликации слиянием
В этом разделе описывается, как выполнять мониторинг и настройку системы репликации слиянием для получения оптимальной производительности. Кроме того, в этом разделе представлены некоторые рекомендации по конфигурированию для систем репликации слиянием. В данном разделе также дается обзор атрибутов репликации слиянием.
Атрибуты репликации слиянием
Репликация слиянием существенно отличается от других методов репликации. В отличие от репликации транзакций и репликации снимков она не является однонаправленным методом репликации. Модификации могут выполняться на издателе и на любом числе подписчиков. Кроме того, в случае репликации транзакций происходит чтение журнала транзакций (для отслеживания изменений), что является внешней операций по отношению к обычным операциям SQL Server, в то время как в случае репликации слиянием для реплицируемых таблиц создаются триггеры, которые активизируются при изменениях в этих таблицах.
Репликация слиянием начинается с применения снимка, но поскольку эта операция выполняется только один раз, вам не нужно настраивать процесс репликации снимка. Чтобы выполнять репликацию, система слияния создает таблицы как на издателе, так и на дистрибьюторе. Кроме того, к каждой реплицируемой таблице добавляется новая колонка, содержащая уникальный идентификатор строк. Он используется для уникального идентифицирования каждой строки, чтобы агент репликации мог эффективно отслеживать изменения.
При вставке или модифицировании строки триггер помечает эту строку для репликации. Затем происходит активизация агента Merge Agent, который собирает все помеченные строки и отправляет их дистрибьютору для репликации. Одновременно с этим Merge Agent модифицирует любые строки в таблицах издателя, которые были модифицированы в таблицах системы или систем подписчика. Так осуществляется двусторонняя репликация.
Конфигурирование репликации слиянием
Если вы используете репликацию слиянием, правильное конфигурирование сети и подсистем ввода-вывода, участвующих в репликации систем, крайне важно для повышения производительности репликации так же, как и в случае использования других методов репликации. Вы можете также повысить производительность репликации слиянием за счет конфигурирования размера пакета слияния. Увеличивая размер этого пакета, вы обеспечиваете использования меньшего числа более крупных пакетов, что является более эффективным методом. Кроме того, вам может потребоваться настройка репликации снимка, однако репликация снимка происходит только один раз, поэтому вы можете пропустить этот шаг. И наконец, вы можете модифицировать Merge Agent; этот процесс был описан выше в этой лекции. В данном разделе описаны конфигурирование ввода-вывода и конфигурирование размера пакета слияния.
Конфигурирование достаточной мощности
ввода-вывода
Конфигурируя достаточную мощность подсистем ввода-вывода, вы можете повысить производительность всего процесса репликации. Как и в любой системе SQL Server, журнал транзакций системы, участвующей в репликации, должен находиться для защиты данных на своем собственном томе RAID 1. Файлы данных должны находиться на одном или нескольких томах RAID 10 или RAID 5. В отличие от репликации транзакций для репликации слиянием требуются лишь небольшие изменения в стандартных конфигурациях ввода-вывода.
Конфигурирование подсистем ввода-вывода на издателе. В общем случае при конфигурировании подсистемы ввода-вывода издателя вы должны следовать стандартным рекомендациям по конфигурированию SQL Server, описанным на протяжении этой книги. В отличие от репликации транзакций при репликации слиянием не возникает дополнительной нагрузки на журнал транзакций, поэтому следуйте стандартным рекомендациям по настройке, когда конфигурируете мощность подсистемы ввода-вывода для этого журнала.
Конфигурирование подсистемы ввода-вывода на дистрибьюторе.Дистрибьютор следует конфигурировать таким образом, чтобы дистрибутивная база данных имела собственный журнал транзакций на выделенном дисковом томе RAID 1. Это позволит получить максимальную производительность для журнала дистрибутивной базы данных, что повысит производительность самого дистрибьютора.
Конфигурирование подсистемы ввода-вывода на подписчике. Поскольку репликация слиянием является многонаправленной, подписчик и издатель настраиваются аналогичным образом. Просто следуйте общим рекомендациям по определению состава и конфигурации систем, описанным на протяжении этой книги.
Конфигурирование размера пакета слияния
В нагруженных системах вы можете повышать производительность репликации слиянием путем конфигурирования размера пакета слияния. Размер пакета слияния определяет, сколько измененных строк копируется на дистрибьютор за один раз. Если увеличить размер пакета, то будет отправляться меньшее количество более крупных пакетов, что может оказаться более эффективным.
Мониторинг системы репликации слиянием
Мониторинг репликации слиянием выполняется через Windows 2000 Performance Monitor (perfmon). В perfmon имеется ряд объектов, которые добавляются при использовании репликации SQL Server. Это следующие объекты:
SQLServer:Replication Agents. Указывает количество работающих агентов репликации каждого типа.
SQLServer:Replication Merge. Предоставляет данные об интенсивности операций слияния. Это информация о количестве конфликтов в секунду, количестве отправляемых загрузок в секунду и количестве получаемых загрузок в секунду. Эта информация фактически не помогает при настройке репликации транзакций.
Счетчики репликации слиянием SQL Server не слишком полезны для выявления проблем производительности. Лучше всего настроить систему репликации транзакций так же, как любую систему SQL Server, и уделить особое внимание тому, как работает сеть. Выявляйте узкие места там, где они обычно возникают в сети, а также следуйте рекомендациям этой лекции и двух предыдущих лекций, чтобы определить, не перегружен ли дистрибьютор.
Настройка системы репликации слиянием
Основные шагами в настройке системы репликации слиянием являются надлежащее конфигурирование и мониторинг системы, как это описано в предыдущих разделах; кроме того, следует уделять особое внимание производительности подсистем ввода-вывода и сети. Вы можете выполнять мониторинг системы через perfmon, но, как уже говорилось, perfmon не дает достаточно полезных данных для репликации слиянием. Вместо этого для настройки системы вы можете полагаться на другие счетчики SQL Server и счетчики Microsoft Windows 2000.
Как уже говорилось в лекции 24, вам может потребоваться изменение размера пакета массового копирования (BCP) и размера пакета слияния, если ваша система выполняет много обновлений. Увеличивая размер пакета BCP, вы увеличиваете производительность применения исходного снимка. Увеличивая размер пакета слияния, вы обеспечиваете копирование большего количества изменений за один раз, что может оказаться более эффективным методом. Если за один раз копируется больше изменений, система затрагивается менее часто, но она должна выполнять больше работы во время выполнения репликации.
Кроме того, вы можете изменять интервал опроса. Обычно вполне подходит значение этого интервала по умолчанию. Прежде чем настраивать интервал опроса, попробуйте изменить размеры пакетов. Если вы считаете, что репликация слиянием должна выполняться более часто или менее часто, измените интервал опроса.
Вам может также потребоваться мониторинг производительности сети и (при необходимости) ее увеличение, как и в случае репликации снимков или репликации транзакций. Если видно, что ваша система работает не оптимально, например, если центральные процессоры и подсистемы ввода-вывода достигли предела своих возможностей, а процесс репликации занимает слишком много времени, то у вас, возможно, имеются сетевые проблемы. К сожалению, сетевые проблемы нельзя диагностировать с помощью perfmon. Perfmon не имеет счетчика, который бы отражал проблемы сети. Следует использовать продукт для мониторинга сети, такой как Microsoft Systems Management Server (SMS). Выполните мониторинг сетевой платы, чтобы определить, не достигла ли она предела своих возможностей. Если ваша сеть достигла предела своих возможностей, приобретите более быстрые сетевые платы или добавьте для репликации и/или резервного копирования и восстановления частную сеть. И, наконец, помните, что издатель, дистрибьютор и подписчики – это системы SQL Server. Поэтому вам следует настраивать эти системы точно так же, как и любую другую систему SQL Server. Рекомендации по настройке для систем SQL Server приводятся на протяжении всей этой книги.
Заключение
Эта лекция является последней из трех лекций, описывающих репликацию в SQL Server. В этой лекции вы узнали, как выполняется репликация слиянием, почему вам может потребоваться репликация слиянием и как правильно конфигурировать, отслеживать и настраивать репликацию слиянием. В следующей лекции вы узнаете, что такое Microsoft Analysis Services и как использовать эти службы.