Поделиться через


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

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

Внимание

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

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

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

Обзор

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

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

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

Примечание.

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

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

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

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

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

Синхронизация данных удобна, когда требуется поддерживать актуальное состояние данных в нескольких базах данных 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 не указан, триггеры вставки не выполняются. Добавьте параметр FIRE_TRIGGERS, чтобы служба синхронизации данных могла отслеживать эти вставки.
  • Синхронизация данных. Служба "Синхронизации данных" разработана на основе звездообразной модели. Центральная база данных синхронизируется с каждой рядовой базой данных по отдельности. Изменения в центральной базе данных передаются рядовой базе данных, после чего изменения из рядовой базы передаются в центральную.
  • Устранение конфликтов. Служба синхронизации данных предоставляет два параметра для устранения конфликтов, Выигрывает концентратор и Member wins (Выигрывает член).
    • Если выбран параметр Выигрывает концентратор, то изменения в центральной базе данных всегда записываются поверх изменений в члене.
    • Если выбран параметр Member wins (Выигрывает член), то изменения в члене всегда записываются поверх изменений в центральной базе данных. Если имеется несколько членов, то конечное значение зависит от того, какой член синхронизируется первым.

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

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

Примечание.

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

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

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

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

Примечание.

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

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

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

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

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

Рекомендации по синхронизации данных

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

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

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

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

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

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

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

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

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

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

Внимание

Изменение значения существующего первичного ключа приведет к появлению следующих неисправностей.

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

  • Чтобы использовать приватный канал Синхронизация данных, базы данных-члены и центральные базы данных должны размещаться в Azure (одинаковых или разных регионах), в одном и том же типе облака (например, в общедоступном облаке или в облаке для государственных организаций). Кроме того, чтобы использовать приватный канал, Microsoft.Network поставщики ресурсов должны быть зарегистрированы для подписок, на которых размещены центральные и члены серверов. Наконец, необходимо вручную утвердить приватный канал для Синхронизация данных во время настройки синхронизации в разделе "Подключения к частной конечной точке" в портал Azure или с помощью PowerShell. Дополнительные сведения о том, как утвердить приватный канал, см. в руководстве по настройке Синхронизация данных SQL между базами данных в База данных SQL Azure и SQL Server. После утверждения управляемой службы частной конечной точки все взаимодействие между службой синхронизации и базами данных-членами или концентраторами происходит через приватный канал. Можно обновить существующие группы синхронизации для использования этой функции.

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

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

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

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

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

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

  • вычисляемые столбцы;
  • Созданные системой столбцы для темпоральных таблиц.

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

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

Примечание.

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

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

Примечание.

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

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

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

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

Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обновление схемы синхронизированной базы данных

Вам нужно обновить схему базы данных в группе синхронизации? Изменения схемы не реплицируются автоматически. Некоторые решения описаны в следующих статьях:

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

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

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

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