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


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

Область применения: SQL Server — только Для Windows

SQL Server поддерживает обновление реплицированных баз данных из предыдущих версий SQL Server; При обновлении узла не требуется остановить действие на других узлах.

Необходимые условия

Соблюдайте следующие правила, определяющие допустимые версии объектов репликации.

  • Дистрибьютор может быть любой версией, если она больше или равна версии издателя (Publisher) (во многих случаях дистрибьютор является тем же экземпляром, что и издатель).

  • Версия издателя не должна превышать версию распространителя.

  • Версия подписчика зависит от типа публикации:

    • Подписчик на публикацию транзакций может иметь любую версию, отличающуюся от версии издателя, но не более, чем на две версии. Например: издатель SQL Server 2012 (11.x) может иметь подписчиков SQL Server 2014 (12.x) и SQL Server 2016 (13.x), а издатель SQL Server 2016 (13.x) — подписчиков SQL Server 2014 (12.x) и SQL Server 2012 (11.x).

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

Пути обновления

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

  • Параллельное использование. Развертывание параллельной среды и перемещение баз данных вместе со связанными объектами уровня экземпляров, такими как учетные данные и задания, в новую среду.

  • Обновление на месте. Установочный носитель SQL Server может обновить существующую установку SQL Server, заменив элементы SQL Server и обновив объекты баз данных. Для сред, работающих под управлением групп доступности (AGs) или экземпляров отказоустойчивого кластера (FCIs), обновление на месте объединяется с последовательного обновления, чтобы свести к минимуму время простоя.

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

Большая часть этой статьи связана с обновлением версии SQL Server. Тем не менее процесс обновления на месте также должен использоваться при применении исправлений SQL Server из пакета обновления или накопительного пакета обновления.

Замечания

Обновление топологии репликации включает несколько этапов. Рекомендуем выполнить пробное обновление реплики топологии репликации в тестовой среде, прежде чем делать это в реальной рабочей среде. Это помогает выработать любую операционную документацию, необходимую для плавной обработки обновления, не вызывая дорогостоящих и длительных простоев во время фактического процесса обновления. При обновлении топологии репликации можно значительно сократить время простоя с помощью групп доступности и (или) кластерных экземпляров для их производственных сред. Кроме того, рекомендуется создавать резервные копии всех баз данных, включая msdb, master, базы данных распространителя и пользовательские базы данных, участвующие в репликации, перед попыткой обновления.

При наличии базы данных распространителя в экземпляре отказоустойчивого кластера все участвующие узлы должны использовать одну и ту же сборку. Мы не рекомендуем установить, в котором один узел является версией SQL Server ранее, чем SQL Server 2016 (13.x) SP2-CU3 или SQL Server 2017 (14.x), а другой узел — версия SQL Server позже, чем sql Server 2016 (13.x) SP2-CU3 или SQL Server 2017 (14.x) CU6. Начиная с SQL Server 2016 (13.x) SP2-CU3 и SQL Server 2017 (14.x) CU6, добавляется поддержка для использования базы данных распространителя в группе доступности и для новых объектов (таблиц, хранимых процессов) в базах данных распространителя. Если база данных распространителя находится в экземпляре отказоустойчивого кластера и выполняется поэтапная миграция (и вы не можете обновить все узлы до одной и той же версии SQL Server), то в течение короткого периода миграции рекомендуется выполнять действия с учетной записью, например добавление новых подписчиков, подписок, издателей или публикаций, на узле с более поздней версией SQL Server.

Матрица репликации

Матрица совместимости репликации транзакций и моментальных снимков

Издатель Распространитель Подписчик
Управляемый экземпляр Azure SQLAUTD Управляемый экземпляр SQL AzureAUTD База данных SQL Azure
Управляемый экземпляр SQL AzureAUTD
Управляемый экземпляр SQL Azure2022
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
Управляемый экземпляр Azure SQL2022 Управляемый экземпляр SQL AzureAUTD
Azure SQL Managed Instance2022
База данных SQL Azure
Управляемый экземпляр Azure SQLAUTD
Управляемый экземпляр SQL Azure2022
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2022 (16.x) SQL Server 2022 (16.x) База данных SQL Azure
Управляемый экземпляр SQL AzureAUTD
Управляемый экземпляр SQL Azure2022
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2019 (15.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
База данных SQL Azure
Управляемый экземпляр SQL AzureAUTD
Управляемый экземпляр SQL Azure2022
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2017 (14.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
Управляемый экземпляр SQL Azure2022
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2016 (13.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2014 (12.x) Управляемый экземпляр SQL AzureAUTD
Управляемый экземпляр Azure SQL2022
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2012 (11.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)

2022 Применяется к Управляемому экземпляру SQL Azure, настроенному с политикой обновления SQL Server 2022 . AUTD применяется к управляемому экземпляру SQL Azure, настроенного с помощью политики обновления Always-up-to-date.

Матрица совместимости репликации слиянием

Издатель Распространитель Подписчик
SQL Server 2022 (16.x) SQL Server 2022 (16.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2019 (15.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2017 (14.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2016 (13.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2014 (12.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2012 (11.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)

Рекомендации по обновлению

Запустите агент чтения журналов для репликации транзакций перед обновлением

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

  1. Убедитесь, что в базе данных запущен агент чтения журнала. По умолчанию агент работает постоянно.

  2. Остановите активность пользователей в опубликованных таблицах.

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

  4. Выполните sp_replcmds, чтобы убедиться, что все транзакции обрабатываются. Результирующий набор от этой процедуры должен быть пустым.

  5. Выполните sp_replflush, чтобы закрыть соединение из sp_replcmds

  6. Обновите сервер до последней версии SQL Server.

  7. Перезапустите агент SQL Server и агент чтения журналов, если они не запускаются автоматически после обновления.

Запуск агентов для репликации слияния после обновления

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

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

Запустите агенты из СРЕДЫ SQL Server Management Studio, монитора репликации или из командной строки. Дополнительные сведения о выполнении агента моментальных снимков см. в следующих статьях:

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

После обновления SQL Server в топологии, которая использует репликацию слиянием, измените уровень совместимости публикации любых публикаций, если вы хотите использовать новые функции.

Обновление до выпусков Standard, Workgroup или Express

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

Процедура обновления топологии репликации

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

Обновление «на месте»

  1. Обновите распространителя.
  2. Обновите издателя и подписчика. Эти элементы можно обновлять в любом порядке.

Примечание.

Для SQL Server 2008 (10.0.x) и SQL Server 2008 R2 (10.50.x) обновление издателя и подписчика должно выполняться одновременно, чтобы соответствовать матрице топологии репликации. Издатели ИЛИ подписчики SQL Server 2008 (10.0.x) и SQL Server 2008 R2 (10.50.x) не могут иметь издателя ИЛИ подписчика SQL Server 2016 (13.x) (или более поздней версии). Если обновление одновременно невозможно, используйте промежуточное обновление для обновления экземпляров SQL Server до SQL Server 2014 (12.x), а затем снова обновите их до SQL Server 2016 (13.x) (или больше).

Параллельное обновление

  1. Обновите распространителя.
  2. Перенастройте конфигурацию распространения на новом экземпляре SQL Server.
  3. Обновите издателя.
  4. Обновите подписчика.
  5. Перенастройте все пары "издатель-подписчик", включая повторную инициализацию подписчика.

Шаги по параллельной миграции распространителя на Windows Server

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

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

  2. Синхронизируйте репликацию, а затем завершите работу всех агентов репликации.

  3. Завершите работу текущего экземпляра распространителя SQL Server. Если это автономный экземпляр, завершите работу сервера. Если это SQL Server FCI, отключите всю роль SQL Server в диспетчере кластеров, включая сетевое имя.

  4. Удалите записи объектов компьютера DNS и Active Directory для старой среды (текущего экземпляра распространителя).

  5. Измените имя узла нового сервера, чтобы оно соответствовало старому серверу.

    1. Если это FCI SQL Server, переименуйте новый FCI SQL Server с тем же именем виртуального сервера, что и старый экземпляр.
  6. Скопируйте файлы баз данных из предыдущего экземпляра с помощью перенаправления SAN, копирования хранилища или копирования файлов.

  7. Подключите новый экземпляр SQL Server.

  8. Перезапустите все агенты репликации и проверьте, что они работают.

  9. Убедитесь, что репликация работает надлежащим образом.

  10. Используйте установочный носитель SQL Server для обновления вашего экземпляра на месте и перехода на новую версию SQL Server.

Примечание.

Чтобы сократить время простоя, рекомендуется выполнить параллельную миграцию распространителя как одно действие, а обновление на месте до SQL Server в качестве другого действия. Это позволяет использовать поэтапный подход, уменьшить риск и свести к минимуму время простоя.

Веб-синхронизация для слияния репликаций

Параметр веб-синхронизации для репликации слиянием требует, чтобы вы скопировали прослушиватель репликации SQL Server (replisapi.dll) в виртуальный каталог на сервере Internet Information Services (IIS), который используется для синхронизации. При настройке веб-синхронизации мастер настройки веб-синхронизации копирует файл в виртуальный каталог. При обновлении компонентов SQL Server, установленных на сервере IIS, необходимо вручную скопировать replisapi.dll из COM-каталога в виртуальный каталог на сервере IIS. Дополнительные сведения о конфигурации см. в статье Настройка веб-синхронизации.

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

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