Администрирование БД. Репликация баз данных.
Процесс репликации Репликация – процесс автоматического распределения копий данных и объектов БД между экземплярами SQL Server с одновременной синхронизацией всей распространяемой информацией. SQL Server предоставляет разнообразные способы выполнения задач по репликации данных и хранимых процедур, обеспечивая безопасность данных в процессе репликации данных.
Задачи репликации данных С помощью выполнения репликации данных решаются следующие актуальные задачи: снижение сетевого трафика между удаленными офисами; отделение OLTP-операций от функций средств поддержки принятия решений; объединение данных поступающих из различных мест; реализация избыточности данных; расширение системы за пределы ЛВС; поддержка мобильных пользователей.
Терминология репликации Сервер, реплицирующий сохраненную информацию на другие серверы, называется издателем. Реплицируемая информация состоит из одной или нескольких публикаций. Каждая публикация представляет собой логически согласованный набор данных отдельной БД и состоит статей. Каждая статья может быть объектом следующего типа: часть или целая таблица; хранимая процедура или представление; выполнение хранимой процедуры; представление; пользовательская функция. В процессе репликации каждый издатель взаимодействует с распространителем. Распространитель сохраняет публикуемые БД, историю событий и метаданные. Распространитель может быть локальным и удаленным.
Терминология репликации Серверы, получающие реплицируемую информацию, называются подписчиками. Они получают избранные публикации – подписки – от одного или нескольких серверов. В зависимости от типа репликации подписчики могут изменять реплицируемую информацию, а также реплицировать измененную информацию обратно издателю. Подписчики могут быть авторизованы или анонимны. В случае больших публикаций использование анонимных подписчиков позволяет повысить производительность системы.
Агенты репликации Агенты репликации автоматизируют процесс репликации. Существую следующие типы агентов: Агент Snapshot создает исходную мгновенную копию каждой публикации, включая репликацию о схеме; Агент Distribution передает моментальный снимок данных и последующие изменения от распространителя подписчикам; Агент Log Reader перемещает транзакции, помеченные для репликации, из журнала транзакций с сервера-издателя на сервер-распространитель. Агент Queue Reader вносит изменения в журнал публикаций, сделанные подписчиками в автономном режиме; Агент Merge передает моментальный снимок данных от распространителя подписчикам, дезактивирует подписки, информация которых не обновлялась в течении максимального срока хранения публикации; Агент History Clean Up удаляет журнал агента событий из БД распространителя; Агент Distribution Clean Up удаляет реплицированные транзакции из БД распространения и отключает неактивных подписчиков; Агент Expired Subscription Clean Up выявляет и удаляет подписки с истекшим сроком хранения; Агент Reinitialize Having Data Validation Failures повторно инициализирует все подписки, имеющие ошибки при проверке согласованности данных; Агент Replication Checkup выявляет неактивных агентов репликации и заносит соответствующие записи в журнал приложений.
Типы репликации SQL Server 2000 поддерживает три типа репликации: моментальные снимки (snapshot replication); транзакций (transactional replication); сведением (merge replication).
Репликация моментальных снимков Репликация моментальных снимков – это периодическая репликация целостного набора данных, зафиксированного по состоянию на определенный момент времени, с локального сервера на удаленные. Данный тип репликации используется в случае, если количество реплицируемых данных невелико, а источник данных статичен. Удаленным серверам предоставляется ограниченную возможность обновления реплицированных данных.
Процесс репликации моментальных снимков При репликации моментальных снимков агент Snapshot периодически копирует все помеченные для репликации данные с сервера издателя в папку моментальных снимков распространителя. Агент Distribution периодически копирует из папки моментальных снимков на каждый сервер подписчик и, используя эти данные, полностью обновляет на нем публикацию. Агент Snapshot выполняется на распространителе, а агент Distribution может выполняться как на распространителе, так и на сервере-подписчике. Оба агента записывают информацию в журнал событий и журнал ошибок в БД распространения. При репликации моментальных снимков подписчикам можно разрешить обновлять реплицируемую информацию немедленно и/или в порядке очереди.
Репликация транзакций Репликация транзакций – это репликация начального моментального снимка на удаленные серверы, а также репликация отдельных транзакций, работающих на локальном сервере и выполняющих последовательные изменения данных в начальном моментальном снимке. Данные реплицированные транзакции выполняются над реплицируемыми данными на удаленном сервере для синхронизации с данными на локальном сервисе. Такая схема используется, если необходимо постоянное обновление на удаленных серверах.
Процесс репликации транзакций При выполнении репликации транзакций агент Snapshot создает исходный моментальный снимок данных, помеченных для репликации, и копирует его с сервера-издателя в папку моментальных снимков распространителя. Агент Distribution направляет полученный снимок каждому подписчику. Агент Log Reader следит за изменениями данных, участвующих в репликации, фиксирует каждое изменение журнала транзакций в БД распространения. Агент Distribution отправляет каждое изменение всем подписчикам в первоначальном порядке выполнения этих изменений. Если хранимая процедура используется для обновления большого количества записей, можно реплицировать эту процедуру, а не каждую обновленную строку. Все агенты заносят информацию о событиях и ошибках в БД распространения. При наличии сетевого соединения с издателем могут получать изменения почти в реальном времени. После того, как все подписчики получат реплицированные транзакции, агент Distribution Clean UP удаляет эти транзакции из БД распространения.
Репликация сведением Репликация сведением – это репликация начального моментального снимка данных на удаленные серверы, а также репликация изменений, происходящих на каком-либо удаленном сервере, обратно на локальный сервер с целью синхронизации, разрешения конфликтов и повторной репликации на удаленные серверы. Данная репликация применяется, если многочисленные изменениям подвергаются одни и те же данные, либо когда удаленные независимые компьютеры работают автономно.
Процесс репликации сведением При репликации сведением агент Snapshot передает начальный моментальный снимок данных от издателя в папку моментальных копий распространителя. Агент Merge направляет снимок каждому подписчику. Также анализируется и объединяются изменения реплицируемые данные, выполняемые издателем и подписчиком. Если при объединении происходит конфликт, агент Merge разрешает его, используя заданный администратором способ. Оба агента заносят информацию о событиях и ошибках в БД распространения. Чтобы различать записи отдельных копий реплицируемых таблиц, агент Merge использует специальный уникальный столбец реплицируемых таблиц. Если такого столбца нет, агент Snapshot создает на издателе триггеры. Они ведут мониторинг реплицированных записей и заносят информацию об изменениях в системные таблицы сведения.
Выбор модели репликации Существует несколько моделей репликации, которые используются в соответствии с задачами репликации. При использовании репликации моментальных снимков или репликации транзакций придется часто использовать удаленного распространителя. Если объем реплицируемых данных невелик, распространителя и издателей размещают на одном и том же компьютере. Вместо репликации данных нескольким подписчикам через низкоскоростное подключение, можно опубликовать данные на удаленном подписчике, который распространит эти данные другим подписчикам в своей области. Такой подписчик называется переиздающим. В случае репликации сведением центральный подписчик часто используется для объединения информации, поступающей от нескольких региональных издателей. Для этой модели необходимо горизонтальное разбиение данных, чтобы избежать возможных конфликтов. Обычно используется специальный столбец для идентификации данных, поступивших из отдельных регионов.
Реализация репликации Репликация, как правило, организуют средствами мастеров, доступных через консоль Enterprise Manager. Для построения репликации необходимо настроить свойства распространителя и издателя. Настройка свойств распространителя и издателя может быть выполнена при помощи мастера Configure Publishing and Distribution Wizard.
Мастера настройки распространителя и издателя репликации
Вид консоли Enterprise Manager
Резюме Для передачи данных на несколько разных узлов и синхронизации информации на этих узлах можно использовать процесс репликации. Существует три основных типа репликации: репликация моментальных снимков; репликация транзакций; репликация сведением. Для автоматизации процесса репликации используются агенты репликации, выполняющие определенные задачи в соответствии с установленным расписанием. Консоль Enterprise Manager – основное средство организации, мониторинга и администрирования репликации.