Открыть сервис

Репликация SQL Server

Репликация SQL Server — это набор технологий, предназначенных для копирования и распространения данных и объектов баз данных между различными экземплярами СУБД Microsoft SQL Server, а также для обеспечения синхронизации между ними. Репликация позволяет создавать и поддерживать несколько копий (реплик) данных, которые могут располагаться на разных серверах, в разных географических точках и использоваться для различных целей: распределения нагрузки, повышения доступности, создания отказоустойчивых систем, организации отчетности и архивации.

История

Технология репликации в СУБД Microsoft SQL Server существует с ранних версий (начиная с SQL Server 6.5 в 1996 году). Изначально она базировалась на технологии тиражирования данных, предназначенной для поддержки распределенных приложений. С появлением SQL Server 2000 архитектура была значительно переработана, появилась поддержка публикации и подписки (публикация-подписка), а также были добавлены различные типы репликации. В SQL Server 2005 введена репликация по запросу (merge replication) с улучшенным разрешением конфликтов. В SQL Server 2008 была реализована поддержка репликации через одноранговые узлы (peer-to-peer). Дальнейшие версии (2012, 2014, 2016 и т.д.) преимущественно совершенствовали существующий функционал, добавляя новые возможности управления и мониторинга, а также интеграцию с другими компонентами, такими как Always On Availability Groups. В версии SQL Server 2022 репликация остаётся важным, но не единственным средством для тиражирования данных, наряду с более новыми технологиями, такими как группы доступности.

Архитектура и терминология

Основу репликации SQL Server составляет модель «издатель — распространитель — подписчик» (публикация – дистрибуцияподписка). В её рамках выделяются ключевые компоненты:

Типы репликации

Microsoft SQL Server поддерживает три основных типа репликации, каждый из которых подходит для определённых сценариев:

Репликация моментальными снимками (Snapshot Replication)

Это базовый тип, при котором в определённый момент времени все данные публикации (таблицы и другие объекты) полностью копируются с издателя на подписчик. На стороне распространителя создаётся «снимок» (snapshot) данных в виде файлов (например, BCP-файлов). Затем этот снимок применяется на подписчике. Репликация моментальными снимками является неинкрементальной — каждый раз копируется весь объём данных, что делает её ресурсоёмкой. Она используется, когда данные меняются редко, или для начальной загрузки подписчика перед другими типами репликации.

Транзакционная репликация (Transactional Replication)

Наиболее распространённый тип. Изменения, сделанные на издателе (вставки, обновления, удаления), фиксируются в журнале транзакций издателя. Специальный процесс агента считывает эти изменения, упаковывает их как транзакции и передаёт их распространителю, который затем применяет их на подписчике. Подписчик получает инкрементальные изменения почти в реальном времени (с задержкой, зависящей от нагрузки и ширины канала). Транзакционная репликация поддерживает согласованность данных — она гарантирует, что изменения на подписчике будут выполнены в том же порядке, что и на издателе. Подходит для сценариев, где требуется минимальное время задержки между копиями (например, для распределённых систем, синхронизации с серверами отчетности).

Репликация по запросу (Merge Replication)

Тип репликации, при котором изменения могут вноситься как на издателе, так и на каждом подписчике автономно. Система разрешает возможные конфликты данных по правилам, заданным администратором (например, «побеждает последнее изменение», «побеждает изменение издателя» и т.д.). Репликация по запросу является двунаправленной — все копии могут изменяться, и они синхронизируются в момент соединения. Она обычно используется для мобильных устройств или временно отсоединённых клиентов (например, полевые сотрудники с ноутбуками). Из-за сложности разрешения конфликтов она требует более тщательного проектирования.

Особый тип: Одноранговая репликация (Peer-to-Peer Replication)

Это специализированный вариант транзакционной репликации, где несколько серверов выступают одновременно и в роли издателя, и в роли подписчика. Данные распространяются между одноранговыми узлами, при этом каждая копия содержит все данные. Это позволяет создавать отказоустойчивые, географически распределённые системы с активной репликацией, где каждый узел может обслуживать запросы на запись и чтение. Одноранговая репликация сложна в настройке и управлении, особенно в больших топологиях.

Применение и сценарии использования

Репликация SQL Server применяется в различных корпоративных сценариях:

Преимущества и недостатки

Сравнение с альтернативными технологиями

В современном SQL Server, помимо классической репликации, существуют и другие технологии тиражирования данных, которые могут быть более подходящими в определённых сценариях:

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →