Мастер-Тур:Настройка репликации
Содержание
Общая архитектура репликации
Репликация представляет собой набор технологий копирования и распространения данных и объектов баз данных между базами данных.
При репликации изменения, сделанные в одной копии объекта, могут быть распространены в другие копии.
Существует несколько видов репликации:
- Моментальных снимков
- Транзакций
- Слиянием
Компания Мегатек использует репликацию транзакций. Её схема представлена на рисунке:
Инфраструктура состоит из 3 блоков:
- Издатель
- Распространитель
- Подписчик
Репликация транзакций реализуется агентом моментальных снимков, агентом чтения журналов и агентом распространителя.
Прежде чем новый подписчик репликации транзакций сможет получить добавочные изменения от издателя, на подписчике должны находиться таблицы со схемой и данными, совпадающими со схемой и данными в таблицах на издателе. Исходный набор данных обычно является моментальным снимком, созданным агентом моментальных снимков. Исходный набор данных может также предоставляться через резервную копию или другим способом.
Агент моментальных снимков готовит файлы моментальных снимков, содержащие схему, данные публикуемых таблиц и объекты базы данных, хранит файлы в папке моментальных снимков и записывает задания синхронизации в базу данных распространителя на распространителе.
Агент чтения журналов выполняется на распространителе; обычно он выполняется непрерывно, но может также запускаться согласно задаваемому расписанию. При выполнении агент чтения журнала сначала читает журнал транзакций публикации (обычный журнал транзакций базы данных) и выявляет все инструкции INSERT, UPDATE и DELETE или другие изменения данных в транзакциях, отмеченных для репликации. Далее агент копирует эти транзакции в пакетах в базу данных распространителя на стороне распространителя.
Команды транзакций хранятся в базе данных распространителя до тех пор, пока они не будут распространены на все подписчики или пока не закончится максимальный срок хранения на распространителе. Подписчики получают транзакции в том же порядке, в котором они применялись на издателе.
Агент распространителя запускается на распространителе. Агент применяет транзакции из базы данных распространителя к подписчику.
Использование репликации
При больших нагрузках на сервер репликация позволяет задействовать дополнительные мощности. Это достигается отделением механизма поиска и подбора данных в ПК «Мастер-Web» в отдельную базу данных, которая может быть размещена на отдельном сервере, что позволяет значительно увеличить скорость работы как в ПК «Мастер-Web», так и в ПК «Мастер-Тур».
Установку репликации баз данных рекомендуется производить в нерабочее для компании время.
Перед началом настройки обязательно необходимо создать резервную копию рабочей базы данных.
ВНИМАНИЕ!!! Перед установкой новой версии репликации необходимо удалить предыдущую версию, если таковая использовалась.
Удаление репликации
База-публикатор
Настройки таблицы SystemSettings
При прогоне скрипта создания публикации изменяются настройки в таблице SystemSettings:
update dbo.SystemSettings
set
ss_parmvalue = 'publisher'
where
ss_parmname = 'MWReplication'
update dbo.SystemSettings
set
ss_parmvalue = @subscriptionDB –- название БД подписчика
where
ss_parmname = 'MWReplSubscriberDB'
Эти настройки влияют на работу хранимых процедур mwIsPublisher() и mwIsSubscriber() и на логику других хранимых процедур, использующих эти процедуры.
Статьи репликации ПК "Мастер-Web"
Объекты, из которых копируются данные, называются статьями репликации.
Очередь обработки туров
Очередь содержится в таблице mwReplQueue, детализация – mwReplQueueHistory.
Для отработки очереди используется job mwReplQueueManager, который вызывает хранимую процедуру mwReplProcessQueue. В зависимости от команды выполняется соответствующее действие.
Выставление тура
Процесс выставления тура при репликации представлен на рисунке.
Сегментация поисковых таблиц
Включением управляет настройка MWDivideByCountry в таблице SystemSettings. Происходит сегментирование ценовой таблицы mwPriceDataTable по ключам страны и города вылета. Исходная таблица mwPriceDataTable более не используется.
Имя новой таблицы:
mwPriceDataTable_ключСтраны_ключГородаВылета
Механизм единственной цены
Производит удаление ранее выставленных цен с одинаковыми параметрами:
- PT_CTKEYTO
- PT_hdkey
- PT_hrkey
- PT_PnKey
- PT_Days
- PT_Nights
- PT_ctkeyfrom
- TI_TOKey
- PT_TourDate
Снятие тура
Процесс снятия тура при репликации представлен на рисунке.
Удаление тура
Процесс удаления тура при репликации представлен на рисунке.
Удаление тура с помощью Priceremover
Процесс удаления тура при репликации с помощью Priceremover представлен на рисунке.
Настройка репликации
Скрипты для настройки репликации можно получить в Департаменте по работе с клиентами Компании Мегатек service@megatec.ru.
Мониторинг репликации
Для просмотра информации по ошибкам необходимо выполнить запрос:
select cast (cmd.Command as nvarchar(max)), * from dbo.MSrepl_errors err
left join dbo.MSrepl_commands cmd
on err.xact_seqno = cmd.xact_seqno
order by time desc
Если известные параметры @xact_seqno_start, @xact_seqno_end, полученные из монитора репликации, то запрос может выглядеть следующим образом:
exec sp_browsereplcmds @xact_seqno_start = '0x000019a0000032e50008'
,@xact_seqno_end = '0x000019a0000032e50008'
где:
'0x000019a0000032e50008', '0x000019a0000032e50008' – значения параметров @xact_seqno_start, @xact_seqno_end, которые можно получить из монитора репликации при возникновении ошибки.
Один издатель – несколько подписчиков
Список подписчиков хранится в таблице SystemSettings на издателе (ss_parmname= ‘subscriptions’ ).
Хранимые процедуры и функции для управления подписчиками:
- mwReplAddSubscription – добавление информации о подписчике
- mwReplRemoveSubscription – удаление информации о подписчике
- mwReplGetSubscriptions – получение списка подписчиков
Каждая процедура оперирует связанным сервером (linked-server), который должен быть создан на издателе с включенной опцией Data access (при создании публикации такой сервер для первого подписчика создается скриптом).