Лекция 26: Репликация в Microsoft SQL Server: обзор типов репликации и репликация моментальных снимков
Технология репликации баз данных Microsoft SQL Server предназначена для того, чтобы помочь вам в распространении данных и хранимых процедур по серверам вашей компании. Репликация позволяет вам конфигурировать системы для автоматического копирования данных в другие системы. Используя репликацию баз данных, вы можете копировать столько данных, сколько вам нужно и можете размещать данные в любом количестве систем. Поскольку процесс репликации выполняется автоматически и поскольку во время репликации в базе данных сохраняется информация о состоянии репликации и реплицированных данных, то не существует никакой опасности потери данных. Если процедура репликации прервана (например, из-за отказа источника питания), то она возобновится с точки отказа, как только системы снова будут работать в обычном режиме.
Репликация – это сложный процесс, поэтому в данной книге для описания репликации выделены три лекции. В этой лекции вы ознакомитесь с основами репликации, а также узнаете о репликации моментальных снимков. В "Репликация транзакций" вы узнаете о репликации транзакций и в "Репликация слиянием" – о репликации слиянием. В этих трех лекциях содержится информация, необходимая для глубокого понимания репликации SQL Server, включая сведения о конфигурировании, администрировании и использовании технологии репликации.
Что такое репликация базы данных?
Репликация базы данных – это процесс копирования (реплицирования) данных из одной таблицы или базы данных в другую таблицу или базу данных. Используя эту технологию, вы можете распространять копии всей базы данных в несколько систем вашей компании или распространять выбранные части базы данных. При использовании технологии репликации SQL Server происходит автоматизация задачи копирования и распространения данных. После задания параметров и конфигурирования репликации никакого вмешательства пользователя уже не требуется. Поскольку репликация и обработка данных выполняется из базы данных SQL Server, это обеспечивает более высокий уровень стабильности и восстанавливаемости. Если во время репликации происходит сбой (или выполняется другая транзакция SQL Server), то после устранения соответствующей проблемы операции возобновляются с точки, где произошел сбой. В связи с этим многие люди предпочитают репликацию другим методам перемещения данных между системами.
Имеется много возможностей для конфигурирования репликации в вашей сети. Например, вы можете указывать, сколько данных будет реплицироваться. Вы можете задавать допустимый тип доступа к реплицированным копиям – только по чтению или с разрешением модифицирования. И вы можете задавать, насколько часто должны реплицироваться данные. Мы рассмотрим эти и другие параметры в разделе "Конфигурирование репликации моментальных снимков" далее и в аналогичных разделах следующих двух лекций.
Понятия репликации
В этом разделе вы узнаете о базовых понятиях репликации баз данных. Мы рассмотрим такие понятия, как метафора "опубликовать-и-подписаться" (publish-and-subscribe), три типа репликации, данные репликации, распространение данных и агенты репликации.
Компоненты репликации
Репликация в Microsoft SQL Server 2000 основывается на метафоре "опубликовать-и-подписаться", впервые использованной для репликации в SQL Server 6. Эта метафора базируется на трех основных понятиях: издатели, дистрибьюторы и подписчики. Издатель – это система базы данных, которая предоставляет данные для репликации. Дистрибьютор (распространитель) – это система базы данных, которая содержит дистрибутивную базу данных (или псевдоданные), используемую для поддержки и управления репликацией. Подписчик – это система базы данных, которая получает реплицированные данные и сохраняет их в реплицированной базе данных.
Издатели
Издатель – система Microsoft Windows 2000, содержащая базу данных SQL Server. Эта база данных содержит данные, которые должны реплицироваться в другие системы. Кроме того, база данных SQL Server следит за тем, какие данные изменились, чтобы их можно было эффективно реплицировать. Издатель также поддерживает информацию о том, какие данные сконфигурированы для репликации. В зависимости от выбранного типа репликации издатель выполняет больший или меньший объем работы во время процесса репликации. Это описывается более подробно далее.
Среда репликации может содержать несколько подписчиков, но любой заданный набор данных, сконфигурированных для репликации (этот набор называется статьей), может иметь только одного издателя. (Статьи описываются более подробно в разделе "Данные репликации" ниже в этой лекции.) То, что для определенного набора данных имеется только один издатель, не означает, что этот издатель является единственным компонентом, который может модифицировать данные: подписчик тоже может модифицировать и даже повторно публиковать данные. Однако это может потребовать некоторых усилий, как вы увидите из этой лекции и следующих двух лекций.
Дистрибьюторы
Серверы, действующие как дистрибьюторы, кроме дистрибутивной базы данных хранят также метаданные, данные журнала (истории) репликации и другую информацию. Во многих случаях дистрибьютор также управляет распространением данных репликации подписчикам. Издатель и дистрибьютор не обязательно должны быть на одном сервере. На самом деле вы, скорее всего, будете использовать для дистрибьютора выделенный сервер. Для каждого издателя при его создании должен быть задан дистрибьютор, и каждый издатель может иметь только одного дистрибьютора. (Более подробно см. в разделе "Конфигурирование публикования и распространения" далее.)
Подписчики
Как уже говорилось, подписчики – это серверы баз данных, которые хранят реплицированные данные и получают информацию об изменениях. Подписчики также могут вносить изменения и являться издателями для других систем. Чтобы подписчик получал реплицированные данные, он должен подписаться на эти данные. Подписка на репликацию подразумевает конфигурирование подписчика для получения этих данных. Подписка – это информация базы данных, на которую вы подписываетесь. (Более подробно о связях между этими компонентами см. в разделе "Конфигурирование репликации моментальных снимков" далее.)
Типы репликации
В SQL Server используется три типа репликации: репликация моментальных снимков, репликация транзакций и репликация слиянием. Эти типы репликации поддерживают различные уровни согласованности данных в реплицированной базе данных, и они налагают различные уровни нагрузки на серверы.
Репликация моментальных снимков
Репликация моментальных снимков (или просто репликация снимков) – это наиболее простой тип репликации. При использовании репликации снимков периодически создается снимок (картина) базы данных, который распространяется подписчикам. Главным преимуществом репликации снимков является то, что она не налагает непрерывной нагрузки на издателей и подписчиков. Это означает, что она не требует, чтобы издатели непрерывно следили за изменениями данных, а также не требует непрерывной передачи данных подписчикам. Главным недостатком является то, что база данных у подписчика соответствует только последнему снимку базы данных издателя.
Во многих случаях, как вы увидите позже в этой лекции, репликация снимков является вполне достаточной, например, когда источник данных модифицируется лишь время от времени. С такой информацией, как списки телефонов, списки цен и описание товаров, можно вполне справляться с помощью репликации снимков. Эти списки можно обновлять раз в день в нерабочее время.
Репликация транзакций
Репликацию транзакций можно использовать для репликации изменений, вносимых в базу данных. При использовании репликации транзакций любые изменения, вносимые в статьи (наборы данных, сконфигурированные для репликации) немедленно считываются из журнала транзакций и распространяются дистрибьюторам. Используя репликацию транзакций, вы можете поддерживать издателя и его подписчиков почти всегда в одинаковом состоянии (в зависимости от того, как вы сконфигурировали репликацию).
Репликацию транзакций следует использовать в тех случаях, когда важно поддерживать все реплицируемые системы на уровне текущих изменений. Репликация транзакций накладывает на систему более высокую нагрузку, чем репликация снимков, поскольку она по отдельности передает в реплицируемые системы каждую транзакцию, которая вносит изменения в систему. Однако репликация транзакций поддерживает системы в более согласованном состоянии, чем репликация снимков и репликация слиянием. (О репликации транзакций см. "Репликация транзакций" .)
Репликация слиянием
Репликация слиянием выполняется аналогично репликации транзакций в том смысле, что она следит за всеми изменениями, которые вносятся в статьи. Но вместо отдельного распространения транзакций, которые вносят изменения, репликация слиянием периодически передает пакет изменений. И поскольку при репликации слиянием данные передаются пакетами, она похожа на репликацию снимков. (Хотя в случае репликации снимков распространяются все данные, сконфигурированные для репликации, а не только изменения.) (О репликация слиянием см. "Репликация слиянием" .)
Данные репликации
Вы группируете данные, подлежащие репликации, в виде объекта, который называется публикацией. Публикация состоит из одной или нескольких статей. Рассмотрим более подробно статьи и публикации.
Статьи
Как уже говорилось, статья – это отдельный набор данных, который подлежит репликации. Статья может быть целой таблицей, подмножеством таблицы, состоящим из определенных колонок или строк, или хранимой процедурой. Вы создаете эти подмножества с помощью фильтров. Фильтр, используемый для создания подмножества, состоящего из строк, называется горизонтальным фильтром. Фильтр, используемый для создания подмножества, состоящего из колонок, называется вертикальным фильтром. Более подробное описание горизонтальных и вертикальных фильтров приводится ниже в этой лекции.