Что такое Синхронизация данных SQL для Azure?

Применимо к: База данных SQL Azure

Внимание

Синхронизация данных SQL будет прекращена 30 сентября 2027 года. Рассмотрите возможность миграции в альтернативные решения для репликации и синхронизации данных.

SQL Синхронизация данных — это сервис, построенный на базе База данных SQL Azure, который можно использовать для синхронизации выбранных данных в двух направлениях между несколькими базами данных, как локально, так и в облаке.

Azure SQL Синхронизация данных не поддерживает Управляемый экземпляр SQL Azure или Azure Synapse Analytics.

Обзор

В основе Синхронизации данных лежит понятие группы синхронизации. Группа синхронизации — это группа баз данных, которые требуется синхронизировать.

Служба синхронизации данных использует звездообразную топологию для синхронизации данных. Одну из баз данных в группе синхронизации необходимо определить как центральную базу данных. Остальные базы данных являются членскими базами данных. Синхронизация происходит только между узлом и отдельными участниками.

  • Центральной базой данных должна быть база данных SQL Azure.
  • Участники баз данных могут быть как базы данных в База данных SQL Azure, так и экземплярами SQL Server.
  • База метаданных для синхронизации содержит метаданные и журнал для службы "Синхронизация данных". База данных метаданных синхронизации должна быть Базой данных SQL Azure, расположенной в том же регионе, что и центральная база данных. База метаданных для синхронизации создается клиентом и принадлежит ему. У вас может быть только одна база метаданных для синхронизации для каждого региона и подписки. Не удается удалить или переименовать базу данных метаданных синхронизации, пока существуют группы синхронизации или агенты синхронизации. Корпорация Майкрософт рекомендует создать новую пустую базу данных для использования в качестве базы данных метаданных синхронизации. Служба синхронизации данных создает таблицы в этой базе данных и часто выполняет рабочую нагрузку.

Примечание.

Если вы используете локальную базу данных в качестве базы данных-члена, необходимо установить и настроить локальный агент синхронизации.

Схема, объясняющая процесс синхронизации данных между базами данных.

Группа синхронизации имеет следующие свойства.

  • Схема синхронизации: описывает, какие данные синхронизируются.
  • Направление синхронизации может быть двунаправленным или течь только в одном направлении: от хаба к члену, от члена к хабу или в обоих направлениях.
  • Интервал синхронизации определяет, как часто выполняется синхронизация.
  • Политика устранения конфликтов — это политика уровня группы, которая может задавать режим Выигрывает концентратор или Выигрывает участник.

Когда использовать

Синхронизация данных удобна, когда требуется поддерживать актуальное состояние данных в нескольких базах данных SQL Azure или SQL Server. Ниже приведены основных варианты использования синхронизации данных.

  • Гибридная синхронизация данных. Можно синхронизировать данные между базами данных в SQL Server и Базами данных SQL Azure, чтобы обеспечить работу гибридных приложений. Эта возможность может обратиться к клиентам, которые рассматривают переход в облако и хотели бы поместить некоторые из своих приложений в Azure.
  • Распределенные приложения. Во многих случаях полезно разделить рабочие нагрузки по различным базам данных. Например, если у вас есть большая рабочая база данных, но вам также нужно запустить рабочую нагрузку отчетов или аналитики для этих данных, полезно иметь вторую базу данных для этой дополнительной рабочей нагрузки. Такой подход сводит к минимуму влияние на производительность производственной рабочей нагрузки. Чтобы синхронизировать эти две базы данных, можно использовать службу синхронизации данных.
  • Глобально распределенные приложения. Многие организации работают в нескольких регионах и даже нескольких странах. Чтобы свести к минимуму задержки в сети, рекомендуется хранить свои данные в регионе, ближайшем к вам. Используя синхронизацию данных, можно легко обеспечить синхронизацию баз данных в регионах по всему миру.

Использование Синхронизации данных не рекомендуется в следующих сценариях:

Сценарий Рекомендуемые решения
Аварийное восстановление Автоматическое резервное копирование в База данных SQL Azure
масштаб чтения; Используйте реплики только для чтения, чтобы разгрузить нагрузку запросов только для чтения
ETL (OLTP в OLAP); Фабрика данных Azure или SQL Server Integration Services
Миграция из SQL Server в Базу данных Azure SQL. Однако Синхронизацию данных SQL можно использовать после завершения миграции, чтобы обеспечить синхронизацию исходных и целевых данных. Миграция баз данных Azure

Принцип работы

  • Отслеживание изменений данных: Синхронизация данных отслеживает изменения, используя триггеры вставки, обновления и удаления. Изменения записываются во вспомогательную таблицу в пользовательской базе данных. BULK INSERT По умолчанию не запускает триггеры. Если не указать FIRE_TRIGGERS, триггеры INSERT не выполняются. Добавьте эту FIRE_TRIGGERS опцию, чтобы Синхронизация данных мог отслеживать эти вставки.
  • Синхронизация данных: "Синхронизация данных" разработана на основе модели концентратор-спица. Узел синхронизируется с каждым участником по отдельности. Изменения из узла скачиваются учаснику, а затем изменения из учасника загружаются в узел.
  • Устранение конфликтов: Служба синхронизации данных предоставляет два параметра для устранения конфликтов: Выигрывает концентратор или Выигрывает член.
    • Если выбран параметр Выигрывает концентратор, то изменения в центральной базе данных всегда записываются поверх изменений в члене.
    • Если выбран параметр Member wins (Выигрывает участник), то изменения участника всегда записываются поверх изменений в узле. Если имеется несколько членов, то конечное значение зависит от того, какой член синхронизируется первым.

Сравнение с транзакционной репликацией

Синхронизация данных репликация транзакций
Преимущества — Поддержка режима "активный — активный"
- Двунаправленная связь между локальной средой и База данных SQL Azure
— Низкая задержка
— Согласованность транзакций
— Повторное использование существующей топологии после миграции
— Поддержка Управляемого экземпляра SQL Azure
Недостатки — Отсутствует согласованность транзакций
— Большее влияние на производительность
— Не удается опубликовать из SQL базы данных Azure
— Дорогое обслуживание

Caution

Для подключения к главным и узловым базам данных в SQL Синхронизация данных требуется проверка подлинности SQL. Аутентификация Microsoft Entra ID не поддерживается в SQL Синхронизация данных.

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

По возможности предпочитайте решения, поддерживающие проверку подлинности Microsoft Entra или управляемые удостоверения. Поскольку SQL Синхронизация данных запланирован на закрытие, переходите на альтернативу, которая соответствует стандартам безопасности вашей организации.

Примечание.

Приватный канал Синхронизации данных SQL отличается от Приватного канала Azure.

Новая функция "частная связь" позволяет выбрать управляемую службой частную конечную точку, чтобы установить безопасное подключение между службой синхронизации и вашими участниками/центральной базами данных во время процесса синхронизации данных. Управляемая службой частная конечная точка — это частный IP-адрес в определенной виртуальной сети и подсети. В рамках службы "Синхронизация данных" корпорацией Майкрософт создается управляемая службой частная конечная точка, которая монопольно используется Синхронизацией данных для данной операции синхронизации.

Перед настройкой приватного канала ознакомьтесь с общими требованиями для этой функции.

Схема частного подключения для синхронизации данных.

Примечание.

Необходимо вручную утвердить управляемую службой частную конечную точку на странице Подключения к частной конечной точке на портале Azure при развертывании группы синхронизации или с помощью PowerShell.

Начало работы

Настройка синхронизации данных на портале Azure

Настройка синхронизации данных с помощью PowerShell

Настройка Синхронизации данных с помощью REST API

Лучшие практики для синхронизации данных

Что-то пошло не так?

Согласованность и производительность

Итоговая согласованность

Поскольку Синхронизация данных основан на триггерах, он не гарантирует согласованность транзакций. Microsoft гарантирует, что Синхронизация данных в конечном итоге внесёт все изменения и не приводит к потере данных.

Влияние на производительность

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

Предоставление и аннулирование доступа во время создания, обновления и удаления группы синхронизации также могут повлиять на производительность базы данных.

Требования и ограничения

Общие требования

  • Каждая таблица должна иметь первичный ключ. Не изменяйте значение первичного ключа ни в какой строке. Если нужно изменить значение первичного ключа, удалите строку и создайте её заново с новым значением первичного ключа.

Внимание

Изменение значения существующего первичного ключа приводит к следующему ошибочному поведению:

  • Данные между хабом и участником могут быть потеряны, хотя синхронизация не сообщает о проблеме.
  • Синхронизация может завершиться сбоем, потому что в таблице отслеживания есть строка, которой больше не существует в источнике из-за изменения первичного ключа.
  • Изоляция моментального снимка должна быть включена как для участников синхронизации, так и для узла хаба. Дополнительные сведения см. в разделе Изоляция снимка в SQL Server.

  • Для использования приватной ссылки Синхронизация данных базы данных участников и хаба должны размещаться в Azure (в одном или разных регионах), в одном типе облака (например, как в публичном облаке, так и в государственном облаке). Также зарегистрируйте поставщиков ресурсов Microsoft.Network для подписок, в которых размещены серверы хаба и участников. Вы должны вручную одобрить приватную ссылку для Синхронизация данных во время настройки синхронизации, в разделе Private endpoint connections в портале Azure или через PowerShell. Для получения дополнительной информации о том, как одобрить приватную ссылку, см. Руководство: Настройка SQL Синхронизация данных между базами данных в База данных SQL Azure и SQL Server. После утверждения управляемой сервисом приватной конечной точки вся коммуникация между сервисом синхронизации и базами данных участников/хаба происходит по приватной линии. Вы можете обновить существующие группы синхронизации, чтобы включить эту функцию.

Общие ограничения

  • В таблице не может быть столбца идентификатора, который не является первичным ключом.
  • Первичный ключ не может иметь следующие типы данных: sql_variant, binary, varbinary, image, xml.
  • Будьте осторожны при использовании следующих типов данных в качестве первичного ключа, так как поддерживаемая точность составляет всего одну секунду: time, datetime, datetime2, datetimeoffset.
  • Имена объектов (баз данных, таблиц и столбцов) не должны содержать печатаемые символы: точку (.), левую квадратную скобку ([) и правую квадратную скобку (]).
  • Имя таблицы не должно содержать печатаемые символы: ! " # $ % ' ( ) * + - или пробел.
  • Проверка подлинности Microsoft Entra (ранее — Azure Active Directory) не поддерживается.
  • Если есть таблицы с одинаковым названием, но с разными схемами (например dbo.customers , и sales.customers), вы можете добавить только одну из таблиц в группу синхронизации.
  • Столбцы с определяемыми пользователем типами данных не поддерживаются.
  • Перемещение серверов между разными подписками не поддерживается.
  • Если два первичных ключа различаются только регистром (например, Foo и foo), функция Синхронизация данных не поддерживает такой сценарий.
  • Операция усечения таблиц не поддерживается функцией Синхронизации данных (отслеживание изменений недоступно).
  • Использование базы данных гипермасштабирования SQL Azure в качестве концентратора или базы данных метаданных синхронизации не поддерживается. Однако база данных с уровнем гипермасштабируемости может быть участником базы данных в топологии "Синхронизация данных".
  • Таблицы, оптимизированные для памяти, не поддерживаются.
  • Изменения схемы не реплицируются автоматически.
  • Синхронизация данных поддерживает только следующие два свойства индекса: Уникальный, Кластерированный/Некластерированный. Другие свойства индекса, например IGNORE_DUP_KEY или WHERE предиката фильтра, не поддерживаются, а целевой индекс подготавливается без этих свойств, даже если исходный индекс имеет эти свойства.
  • База данных Azure Elastic jobs не может использоваться в качестве базы данных метаданных SQL Синхронизация данных и наоборот.
  • Синхронизация данных SQL не поддерживается для баз данных реестра.
  • Синхронизация данных — это не инструмент аварийного восстановления или обеспечения высокой доступности, и он не синхронизирует сведения о собственной группе синхронизации. Автоматического восстановления после катастрофы для Синхронизация данных нет.
  • Синхронизация данных по умолчанию не поддерживает сетевой периметр безопасности. Синхронизация данных работает как прокси-сервис, а не как ресурс Azure, поэтому у него нет полностью квалифицированного доменного имени или IP-адреса для написания правил периметра. Периметр блокирует сетевые пути, необходимые Синхронизация данных как в переходном, так и в принудительном режиме, и никакое правило доступа не позволяет ему работать. Если ваш логический сервер связан с периметром, переходите на решение для передачи данных, поддерживающее сетевую безопасность.

Неподдерживаемые типы данных

  • FileStream
  • UDT SQL/CLR
  • XMLSchemaCollection (поддерживается XML);
  • Курсор, RowVersion, Timestamp, Hierarchyid

Неподдерживаемые типы столбцов

При синхронизации данных столбцы, предназначенные только для чтения или созданные системой, не синхронизируются. Например:

  • Вычисляемые столбцы
  • Системные столбцы для темпоральных таблиц

Ограничения характеристик служб и баз данных

Размеры Лимит Обходное решение
Максимальное количество групп синхронизации, которым может принадлежать любая база данных 5
Максимальное количество конечных точек в отдельной группе синхронизации 30
Максимальное количество локальных конечных точек в отдельной группе синхронизации 5 Создайте несколько групп синхронизации.
Имена баз данных, таблиц, схем и столбцов По 50 символов на имя.
Таблицы в группе синхронизации 500 Создайте несколько групп синхронизации.
Столбцы в таблице в группе синхронизации 1000
Размер строки данных в таблице 24 МБ

Примечание.

В одной группе синхронизации может быть до 30 конечных точек, если существует только одна группа синхронизации. Если синхронизирующих групп несколько, общее число конечных точек во всех группах синхронизации не может превышать 30. Если база данных принадлежит нескольким группам синхронизации, она считается несколькими конечными точками, а не одной.

Требования к сети

Примечание.

Если вы используете Sync private link, эти сетевые требования не применяются.

Если группа синхронизации установлена, службе "Синхронизация данных" необходимо подключиться к центральной базе данных. При установке группы синхронизации сервер SQL Azure должен иметь следующую конфигурацию в его Firewalls and virtual networks параметрах:

  • Параметр Запрет доступа к общедоступной сети должен быть установлен в положение Отключено.
  • Для параметра Разрешить службам и ресурсам Azure доступ к этому серверу должно быть задано значение Да, либо необходимо создать правила IP-трафика для адресов, используемых службой "Синхронизация данных".

После создания и подготовки группы синхронизации эти параметры можно отключить. Агент синхронизации подключается непосредственно к базе данных концентратора, и вы можете использовать правила бранмауэра сервера или приватные конечные точки, чтобы разрешить агенту доступ к серверу концентратора.

Примечание.

Если изменить настройки схемы группы синхронизации, нужно снова разрешить сервису Синхронизация данных доступ к серверу, чтобы база данных хаба могла быть перенастроена.

Место расположения данных в регионе

При синхронизации данных в одном регионе Синхронизация данных SQL не сохраняет и не обрабатывает данные клиентов за пределами региона, в котором развернут экземпляр службы. При синхронизации данных между различными регионами SQL Синхронизация данных реплицирует данные клиента в соединённые регионы.

Вопросы и ответы о синхронизации данных SQL

Сколько стоит использование службы синхронизации данных SQL?

Плата за саму службу "Синхронизации данных SQL" не взимается. Однако с вас все равно будет взиматься плата за передачу данных при перемещении данных в экземпляр базы данных SQL и из него. Дополнительные сведения см. в разделе Плата за передачу данных.

Какие регионы поддерживают синхронизацию данных?

Синхронизация данных SQL доступна во всех регионах:

Требуется ли учетная запись базы данных SQL Azure?

Да. Для того чтобы хранить базу данных концентратора, необходима учетная запись базы данных SQL Azure.

Можно ли использовать Синхронизация данных для синхронизации только между базами данных SQL Server?

Не напрямую. Вы можете опосредованно выполнять синхронизацию между базами данных SQL Server. Это можно сделать, создав центральную базу данных в Azure, а затем добавив локальные базы данных в группу синхронизации.

Можно ли настроить синхронизацию данных между базами данных в базе данных SQL Azure, принадлежащих разным подпискам?

Да. Вы можете настроить синхронизацию баз данных, которые относятся к группам ресурсов в разных подписках, даже принадлежащих разным арендаторам.

  • Если подписки принадлежат к одному клиенту и у вас есть разрешения на все подписки, то на портале Azure можно настроить группу синхронизации.
  • В противном случае для добавления участников синхронизации придется использовать PowerShell.
  • Приватный канал не поддерживается в сценариях между арендаторами.

Можно ли настроить синхронизацию данных для синхронизации между базами данных SQL, принадлежащими разным облакам (например, общедоступному облаку Azure и Azure, управляемому 21Vianet)?

Синхронизация данных не поддерживает межоблачную синхронизацию.

Можно ли использовать синхронизацию данных для заполнения данных из рабочей базы данных в пустую базу данных с последующей синхронизацией?

Да. Вручную создайте схему в новой базе данных из оригинала с помощью скрипта. После создания схемы добавьте таблицы в группу синхронизации, чтобы скопировать данные и обеспечить их синхронизацию.

Следует ли использовать синхронизацию данных SQL для резервного копирования и восстановления баз данных?

Использовать Синхронизацию данных SQL для создания резервной копии данных не рекомендуется. Резервное копирование и восстановление на конкретный момент времени невозможно, так как при синхронизации с помощью службы "Синхронизация данных SQL" управление версиями не поддерживается. Более того, Синхронизация данных SQL не выполняет резервное копирование других объектов SQL, таких как хранимые процедуры, и не имеет эквивалента быстрой операции восстановления.

Один из рекомендуемых методов резервного копирования см. в статье "Копирование транзакционно согласованной копии базы данных в База данных SQL Azure".

Можно ли с помощью службы синхронизации данных синхронизировать зашифрованные таблицы и столбцы?

  • Если в базе данных используется Always Encrypted, можно синхронизировать только те таблицы и столбцы, которые не зашифрованы. Синхронизировать зашифрованные столбцы невозможно, так как служба синхронизации данных не может расшифровать данные.
  • Если столбец использует Column-Level Encryption (CLE), вы можете синхронизировать столбц, если размер строки меньше максимального размера 24 МБ. Служба синхронизации данных обрабатывает столбец, зашифрованный с помощью ключа, как обычные двоичные данные. Чтобы расшифровать данные других участников синхронизации, необходимо иметь тот же сертификат, что и они.

Поддерживается ли коллатинг в синхронизации данных SQL?

Да. Синхронизация данных SQL поддерживает настройку параметров сортировки в следующих сценариях:

  • Если выбранные таблицы схемы синхронизации еще не содержатся в центральной или рядовых базах данных, то при развертывании группы синхронизации служба автоматически создает соответствующие таблицы и столбцы с параметрами сортировки, выбранными в пустых целевых базах данных.
  • Если синхронизируемые таблицы уже существуют как в центральной базе данных, так и в рядовых базах данных, синхронизация данных SQL требует, чтобы столбцы первичного ключа имели одинаковые параметры сортировки в центральной базе данных и рядовых базах данных, для успешного развертывания группы синхронизации. Для столбцов, отличных от столбцов первичного ключа, на параметры сортировки нет ограничений.

Поддерживается ли федерация в SQL Синхронизация данных?

Вы можете использовать корневую базу данных федерации с SQL Синхронизация данных без ограничений. Вы не можете добавить конечную точку федеративной базы данных в текущую версию SQL Синхронизация данных.

Можно ли использовать "Синхронизацию данных" для синхронизации данных, экспортированных из Dynamics 365 с помощью функции BYOD ("использовать собственную базу данных")?

Функция Dynamics 365 "использовать собственную базу данных" позволяет администраторам экспортировать сущности данных из приложения в собственную базу данных SQL Microsoft Azure. Можно использовать синхронизацию данных для синхронизации этих данных с другими базами данных, если данные экспортируются с помощью инкрементальной отправки (полная отправка не поддерживается) и триггеры в целевой базе данных включены значение да.

Как мне создать Синхронизацию данных в группе отказоустойчивости для обеспечения аварийного восстановления?

Синхронизация данных SQL не предоставляет возможности автоматической отработки отказа или аварийного восстановления. Если база данных переключается в другой регион, группа синхронизации перестаёт работать. Ручную синхронизационную группу заново создайте в области резервирования с теми же настройками, что и в основной области.

Мониторинг и устранение неполадок

Синхронизация данных SQL работает так, как ожидалось? Сведения об отслеживании действий и устранении неполадок см. в следующих статьях:

Подробнее о базе данных SQL Azure

Для получения дополнительной информации о База данных SQL Azure см. следующие статьи: