Репликация
Репликация - несмотря на "страшное" слово - это не более чем массированное копирование данных в расшаренный ресурс из одного SQL-сервера утилитой командной строки BCP с последующей загрузкой этих данных в другой SQL-сервер. Вызов утилиты BCP производится через хранимые процедуры, а EnterpriseManager просто позволяет интерактивно настраивать параметры этих процедур/ Но документация на репликацию весьма обширна. И окошек настройки репликации в Enterprice Manager'е, наверное, не менее сотни. Чтобы войти в курс этого дела - я и подготовил эту страничку.
Первое, что нужно настроить для репликации - учетную запись. Любые репликации работают только если SQLServerAgent запущен не под учетной записью LocalSystems, а под пользовательской. Впрочем это надо делать всегда и для самого SQL-сервера - иначе даже TSQL-Debugger просто не удастся запустить - а без этого вам не удастся написать ни одной программы...
Второе, что надо понять - несмотря на многообразие разноцветных картинок и папок, в репликации участвуют всего Четыре обьекта:
- Публикации. Когда публикация сделана - она попадает в раздел Replication->Publications в виде книжки. Они отличаются по цвету: красная - если полная, синяя если транзакциональная, желтая - если сведением. Сама база после этого расшаривается как расшаренная папка. Публикация настраивается мастером и имеет одиннадцать вкладок со свойствами.
- Подписчики. Если подписчика еще нет, то щелкаем на книжку публикации, а там нет содержимого, т.е подписчиков. А вот если подписчики есть, то они отображаются как содержимое книжки. Тот же SQL-сервер может выступить не только издателем, но и подписчиком - в таком случае все его подписки будут отображаться в папке Replication -> Subscriptions. Таким образом одна и та же подписка отображается в Enterprise Manager'е в двух местах, но лишь в одном месте доступно ее полное управление. Так подписка типа PULL - доступна в окне Replications->Subscriptions подписчика, и недоступна в окне подписчиков Replications->Publications издателя. Соответственно, для подписки типа PUSH - наоборот. О типах подписчиков мы поговорим дальше подробнее.
- Дистрибьюторы. В принципе сервер-дистрибьютор публикации может не совпадать с издателем публикации или подписчиком.
- Агенты. Это, собственно, и есть программы - непосредственные исполнители операций. Для каждой базы можно задать режим просмотра свойств каждой репликации - Replication Monitor. (Для сервера-дистрибьютора эта возможность добавляется автоматически). При этом одни и те же репликации (т.е. фактически протокол работы программ-исполнителей репликации) можно будет просматривать в двух разрезах:
в папке Replication Monitor -> Publisher - по каждому из издателей, a
в папке Replication Monitor -> Agent - по каждому из агентов.
Выполняют репликацию шесть типов утилит-агентов:
- Snapshot Agents
- Log Reader Agents - два вида.
- Queue Reader Agents
- Distribution Agents - четыре вида.
- Merge Agents - семь видов.
- Miscellaneous Agents - тринадцать видов.
- Properties - Агенты работают как сложные командные файлы Step, где каждый следующий шаг зависит от результатов выполнения предыдущего шага, по плану Shedules, возможно с уведомлениями Notfications.
- History - Журнал выполнения каждого шага агента c детальным описанием возникших ошибок.
- Profiles - уточненные разновидности(Profile) агентов каждого типа и параметры их вызова.
- Snapshot - полный моментальный снимок тиражируется всем подписчикам.
- Transactional - реплицируются только таблицы и хранимые процедуры, причем можно отобрать не все. Фактически подписчику пересылается журнал транзакций и там выполняются те же транзакции, что и на издателе репликации. Начальная синхронизация издателя и подписчика выполняется автоматически по методу Snapshot.
- Merge - позволяют вносить на подписчиках изменения в общую базу данных. При этом используются разнообразные менеджеры разрешения конфликтов, включая интерактивные.
Это, так сказать, теоретическая часть. А теперь посмотрим как в практическом плане пошагово настроить репликацию с помощью Enterprise Managera. Первым шагом всегда делается публикация (аналогично расшариванию файлов). Она выполняется мастером Create Publication. Мастер проходит последовательно одиннадцать окон в котором выбираются все свойства публикации - например - полная, транзакциональная или сведением - которые потом видны и на 11 вкладках свойств репликации.
Вторым шагом создается собственно подписчик. Инициатором репликации может выступать как сервер-издатель PUSH SUBSCRIPTIONS, так и сервер-подписчик PULL SUBSCRIPTION. Момент начала репликации для PUSH SUBSCRIPTIONS может быть:
- мгновенная при изменениях на издателе
- по планировщику времени
- по свойствам, определенным на подписчике
- непрерывно с минимальной задержкой
- по планировщику времени
- по командам Enterprise Manager и Windows Sincronisation Manager
Наконец,третьим шагом, необходимо правильно задать свойства сервера-диструбьютора публикации. В эти свойства можно войти так или так. Первоначально они конфигурируются мастером. Когда дистрибьютор будет уже сконфигурирован - в этом же пункте Enterprice Manager'а будут доступны уже не мастер, а непосредственно свойства дистрибьютора. Для дистрибьютора публикации задаются папка - через которую выполняются репликации, а также общий список опубликованных баз и подписчиков. Этими тремя шагами, собственно и будут сконфигурированы параметры агентов, т.е. в Enterprise Meneger'е будут заданы необходимые параметры вызова хранимых процедур, которые вызовут с правильными параметрами утилиты командной строки, которые выгрузят данные в заданную папку, а оттуда загрузят в другой SQL-сервер. Как видите, несмотря на кажущуюся простоту - вариантов настройки здесь очень много. И область для приложения интеллекта в этом деле есть...
Кроме собственно документации, на тему репликации рекомендуется еще прочитать: Утилиты репликации, Публикация через FTP.
|