Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: База данных SQL Azure
Внимание
Служба синхронизации данных SQL будет прекращена 30 сентября 2027. Рассмотрите возможность миграции в альтернативные решения для репликации и синхронизации данных.
В этой статье описываются рекомендации по синхронизации данных SQL Azure.
Общие сведения о Синхронизация данных SQL см. в статье "Что такое Синхронизация данных SQL для Azure?"
Безопасность и надежность
Агент клиента
- Установите агент клиента, используя учетную запись пользователя с наименьшим уровнем привилегий и доступом к службе сети.
- Установите агент клиента на сервере, который отличается от того, где установлен SQL Server.
- Не регистрируйте локальную базу данных с более чем одним агентом.
- Избегайте этого, даже если вы синхронизируете разные таблицы для разных групп синхронизации.
- Регистрация локальной базы данных в нескольких агентах клиента создает проблемы при удалении вами одной из групп синхронизации.
Учетные записи базы данных с наименьшими требуемыми привилегиями
Для настройки синхронизации:
- Разрешения SQL Server: CREATE/ALTER TABLE, ALTER DATABASE, CREATE PROCEDURE, SELECT/ALTER SCHEMA, CREATE TYPE. Эти разрешения включены (вместе с другими разрешениями) в встроенную роль
ddl_admin
базы данных. - На уровне группы ресурсов необходимо членство в роли SQL DB Contributor. Дополнительные сведения см. в разделе Назначение ролей Azure с помощью портала Azure. Членство в более широких ролях, таких как участник или владелец, также работает, если оно уже назначено.
- Разрешения на уровне подписки не обязательно должны требоваться, но могут предоставлять упрощенный (хотя и не предельно необходимый) способ предоставления необходимых разрешений для нескольких реализаций Azure Data Sync в пределах подписки. Устаревший API, который не рекомендуется, требовал эти разрешения Azure RBAC, но больше не должен использоваться.
- Microsoft.Sql/locations/syncMemberOperationResults/чтение
- Microsoft.Sql/locations/syncAgentOperationResults/read
- Microsoft.Sql/locations/syncGroupOperationResults/read
- Разрешения SQL Server: CREATE/ALTER TABLE, ALTER DATABASE, CREATE PROCEDURE, SELECT/ALTER SCHEMA, CREATE TYPE. Эти разрешения включены (вместе с другими разрешениями) в встроенную роль
Для непрерывной синхронизации.
- Разрешения SQL Server: SELECT, INSERT, UPDATE и DELETE для пользовательских таблиц, выбранных для синхронизации. Разрешение EXECUTE для определяемых пользователем типов таблиц.
- Разрешения SQL Server: SELECT, INSERT, UPDATE и DELETE для метаданных синхронизации и системных таблиц отслеживания. Разрешение EXECUTE для хранимых процедур, созданных службой.
- Схема
DataSync
используется для системных объектов в центральной и дочерних базах данных. -
dss
иTaskHosting
схемы используются для объектов, созданных системой, в базе данных метаданных синхронизации.
- Схема
Для удаления доступа.
- Разрешения SQL Server: ALTER на всех таблицах, участвующих в синхронизации; SELECT и DELETE на таблицах метаданных синхронизации; CONTROL на таблицах отслеживания синхронизации, хранимых процедурах и определяемых пользователем типах.
- Для очистки удалите созданные системой объекты в
DataSync
иdss
TaskHosting
схемах.
База данных SQL Azure поддерживает только один набор учетных данных. Для выполнения этих задач в пределах этого ограничения рассмотрите следующие варианты:
- Изменяйте учетные данные для разных этапов (например, учетные данные1 для настройки и учетные данные2 для непрерывной синхронизации).
- Изменяйте разрешения для учетных данных (то есть изменяйте разрешение после настройки синхронизации).
Аудит
Рекомендуется включить аудит на уровне баз данных в группах синхронизации. Узнайте, как включить аудит в базе данных SQL Azure или базе данных SQL Server.
Настройка
Рекомендации по базам данных и ограничения
Размер базы данных
Когда вы создаете базу данных, установите максимальный размер, чтобы он всегда превышал размер базы данных, которую вы развертываете. Если не установить максимальный размер больше развернутой базы данных, синхронизация завершится ошибкой. Несмотря на то, что синхронизация данных SQL не предлагает автоматическое увеличение размера, вы можете выполнить команду ALTER DATABASE
, чтобы увеличить размер базы данных после ее создания. Убедитесь, что вы не превышаете максимальный размер базы данных.
Внимание
Синхронизация данных SQL хранит дополнительные метаданные в каждой базе данных. Обязательно учтите эти метаданные при определении необходимого пространства. Количество добавленных накладных расходов зависит от ширины таблиц (например, узкие таблицы требуют больше накладных расходов) и объема трафика.
Рекомендации по таблицам и ограничения
Выбор таблиц
Не обязательно включать в группу синхронизации все таблицы, которые находятся в базе данных. Таблицы, включаемые в группу синхронизации, влияют на эффективность и стоимость. Включайте таблицы и таблицы, зависящие от них, в группу синхронизации только в соответствии с требованиями бизнеса.
Первичные ключи
Каждая таблица в группе синхронизации должна иметь первичный ключ. Служба "Синхронизация данных SQL" не сможет синхронизировать таблицу без первичного ключа.
Перед использованием синхронизации данных SQL в рабочей среде проверьте эффективность начальной и непрерывной синхронизации.
Пустые таблицы обеспечивают лучшую производительность
Пустые таблицы обеспечивают лучшую производительность во время инициализации. Если целевая таблица пуста, служба синхронизации данных использует инструкцию bulk insert для загрузки данных. В противном случае Data Sync выполняет сравнение и вставку по строкам для проверки конфликтов. Тем не менее, если производительность не является ключевым фактором, можно выполнить настройку синхронизации между таблицами, которые уже содержат данные.
Развертывание целевых баз данных
Синхронизация данных SQL предоставляет базовую автоматическую подготовку баз данных.
В этом разделе рассматриваются ограничения при настройке синхронизации данных в SQL.
Ограничения автоматического предоставления ресурсов
Для автоконфигурации синхронизации данных SQL имеются следующие ограничения.
- Выбирайте только столбцы, создаваемые в таблице назначения. Столбцы, которые не входят в группу синхронизации, не подготавливаются в таблицах назначения.
- Индексы создаются только для выбранных столбцов. Если индекс исходной таблицы содержит столбцы, которые не входят в группу синхронизации, такой индекс не подготавливается в таблицах назначения.
- Индексы столбцов типа XML не подготавливаются.
- Синхронизация данных поддерживает только следующие два свойства индекса: Unique, Clustered/Non-Clustered. Другие свойства индекса, например IGNORE_DUP_KEY, предикат фильтра Where и др., не поддерживаются. Индекс назначения подготавливается без этих свойств, даже если они заданы в исходном индексе.
- Ограничения CHECK не создаются.
- Имеющиеся триггеры в исходных таблицах не настраиваются.
- Представления и хранимые процедуры не создаются в целевой базе данных.
- Действия ON UPDATE CASCADE и ON DELETE CASCADE в отношении ограничений внешнего ключа не создаются повторно в целевых таблицах.
- Если у вас есть десятичные или числовые столбцы с точностью более 28, при синхронизации в Синхронизации данных SQL может возникнуть проблема переполнения преобразования. Мы рекомендуем ограничить точность десятичных или числовых столбцов до 28 или менее.
Рекомендации
- Используйте функцию автоматической подготовки синхронизации данных SQL только при тестировании службы.
- Для производства предоставьте схему базы данных.
Где найти центральную базу данных
Сценарий перемещения из предприятия в облако
Чтобы свести к минимуму задержки, храните центральную базу данных в регионе максимальной концентрации трафика базы данных в группе синхронизации.
Сценарий взаимодействия облаков
- Когда все базы данных в группе синхронизации находятся в одном центре обработки данных, центральная база данных должна находиться в том же центре обработки данных. Эта конфигурация уменьшает время задержки и стоимость передачи данных между центрами обработки данных.
- Когда базы данных в группе синхронизации находятся в нескольких центрах обработки данных, центральная база данных должна находиться в том же центре обработки данных, где и большинство баз данных и их трафик.
Смешанные сценарии
Примените предыдущие рекомендации к более сложным конфигурациям групп синхронизации, например со смешанными сценариями перемещения из предприятия в облако и из облака в облако.
Синхронизация
Избегайте медленной и дорогостоящей начальной синхронизации
В этом разделе мы рассмотрим начальную синхронизацию группы синхронизации. Узнайте, как можно ускорить начальную синхронизацию и сэкономить затраты на нее.
Как работает начальная синхронизация
Когда вы создаете группу синхронизации, начните с данных в одной базе данных. Если у вас есть данные в нескольких базах данных, синхронизация данных SQL обрабатывает каждую строку как конфликт, требующий разрешения. Это разрешение конфликтов приводит к замедлению начальной синхронизации. При наличии данных в нескольких базах данных начальная синхронизации может выполняться от нескольких дней до нескольких месяцев в зависимости от размера базы данных.
Если базы данных находятся в разных центрах обработки данных, то каждая строка должна пройти между всеми центрами обработки данных. Это увеличивает затраты на начальную синхронизацию.
Рекомендация
По возможности начинайте с данных только в одной базе данных группы синхронизации.
Проектируйте так, чтобы избегать петель синхронизации
Циклическая петля синхронизации возникает при наличии взаимных ссылок в группе синхронизации. В этом случае каждое изменение в одной базе данных приводит к бесконечной циклической репликации по базам данных в группе синхронизации.
Не допускайте возникновения петель синхронизации, так как они приводят к ухудшению производительности и могут значительно увеличить расходы.
Изменения, которые не удается распространить
Причины, по которым не удается распространить изменения
Изменения могут не распространиться по одной из следующих причин:
- Несовместимость схемы или типа данных.
- Вставка нулевого значения в столбцах, не допускающих нуля.
- Нарушение ограничений внешнего ключа.
Что происходит, когда изменения не распространяются?
- Группа синхронизации показывает, что находится в состоянии предупреждения.
- Подробности содержатся в средстве просмотра журнала в пользовательском интерфейсе портала.
- Если проблема не будет устранена в течение 45 дней, база данных станет устаревшей.
Примечание.
Эти изменения никогда не распространяются. Единственным способом восстановления в этом сценарии является повторное создание группы синхронизации.
Рекомендация
Регулярно отслеживайте состояние группы синхронизации и базы данных через интерфейс портала и журнала.
Обслуживание
Избегайте устаревших баз данных и групп синхронизации
Группа синхронизации или база данных в группе синхронизации могут устареть. Если статус группы синхронизации неактуален, она перестает функционировать. Если база данных устаревает, данные могут быть утеряны. Лучше избежать этого сценария, чем пытаться восстановиться после него.
Избегайте устаревших баз данных
База данных получает состояние устаревшей, если она находилась в автономном режиме более 45 дней. Чтобы избежать устаревания баз данных, следите за тем, чтобы ни одна из них не отключалась на срок более 45 дней.
Избегайте устаревших групп синхронизации.
Группа синхронизации считается устаревшей, если любые изменения в этой группе не распространялись на остальную часть группы синхронизации более 45 дней. Чтобы в группе синхронизации не было статуса устаревания, регулярно проверяйте журнал истории группы синхронизации. Убедитесь, что все конфликты решены и изменения успешно распространяются в базах данных групп синхронизации.
Группа синхронизации может не применять изменения по одной из следующих причин:
- Несовместимость схемы между таблицами.
- Несовместимость данных между таблицами.
- Вставка строки с нулевым значением в столбце, который не допускает нулевые значения.
- Обновление строки со значением, которое нарушает ограничение внешнего ключа.
Чтобы предотвратить устаревание групп синхронизации, сделайте следующее:
- Обновите схему, разрешив значения, содержащиеся в строках с ошибками.
- Обновите значения внешнего ключа, чтобы включить значения, содержащиеся в строках с ошибками.
- Обновите значения данных в строке с ошибкой, чтобы они были совместимы со схемой или внешними ключами в целевой базе данных.
Избегайте проблем с отключением ресурсов
При определенных обстоятельствах отмена регистрации базы данных в агенте клиента может привести к сбою синхронизации.
Сценарий
- Группа синхронизации A была создана с использованием экземпляра базы данных SQL и базы данных SQL Server, которая связана с локальным агентом 1.
- Та же самая локальная база данных регистрируется в локальном агенте 2 (этот агент не связан с какой-либо группой синхронизации).
- При отмене регистрации локальной базы данных в локальном агенте 2 удаляются таблицы отслеживания и метаданных из группы синхронизации A для локальной базы данных.
- Операции группы синхронизации A завершаются такой ошибкой: The current operation could not be completed because the database is not provisioned for sync or you do not have permissions to the sync configuration tables (Текущая операция не может быть завершена, потому что база данных не подготовлена для синхронизации или у вас нет разрешений для таблиц конфигурации синхронизации).
Решение
Чтобы избежать этого сценария, не регистрируйте базу данных больше чем у одного агента.
Чтобы выйти из данной ситуации, сделайте следующее:
- Удалите базу данных из каждой группы синхронизации, к которой она принадлежит.
- Добавьте базу данных обратно в каждую группу синхронизации, из которой вы удалили ее.
- Разверните каждую затронутую группу синхронизации (при этом действии подготавливается база данных).
Изменение группы синхронизации
Не пытайтесь удалить базу данных из группы синхронизации, а затем отредактировать группу без предварительного развертывания одного из этих изменений.
Вот как следует поступить вместо этого: сначала удалите базу данных из группы синхронизации. Затем разверните изменение и дождитесь завершения депровизии. После завершения снятия вы можете отредактировать эту группу синхронизации и развернуть изменения.
Если вы попытаетесь удалить базу данных, а затем отредактировать группу синхронизации без предварительного развертывания одного из этих изменений, одна из операций завершится сбоем, а интерфейс портала станет несогласованным. В этом случае обновите страницу, чтобы восстановить правильное состояние.
Избегайте превышения времени ожидания обновления схемы
При синхронизации сложной схемы может возникнуть "время ожидания операции" во время обновления схемы, если база данных метаданных синхронизации имеет более низкий номер SKU (например, базовый).
Решение
Чтобы устранить эту проблему, рассмотрите возможность масштабирования ресурсов базы данных метаданных синхронизации.
Связанный контент
Дополнительные сведения о синхронизации данных SQL см. в следующих материалах:
- Обзор: Синхронизация данных в нескольких облачных и локальных базах данных с помощью функции синхронизации данных SQL Azure.
- Настройка синхронизации данных SQL
- На портале: Руководство по настройке синхронизации данных SQL между базой данных SQL Azure и базой данных SQL Server.
- С помощью PowerShell
- Агент синхронизации данных: Агент синхронизации данных для синхронизации данных SQL Azure.
- Мониторинг: Мониторинг синхронизации данных SQL с помощью журналов Azure Monitor
- Устранение неполадок: Устранение неполадок с Azure SQL Data Sync.
Дополнительные сведения о Базе данных SQL см. в разделах:
- Обзор базы данных SQL
- Database Lifecycle Management (DLM) (Управление жизненным циклом базы данных)