Обновляем System Center 2012 R2 Data Protection Manager до уровня System Center 2016 на Windows Server 2012 R2 с обновлением SQL Server 2012 до SQL Server 2016

In-place upgrade System Center 2012 R2 DPM to System Center 2016 on Windows Server 2012 R2 with update SQL Server 2012 to SQL Server 2016Как известно, продукты линейки Microsoft System Center 2012 R2 завершают свой жизненный цикл, так как подходит к концу срок расширенной поддержки, который завершается 11.07.2022. Кроме того, на подходе срок поддержки SQL Server 2012 с той же датой Extended End Date (без учёта расширенной программы Extended Security Update). Поэтому, если вы всё ещё используете старую линейку System Center 2012 R2, то самое время подумать о поднятии её версии.

В данной заметке будет рассмотрен пример обновления System Center 2012 R2 Data Protection Manager (DPM) до уровня System Center 2016 с последующим повышением экземпляра SQL Server, используемого для DPM, с версии SQL Server 2012 до версии SQL Server 2016.

Известные проблемы и выбор пути обновления

На этапе планирования, помимо обязательного чтения официальных рекомендаций от Microsoft, не будет лишним изучить опыт использования новых версий ПО, которым делятся пользователи в Интернете. Удалось найти обсуждения, как минимум, двух проблем, получивших некоторый резонанс:

  1. Проблемы с работой Modern Backup Storage (MBS) поверх ReFS в System Center 2016/2019 DPM, развёрнутом на базе Windows Server 2016/2019. Большую ветку обсуждения можно найти здесь: TechNet Archived Forums : DPM 2016 MBS Performance downward spiral.
    В качестве обходного решения сообщество предлагает использовать для развёртывания DPM 2016 устаревшую ОС Windows Server 2012 R2, так как это исключает возможность безусловного использования файловой системы ReFS под MBS со стороны DPM. Официального же решения этой проблемы со стороны Microsoft, как я понял, нет до сих пор. Учитывая то, что данная ветка обсуждения является архивной, был проведён опрос ряда коллег, работающих с DPM и они подтвердили то, что проблема действительно ещё актуальна.
  2. Процессы DPM 2016 могут вести себя нештатно вести после установки обновления Update Rollup 10: TechNet Archived Forums : DPM 2016 crashes after installing UR10.
    Чтобы обсудить предложенное в обсуждении обходное решение с заменой библиотеки RHL.dll, я связался по электронной почте с Grant Thompson и он пояснил, что описанный им неофициальный патч больше не нужен, так как исправление включено в обновлённую редакцию Update Rollup 10, которая доступна на Windows Update/WSUS.

Таким образом, с учётом первой проблемы, на данном этапе нами выбрано обновление методом In-Place Upgrade до уровня System Center 2016 DPM UR10 на базе уже работающего сервера с Windows Server 2012 R2 с последующим обновлением использующегося под DPM экземпляра SQL Server 2012 SP4 до уровня SQL Server 2016 SP3 (также методом In-Place Upgrade). Ведь "модные фичи" для системы резервного копирования, зачастую гораздо менее важный аргумент, чем стабильность и предсказуемость этой системы.

При планировании обновлений всегда стоит учитывать официальный срок поддержки не только исходных обновляемых версий продуктов, но и целевых версий. SQL Server 2016, на который мы будем обновляться,  может использоваться в продуктивных развёртываниях ещё длительное время, так как срок поддержки для SQL Server 2016 SP3 – 13.06.2026. Однако, если говорить о Windows Server 2012 R2, то стоит помнить, что эта версия ОС тоже уже на завершающем этапе своего жизненного цикла, так как срок её поддержки - 09.10.2023 (без учёта расширенной программы Extended Security Update). Полагаю, что если проблемы с МBS на ReFS в новых версиях DPM & Windows Server не будут решены со стороны Microsoft до последней обозначенной даты, то перед нами встанет резонный вопрос выбора альтернативного продукта резервного копирования.

 

Общий план обновления

Принципиальным отличием от ранее проводимых обновлений DPM (по выше описанным причинам) будет отсутствие необходимости переустановки ОС и нового развёртывания SQL Server и DPM. По сути, все проводимые обновления мы будем выполнять методом In-Place Upgrade.

В рассматриваемом примере мы будем выполнять обновление двух серверов DPM - первичного и вторичного в контексте Disaster Recovery (DR) с версией SC 2012 R2 DPM - Update Rollup 14 (4.2.1603), каждый из которых работает с локальным экземпляром SQL Server 2012 Standard SP4 на базе Windows Server 2012 R2 Standard. В качестве хранения резервных копий защищаемых данных используются исключительно дисковые массивы и поэтому в данной заметке мы не будем упоминать о манипуляциях, связанных с ленточными накопителями.

Ключевым условием задачи по обновлению будет сохранение всех имеющихся бэкапов.

Весь процесс будет состоять из следующей последовательности задач:

1. Обновление вторичного сервера DPM
2. Обновление первичного сервера DPM
3. Обновление агентов DPM на защищаемых системах
4. Актуализация группы защиты первичного и вторичного серверов DPM
5. Обновление пакетов мониторинга DPM в SCOM

Задачи 1 и 2 будут выполняться с одинаковой совокупностью шагов:

  • Шаг 1. Создание резервной копии БД SC 2012 R2 DPM
  • Шаг 2. Изменение режима выполнения служб SQL Server
  • Шаг 3. Обновление SC 2012 R2 DPM UR14 до уровня SC 2016 DPM UR10
  • Шаг 4. Создание резервной копии БД SC 2016 DPM
  • Шаг 5. Остановка и отключение служб SC 2016 DPM
  • Шаг 6. Обновление SQL Server 2012 SP4 до уровня SQL Server 2016 SP3
  • Шаг 7. Удаление остатков SQL Server 2012
  • Шаг 8. Запуск служб и проверка работы SC 2016 DPM

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

 

Задача 1. Обновление вторичного сервера DPM

Шаг 1. Создание резервной копии БД System Center 2012 R2 DPM

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

Предварительно убеждаемся в том, что текущий экземпляр DPM обновлён до последнего уровня – установлен Update Rollup 14

В нашем примере версия 4.2.1603.0 соответствует уровню обновлений - Update Rollup 14 for System Center 2012 R2 DPM

Update Rollup 14 for System Center 2012 R2 DPM check build version 4.2.1603.0

 

Таблицу версий DPM можно найти в статье Вики:
"Номера версий Microsoft System Center Data Protection Manager"

Перед тем, как приступать к процессу обновления до DPM 2016 нам крайне желательно сделать резервную копию текущей базы данных DPM 2012 R2. Она пригодится нам в том случае, если в ходе обновления что-то пойдёт не так и нам потребуется восстановление DPM 2012 R2 к исходному состоянию.

Резервную копию базы данных DPM можно сделать с помощью утилиты DpmBackup.exe (по умолчанию расположена в каталоге исполняемых файлов сервера DPM C:\Program Files\Microsoft System Center 2012 R2\DPM\DPM\bin). При вызове этой утилиты в качестве входных параметров потребуется указать имя сервера БД, имя экземпляра SQL Server, имя базы данных и каталог для выгрузки резервной копии. Информацию о размещении БД можно подсмотреть, например, в системном реестре Windows в ключе:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Data Protection Manager\DB

Microsoft Data Protection Manager DPM DB Settings in Registry

В нашем примере у нас должна получиться команда следующего вида:

CD /d "C:\Program Files\Microsoft System Center 2012 R2\DPM\DPM\bin"
DpmBackup.exe -db -sqlServerName "KOM-SCDP01" -instanceName "MSDPM2012" -dpmDbName "DPMDB_KOM_SCDP01" -targetLocation "C:\Temp"

Созданный файл резервной копии БД должен появится в указанном нами каталоге.

Backup System Center 2012 R2 DPM Database with DpmBackup tool

Зафиксируем информацию о текущем порядке сортировки (Collation), используемом в экземпляре SQL Server и БД. В нашем случае порядок сортировки и у экземпляра SQL Server и у самой БД DPM - SQL_Latin1_General_CP1_CI_AS.

Check SQL Server DPM Database Collation

Эта информация может нам пригодится в случае, если в ходе обновления что-то пойдёт не так и нам придётся переустанавливать SQL Server с последующим восстановлением БД DPM.

 

Шаг 2. Изменение режима выполнения служб SQL Server

Ранее описывалась проблема, которая может возникнуть с инсталлятором System Center 2012 R2 DPM и то, как для их обхода этой проблемы изменить режим запуска служб SQL Server (смотрите раздел "Меняем режим выполнения служб SQL Server" этой статьи). Чтобы избежать аналогичных проблем при обновлении в инсталляторе System Center 2016 DPM, предполагается, что у нас уже настроен запуск всех служб SQL Server не от имени локальной системы, а от имени сервисных учётных записей.

В нашем случае в качестве сервисной учётной записи для запуска служб SQL Server вместо классической пользовательской учётной записи используется учётная запись gMSA.

Run SQL Server 2012 services with gMSA accounts

Я не исключаю того, что в инсталляторе System Center 2016 DPM уже исправлена обозначенная ранее проблема и, возможно, всё будет работать даже если службы SQL Server выполняются от имени Local System. Но проверять это только ради спортивного интереса я, конечно же, не стал.

 

Шаг 3. Обновление System Center 2012 R2 DPM до уровня System Center 2016

Согласно документа "Upgrade your System Center DPM" обновляемый экземпляр DPM должен иметь минимум версию Update Rollup 10, то есть иметь номер версии не ниже 4.2.1473.  В нашем случае используется System Center 2012 R2 DPM Update Rollup 14 (4.2.1603).

Кроме того, следует убедиться в том, что используемая версия SQL Server поддерживается инсталлятором DPM 2016. Согласно документа "Preparing your environment for System Center Data Protection Manager", нам потребуется минимум SQL Server 2012 SP4.

При этом следует учесть замечание из документа "What's supported and what isn't for DPM" о том, что SQL Server 2016 SP1 и более позднее не поддерживаются в инсталляторе DPM 2016.

Монтируем образ дистрибутива SC 2016 DPM – файл SW_DVD5_Sys_Ctr_DataCenter_Core_2016_MultiLang_DPM_MLF_X21-21038.ISO, запускаем с правами Администратора файл SC2016_SCDPM.EXE, который по сути является самораспаковывающимся архивом. Укажем временный каталог, в который будет произведена распаковка инсталлятора DPM 2016. После окончания распаковки переходим в этот каталог и запускаем файл Setup.exe.

В разделе Install выбираем пункт Data Protection Manager

System Center 2016 Data Protection Manager Installation

На данном моменте (перед открытием окна программы установки DPM) будет выполнена проверка наличия в системе компонент Visual C++ 2012 x64 и, в случае их отсутствия, может произойти их автоматическая установка с последующей форсированной перезагрузкой системы без каких либо предупреждений. Именно поэтому в самом начале я предупредил о том, что серверу потребуется окно обслуживания на время проведения обновлений.

Если сервер ушёл в перезагрузку, то после загрузки системы повторно запускаем инсталлятор DPM 2016 и доходим до шага с лицензионным соглашением, соглашаемся с этим соглашением и переходим к шагу настройки подключения к БД. Убеждаемся в том, что имя экземпляра SQL Server с текущей базой DPM 2012 R2 указано верно и жмём Check and Install.

Check and Install prereqs for DPM 2016

После этого будет выполнена проверка наличия требуемых для установки программных компонент и предпринята попытка подключения к указанному экземпляру БД.

Если с обнаружением экземпляра SQL Server возникли проблемы, то изучаем лог-файл программы установки:

C:\Program Files\Microsoft System Center 2016\DPM\DPMLogs\DpmSetup.log

В нашем случае, инсталлятор сообщил о том, что в систему была доустановлена недостающая компонента и требуется перезагрузка сервера.

 

HyperVPowerShell installation for DPM 2016

Жмём кнопку отмены, перезагружаем сервер, снова запускаем из временного каталога уже ранее распакованный инсталлятор DPM 2016 и повторно нажимаем кнопку Check and Install.

Инсталлятор обнаружит существующую БД текущей версии DPM и предупредит нас о том, что будет выполнено обновление этой БД, перед которым нам рекомендуется сделать резервную копию этой БД.

You are upgrading the DPM database message

Резервная копия БД у нас уже создана, поэтому переходим к следующему шагу, где нам будет предложено ввести имеющийся у нас ключ продукта линейки System Center 2016

Product key for System Center 2016 DPM

Изменение каталога установки в нашем случае будет недоступно, так как обнаружив предыдущую версию DPM, инсталлятор перешёл в режим обновления. То есть, при обновлении все исполняемые файлы сервера DPM 2016 фактически будут помещены в текущий каталог DPM 2012 R2:

C:\Program Files\Microsoft System Center 2012 R2\DPM

Install DPM 2016 to System Center 2012 R2 DPM folder

Далее на вопрос об использовании Windows Update отвечаем отказом, чтобы сделать дальнейший процесс установки более предсказуемым.

Microsoft Update Opt-In

Жмём кнопку Upgrade и дожидаемся успешного завершения процедуры обновления.

SC 2016 DPM upgraded

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

DPM 2016 Installation Result Warning message

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

Далее мы можем поднять до актуального состояния версию DPM 2016 путём установки последнего кумулятивного обновления Update Rollup 10 for System Center 2016 Data Protection Manager. Это обновление может быть установлено либо через локальные службы WSUS, либо загружено из онлайн каталога Windows Update: KB4578608.

Install Update Rollup 10 for System Center 2016 Data Protection Manager from WSUS

В нашем случае установка UR10 была успешно проведена с сервера WSUS.

После установки обновления снова перезагружаем сервер и убеждаемся в штатной работе консоли System Center 2016 DPM UR10.

 

Шаг 4. Создание резервной копии БД System Center 2016 DPM UR10

Теперь, фактически имя уже обновлённую версию DPM, мы сделаем резервную копию БД, которая в дальнейшем может пригодиться для восстановления работоспособности DPM после обновления SQL Server на новую версию (опять же, на случай, если такое обновление будет безуспешным).

Перед тем, как создавать резервную копию БД, обратите внимание на то, что в ходе обновления DPM до уровня System Center 2016 произошло изменение имени БД.SCDPM 2016 DPMDB registry settings

Сделать резервную копию БД по аналогии с Шагом 1 с помощью утилиты DpmBackup.exe в DPM 2016 у нас уже не получится, так как в обновлённой версии DPM этой утилиты попросту нет. Поэтому сделать резервную копию БД мы сможем либо через графическую консоль управления SQL Server Management Studio, либо через командную строку командой вида:

cd /d "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\"
sqlcmd -S KOM-SCDP01\MSDPM2012 -E -d master -Q "BACKUP DATABASE [DPMDB] TO DISK = N'C:\Temp\dpmdb_2016.bak'"

Backup DPM DB with sqlcmd tool

Резервная копия БД создана и теперь можно переходить к процедуре поднятия версии SQL Server.

 

Шаг 5. Остановка и отключение служб System Center 2016 DPM

Перед запуском процесса обновления SQL Server, нам желательно закрыть все открытые консоли DPM Administrator Console и остановить службы службы сервера DPM, чтобы они не обращались к ресурсам SQL Server. Сделать это можно, например, с помощью PowerShell:

Get-Service -DisplayName "DPM*" | Stop-Service

Stop DPM Services via PowerShell

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

Set-Service -Name "MSDPM" -StartupType Disabled
Set-Service -Name "DPMAMService" -StartupType Disabled
Set-Service -Name "DPMRA" -StartupType Disabled
Get-Service -DisplayName "DPM*" | Stop-Service

 

Шаг 6. Обновление SQL Server 2012 SP4 до уровня SQL Server 2016 SP3

Согласно документа "Preparing your environment for System Center DPM", SQL Server 2016 поддерживается начиная с DPM 2016 Update Rollup 2. Именно поэтому важно обновлять SQL Server уже после того, как мы провели обновление DPM до самого актуального уровня Update Rollup (в завершении Шага 3).

К тому же, следует иметь в виду, что в документе "What's supported and what isn't for DPM" есть информация о том, что SQL Server 2016 SP1 (и более поздней версии) на поддерживаются в инсталляторе DPM 2016.

Ну и разумеется, так как речь идёт об обновлении SQL Server 2012 на SQL Server 2016, следует учитывать замечания документа "Supported version & edition upgrades (SQL Server 2016)", где обозначено то, каков должен быть уровень обновления Service Pack для исходной версии SQL Server.

Supported version & edition upgrades for SQL Server 2016

В нашем случае используется SQL Server 2012 SP4, поэтому мы можем приступать к процессу обновления.

Смонтируем на сервере образ диска с дистрибутивом SQL Server 2016, который поставляется в составе дистрибутивов System Center 2016 (файл SW_DVD9_NTRL_SQL_Svr_Standard_Edtn_2016_64Bit_English_OEM_VL_X20-97264.ISO).

На смонтированном диске запускаем файл инсталлятора setup.exe и в окне SQL Server Installation Center выбираем пункт обновления с предыдущих версий: "Installation" > "Upgrade from a previous version of SQL Server".

Upgrade from a previous version of SQL Server

В открывшемся мастере обновления SQL Server убедимся в том, что указан лицензионный ключ для SQL Server 2016 Standard (этот ключ вшит в дистрибутив SQL Server, поставляемый в комплекте с System Center 2016)

SQL Server 2016 Standard Product Key

На следующих шагах мастера нам нужно будет принять лицензионное соглашение (здесь мы удостоверимся в том, что устанавливается именно редакция SQL Server 2016 Standard) и определиться с выбором использования Windows Update в ходе установки. В нашем случае у сервера нет полноценного прямого выхода в Интернет, поэтому мы отключаем опцию проверки обновлений.

Windows Update in SQL Server 2016 Installation

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

Install KB3164398 in SQL Server 2016 upgrade

Далее инсталлятор SQL Server выполнит предварительные установки Setup files и предложит выбор экземпляра SQL Server, который мы собираемся обновлять. В нашем случае на сервере всего один локальный экземпляр "MSDPM2012", в котором выполняется база данных нашего уже обновлённого сервера DPM 2016. Имя экземпляра SQL Server на ранее описанном этапе обновления DPM не обновлялось и унаследовано от DPM 2012 R2, поэтому просто жмём "Next".

Select Instance for in-place upgrade to SQL Server 2016

Выбор устанавливаемых компонент в режиме обновления нам будет недоступен, жмём "Next".

Select Features for in-place upgrade to SQL Server 2016

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

Instance Configuration for in-place upgrade to SQL Server 2016

На следующем шаге просматриваем сводную информацию о предстоящем обновлении экземпляра SQL Server и нажимаем кнопку "Upgrade".

Run in-place upgrade to SQL Server 2016

В ходе процесса обновления мы словили ошибку вида "The following error has occurred: Attempted to perform an unauthorized operation":

SQL Server 2016 Setup - The following error has occurred: Attempted to perform an unauthorized operation

Нажатия кнопки "Retry" приводили к повторному появлению этого окна, в итоге была нажата кнопка "Cancel" и, как ни странно, процесс обновления не прервался и пошёл дальше.

Не смотря на появление этой странной ошибки, на конечный результат обновления это не повлияло и всё завершилось без явных проблем.

Upgrade to SQL Server 2016 Complete

Анализ сводного лога по ссылке внизу диалоговой формы не показал наличия каких-либо проблем в ходе обновления, однако "неприятный осадок" всё-таки остался.

Дополнительное изучение детального лога Detail_Local.txt (можно найти в том же каталоге, где расположен сводный лог, и в нашем примере это, соответственно, C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\Log\20220224_153544\Detail_Local.txt) показало, что в ходе обновления инсталлятор SQL Server 2016 по какой-то причине инициировал остановку одной из служб (SepLpsService) используемого у нас антивирусного клиента Symantec Endpoint Protection.

(01) 2022-02-24 16:15:05 Slp: Sco: Attempting to stop service SepLpsService, stop dependents True
(01) 2022-02-24 16:15:05 Slp: Sco: Service SepLpsService has dependents... stopping dependents first
(01) 2022-02-24 16:15:05 Slp: Sco: Attempting to open SC Manager
(01) 2022-02-24 16:15:05 Slp: Sco: Attempting to open service handle for service SepLpsService
(01) 2022-02-24 16:15:05 Slp: Sco: Attempting to close SC Manager
(01) 2022-02-24 16:15:05 Slp: Prompting user if they want to retry this action due to the following failure:
(01) 2022-02-24 16:15:05 Slp: ----------------------------------------
(01) 2022-02-24 16:15:05 Slp: The following is an exception stack listing the exceptions in outermost to innermost order
(01) 2022-02-24 16:15:05 Slp: Inner exceptions are being indented
(01) 2022-02-24 16:15:05 Slp: 
(01) 2022-02-24 16:15:05 Slp: Exception type: Microsoft.SqlServer.Configuration.Sco.ScoException
(01) 2022-02-24 16:15:05 Slp:     Message: 
(01) 2022-02-24 16:15:05 Slp:         Attempted to perform an unauthorized operation.
(01) 2022-02-24 16:15:05 Slp:     HResult : 0x84bb0001
(01) 2022-02-24 16:15:05 Slp:         FacilityCode : 1211 (4bb)
(01) 2022-02-24 16:15:05 Slp:         ErrorCode : 1 (0001)
(01) 2022-02-24 16:15:05 Slp:     Data: 
(01) 2022-02-24 16:15:05 Slp:       DisableRetry = true
(01) 2022-02-24 16:15:05 Slp:     Inner exception type: System.UnauthorizedAccessException
(01) 2022-02-24 16:15:05 Slp:         Message: 
(01) 2022-02-24 16:15:05 Slp:                 Attempted to perform an unauthorized operation.
(01) 2022-02-24 16:15:05 Slp:         HResult : 0x80070005
(01) 2022-02-24 16:15:05 Slp:         Stack: 
(01) 2022-02-24 16:15:05 Slp: at Microsoft.SqlServer.Configuration.Sco.Service.OpenService()
(01) 2022-02-24 16:15:05 Slp: at Microsoft.SqlServer.Configuration.Sco.Service.ControlService(UInt32 dwControlCode)
(01) 2022-02-24 16:15:05 Slp: at Microsoft.SqlServer.Configuration.Sco.Service.StopService(Boolean bStopDependents)
(01) 2022-02-24 16:15:05 Slp: ----------------------------------------

Разумеется, сделать остановку службы инсталлятор не смог, так как, во первых, у антивирусного ПО имеются механизмы защиты от вмешательства извне, а во вторых, эта служба вообще была отключена в системе. Проверив зависимости между службами, я так и не узрел прямых связей между службами SQL Server и службами антивирусного ПО, поэтому такое странное поведение инсталлятора для меня так и осталось загадкой. Как бы там ни было, при возникновении этой проблемы инсталлятор SQL Server 2016 повёл себя в духе "ну не получилось остановить службу, которая мне показалась зависимой, ну и ладно … продолжаем установку". В итоге я пришёл к выводу, что возникновение вышеописанной ошибки в процессе обновления SQL Server вполне можно проигнорировать.

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

В нашем случае было обнаружено, что при запуске системы не стартует в автоматическом режиме служба "SQL Server Agent (MSDPM2012)". При этом ручной запуск службы проходил успешно. Поэтому для данной службы был изменён тип запуска на автоматический (отложенный) и включён автоматический перезапуск после первой остановки.

SQL Server Agent (MSDPM2012) service recovery settings

Однако позднее было замечено, что не смотря на успешный автоматический или даже ручной запуск, менее, чем через минуту служба всё равно останавливалась с регистрацией ошибки:

Log Name:      Application
Source:        SQLAgent$MSDPM2012
Event ID:      103
Level:         Error
Description:   SQLServerAgent could not be started (reason: Unable to connect to server 'KOM-SCDP01\MSDPM2012'; SQLServerAgent cannot start).

Чтобы раньше времени не углубляться в эту проблему, было решено подвести к логическому завершению процедуру обновления исполняемых файлов SQL Server 2016 и выполнить установку всех актуальных обновлений с WSUS/Windows Update. Как минимум, следует произвести установку последнего на текущий момент времени Service Pack 3.

Install SP3 for SQL Server 2016 from WSUS

Здесь нужно иметь ввиду, что установка обновлений SQL Server может выполняться не сразу для всех доступных обновлений, а поэтапно. То есть после того, как система сообщит о необходимости перезагрузки и мы её перезапустим, следует снова проверить доступность обновлений с WSUS/Windows Update и доустановить доступные обновления.

После установки SP3 на SQL Server 2016 выше обозначенная проблема с работой службы SQL Server Agent ликвидировалась сама собой.

 

Шаг 7. Удаление остатков SQL Server 2012

После обновления до SQL Server 2016 мы можем удалить компоненты старой версии SQL Server 2012. Для этого перейдём в оснастку управления программами, выберем "Microsoft SQL Server 2012 (64-bit)" и воспользуемся пунктом меню "Uninstall/Change".

Uninistall Microsoft SQL Server 2012 (64-bit) in Add Remove Programms

В небольшой открывшейся форме выбора типа изменений инсталляции SQL

Server выберем пункт "Remove".

Remove SQL Server 2012

В окне мастера удаления SQL Server 2012 дойдём до шага выбора удаляемых компонент и отметим все компоненты, относящиеся к старой версии.

Remove SQL Server 2012 - Select features

На следующем экране мастера кнопкой "Remove" подтвердим удаление и дождёмся окончания процесса.

Remove SQL Server 2012 Complete

Не смотря на то, что после удаления компонент старой версии SQL Server перезагрузка может не потребоваться, можно всё же выполнить дополнительную перезагрузку для получения уверенности в том, что при запуске системы службы SQL Server 2016 запускаются в автоматическом режиме штатно.

Теперь мы можем вызвать из стартового меню утилиту "SQL Server 2016 Installation Center (64-bit)" и перейти на вкладку "Tools". Здесь с помощью пункта "Installed SQL Server features discovery report" сформируем отчёт о всех зарегистрированных в системе компонентах SQL Server.

Installed SQL Server features discovery report

Убедимся в том, что в отчёте отсутствуют компоненты старой версии SQL Server.

SQL Server 2016 setup discovery report

Как видно в нашем примере, удалённые компоненты старой версии SQL Server 2012 (версии 11.* в столбце "Version") больше не фигурируют в отчёте.

 

Шаг 8. Запуск служб и проверка работы System Center 2016 DPM

Восстанавливаем в исходное состояние режим запуска служб, которые мы отключали ранее, и сразу запускаем эти службы:

Set-Service -Name "MSDPM" -StartupType Manual
Set-Service -Name "DPMAMService" -StartupType Automatic
Set-Service -Name "DPMRA" -StartupType Manual
Start-Service -Name "MSDPM", "DPMAMService", "DPMRA"

Службы должны успешно запуститься без ошибок.

Start DPM 2016 Services via PowerShell

Теперь можно попробовать открыть графическую консоль DPM Administrator Console и проверить функциональную доступность компонент сервера DPM в разных вкладках консоли.

На вкладке "Reporting" можно обнаружить то, что после обновления SQL Server при попытке формирования любого отчёта возникает ошибка вида:

Failed to load expression host assembly. Details: Could not load file or assembly 'ReportSRV5, Version=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. (rsErrorLoadingExprHostAssembly)

SSRS and DPM 2016 - Failed to load expression host assembly. Details: Could not load file or assembly ReportSRV5

Связано это с тем, что в обновлённом наборе файлов SQL Server Reporting Services (SSRS) отсутствуют библиотеки модуля отчётности DPM.

Для быстрого исправления этой проблемы можем воспользоваться вариантом, описанным в ветке обсуждения "Reporting fails to load". То есть, попробуем скопировать файлы:

  • ReportSRV5.dll
  • \ru-RU\ReportSRV5.resources.dll

из каталога предыдущей инсталляции SSRS 2012… 

С:\Program Files\Microsoft SQL Server\MSRS11.MSDPM2012\Reporting Services\ReportServer\bin\

… в каталог новой инсталляции SSRS 2016 …

С:\Program Files\Microsoft SQL Server\MSRS13.MSDPM2012\Reporting Services\ReportServer\bin\

Если по какой-то причине не удаётся найти каталог предыдущей инсталляции SSRS 2012, то эти файлы можно извлечь из дистрибутива DPM 2016 (из подкаталога \DPM2012\setup\).

После добавления файлов потребуется перезапустить службы DPM и SSRS, либо просто перезагрузить сервер.

Это избавит нас от явной ошибки при формировании отчётов, но не решит проблемы окончательно. Отчёты при запуске из консоли DPM может сформироваться, а может и повиснуть в длительном цикле попыток загрузки веб-страницы. Предположительно, проблема в том, что DPM, не учитывая того, что он фактически же работает c SQL Server 2016, формирует ссылки на отчёты в формате близком к SSRS 2012, но не очень годным для SSRS 2016. То есть, например, ссылка в консоли DPM на отчёт "Disk Utilization" будет формироваться в виде:

http://kom-scdp01/ReportServer_MSDPM2012/Pages/ReportViewer.aspx?/DPMReports_a3adccc1-11dc-44c0-8659-a7e12f3743c0/DiskUtilizationReport&rs:Format=HTML4.0&rs:Command=Render

И если убрать из такой ссылки фрагмент "&rs:Format=HTML4.0" или банально запустить отчёт "DiskUtilizationReport", перейдя по корневой ссылке вида…

http://kom-scdp01/ReportServer_MSDPM2012/

Run SQL reports from ReportServer MSDPM2012

…то отчёт должен успешно сформироваться:

Disk Utilization report from DPM 2016 in SSRS

Конечно, такие "костыли" с отчётами в консоли DPM не очень радуют глаз и мы понимаем, что чистая переустановка DPM 2016 наверняка решит эту проблему. Но, положа руку на сердце, могу сказать, что лично для меня эти проблемы с отчётами в консоли DPM, мягко говоря, второстепенны и не стоят того, чтобы заморачиваться с переустановкой продукта. Ибо ценность базовых отчётов, входящих в состав DPM, увы, как была со времён System Center 2007 близка к нулю, так остаётся на том же уровне и дойдя до System Center 2016. И трудно отрицать тот факт, что базовый набор отчётности DPM за всё время развития продукта практически не получил никакой положительной динамики, и как был в зачаточном состоянии, так в этом состоянии и остался. В общем это то место, где мы смело можем сказать "да и пофиг.." и приступить к следующей задаче – обновлению первичного сервера DPM.

 

Задача 2. Обновляем первичный сервер DPM

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

  • Шаг 1. Создание резервной копии БД SC 2012 R2 DPM
  • Шаг 2. Изменение режима выполнения служб SQL Server
  • Шаг 3. Обновление SC 2012 R2 DPM до уровня SC 2016 DPM
  • Шаг 4. Создание резервной копии БД SC 2016 DPM
  • Шаг 5. Остановка и отключение служб SC 2016 DPM
  • Шаг 6. Обновление SQL Server 2012 до уровня SQL Server 2016
  • Шаг 7. Удаление остатков SQL Server 2012
  • Шаг 8. Запуск служб и проверка работы SC 2016 DPM

 

Задача 3. Обновление агентов DPM на защищаемых системах

После того как вторичный и первичный серверы DPM обновлены, обновляем всех агентов DPM до текущей версии уровня System Center 2016 DPM UR10 (5.0.622.0). Увидеть всех агентов, требующих обновления и запустить процедуру обновления мы можем в графической консоли DPM Administrator Console на вкладке "Management".

Update DPM agents in DPM Administrator Console

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

Также стоит помнить про то, что при попытке обновить агента DPM, который является участником кластера, автоматически будет инициировано обновление всех остальных агентов кластера. С такими агентами тоже замечена одна особенность – какой-то один из агентов-участников кластера может начать обновляться, а другой может перейти в состояние ошибки. В такой ситуации лучше не делать резких движений и просто дождаться, когда первый агент обновится и перейдёт в статус "OK", а уже  после этого повторить попытку обновления другого агента-участника кластера.

DPM Agent needs updating

В зависимости от версии ОС и серверных ролей защищаемого сервера с агентом DPM может потребоваться установка дополнительных программных компонент, согласно таблицы "Protected workloads" документа "Preparing your environment for System Center Data Protection Manager", а также данных документа "What can DPM back up?". Например, для того, успешно развернуть агента DPM 2016 на старой серверной ОС Windows Server 2008 R2 SP1, предварительно потребуется установить в эту систему пакет Windows Management Framework 5.1, поднимающий версии PowerShell/WinRM/WMI.

При обновлении агентов DPM на новую версию замечено, что не удаляется один из вспомогательных пакетов старой версии клиента "Microsoft System Center 2012 R2 DPM Support Files". Как я понял, этот пакет можно удалить вручную и на работе агента новой версии это никак не сказывается.

Uninstall Microsoft System Center 2012 R2 DPM Support Files

 

 

Задача 4. Актуализация группы защиты на серверах DPM

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

После процедур обновления состояние групп защиты может перейти в статус "Replica is inconsistent" и для его исправления достаточно будет запустить стандартную процедуру "Perform consistency check".

DPM Perform consistency check

И даже, если группы защиты после обновления находятся в состоянии "OK", то всё равно для проверки успешности работы механизмов резервного копирования через обновлённых агентов DPM желательно запустить процедуру consistency check. То есть, по хорошему, итогом выполнения данной задачи должно стать то, что все группы защиты сервера DPM находятся в консистентном состоянии и имеют свежую точку восстановления.

 

Задача 5. Обновление пакетов мониторинга DPM в SCOM

Данная задача является опциональной и необходима лишь в том случае, если в инфраструктуре используется система мониторинга System Center Operations Manager (SCOM). Пакеты мониторинга Management Pack (MP) для DPM, расширяющие функционал SCOM, базово поставляются в составе дистрибутива System Center 2016 DPM. Найти соответствующие файлы MP можно в подкаталоге \SC 2016 SCDPM\ManagementPacks\en-US\ :

  • Microsoft.SystemCenter.DataProtectionManager.2016.Discovery.mp
  • Microsoft.SystemCenter.DataProtectionManager.2016.Library.mp
  • Microsoft.SystemCenter.DataProtectionManager.2016.Reporting.mp

Эти MP могут быть загружены в Operations Manager из линеек System Center 2012 R2/2016/2019.

Однако следует учесть, что в составе дистрибутива DPM 2016 эти MP имеют устаревшую версию 5.0.1200.0.

Более правильным вариантом будет скачивание актуальной версии MP (на текущий момент это версия 5.0.1401.2 от 11.02.2021) c сайта Microsoft Downloads Center.

Обратите внимание на то, что для успешного импорта MP в SCOM потребуется предварительное удаление всех старых версий MP для DPM.

Import System Center Operations Manager Management Pack for DPM 2016

После обновления MP в SCOM мы получим возможность централизованного мониторинга состояния всех серверов DPM.

System Center 2016 DPM Servers monitoring in SCOM

На этом процесс обновления можно считать законченным.


В заключение хочется напомнить про некоторые неочевидные вещи, которые потребуют дополнительного внимания уже после обновления ПО. Например, стоит вспомнить про используемые в инфраструктуре антивирусные решения, где может потребоваться корректировка настроек в связи с появлением на серверах/агентах DPM новых путей к исполняемым файлам. При этом обратите внимание на то, что в описанном нами сценарии обновления каталог исполняемых файлов сервера DPM 2016 остался тем же, что был до обновления в DPM 2012 R2.

Всего комментариев: 14 Комментировать

  1. Alexander /

    MBS можно отключить на W2016/2019/2022 ключами в реестре:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Data Protection Manager\Configuration\DiskStorage]
    "EnableLegacyStorage"="1"
    "DisableReFSStorage"="1"

    Проверено, работает на DPM 2016/2019/2022. Но на Windows отличной от 2012R2 при перезагрузсе сервера некоторы луны превращаются в RAW формат. LUN по какой то причине переходят в snapshot protection mode.

    1. Алексей Максимов / Автор записи

      Вы по своему опыту использования на чём остановились?

      1. Alexander /

        Советовать я не могу на какой версии остановится, очень зависит от вашей инфраструктуры.
        Например, DPM 2016 бэкапит hyper-v 2019, но не все файлы конфигурации, в результате VM нормально не восстанавливается и т.д.
        Для W2012R2 через год перестанут выходить апдейты, то есть с 12R2 надо уходить.
        У DPM 2016 начался extended support - https://learn.microsoft.com/en-us/lifecycle/products/system-center-2016-data-protection. Mainstream закончен 11.01.2022. То есть CU 10 был последним.
        DPM 2019 https://learn.microsoft.com/en-us/lifecycle/products/system-center-2019-data-protection-manager - здесь ситуация получше, 24й год.
        DPM 2022 https://learn.microsoft.com/en-us/lifecycle/products/system-center-2022-data-protection-manager - 27й.
        Мы в планировали установку W2022 с DPM 2022. Но у нас на часть железа W2022 не устанавливается. Дампов и логов нет. Кейсы у вендоров мы не можем открыть, по понятным причинам. Мы где можно установили W2022+DPM 2022, где нельзя W2019+DPM2022.
        DPM 2022 не хочет ставится на W2012R2. Я смотрел отладчиком и работать он там не будет.
        ReFS крайне не рекомендую, из-за убогой архитектуры хранения бэкапов.
        Даже на full flash storage, скорость деградирует из-за дикой дефрагментации. То что писали на technet, всё правда про падение со временем скорости хранилища.
        ReFs нормально работает на маленьких бэкапах до 100Gb - 500Gb, всё что более - нет.
        Если inplace upgrade DPM 2012R2->DPM 2016 -> DPM 2019 работает нормально и проблем не было, то upgrade DPM 2019->DPM 2022 начинаются проблемы. Похоже это нормально в MS не тестировалось. Было несколько инсталляций апгрейда и всегда были разные проблемы.

        1. Алексей Максимов / Автор записи

          Спасибо.

    2. Сергей /

      Что-то не получается отключить MBS на W2022 и DPM 2022 UR1.

      Добавил:
      [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Data Protection Manager\Configuration\DiskStorage]
      "EnableLegacyStorage"=dword:00000001
      "DisableReFSStorage"=dword:00000001

      В DPM просто не видно диска. Если создать раздел с ntfs и подсунуть, то он его форматирует как и раньше в ReFS.

      1. Алексей Максимов / Автор записи

        Вы не отключите MBS на связке WS2022+DPM2022. Во всех последних версиях DPM Microsoft безальтернативно вынуждает использовать MBS, при этом годами не решая проблемы работы с ReFS. Как я понимаю, минимальная связка, где возможен откат на классический дисковый пул с томами NTFS - это WS2012R2+DPM2016. Именно поэтому, как из-за неизбежности проблем с ReFS, мы в конечном итоге вынуждены были отказаться от использования DPM вообще.

        1. Сергей /

          Спасибо за ответ. Видимо придётся тоже смотреть в другую сторону.
          Если не секрет, что используете вместо DPM?

          1. Алексей Максимов / Автор записи

            Veeam Backup & Replication

      2. Александр /

        Сервер нужно перезагрузить или сервсис msdpm.
        У меня работает связка W2022+DPM2022CU1 на множестве серверов.

        1. Алексей Максимов / Автор записи

          Александр, речь не про то, что не работает связка WS2022+DPM2022, а речь про то, что в любых связках выше WS2012R2+DPM2016 не получится отказаться от использования MBS, и как следствие, рано или поздно придётся столкнуться с проблемами сосуществования DPM с ReFS.

  2. Alexander Klimenok /

    Вы не внимательно читали мой ответ. Ключи в реестре позволяют выключить MBS. Я не использываю MBS с ReFS.

    1. Сергей /

      Что-то у меня не вышло. Добавил ключи. Перезагрузил сервер. На нужном диске удалил все разделы. Диск в GPT. Ни через графический интерфейс, ни через powershell нет доступного диска, который можно добавить в DPM.

      1. Александр /

        Сервер должен быть пустой. На диске не должно быть никаких разделов. Диск будет динамический. У вас удалены все PG с MBS? Ну не может же нам MS выдать особенную версию DPM?

      2. Алексей К. /

        Добрый день.
        Подтверждаю, ключи помогли запустить DPM 2019 на WS 2019 без MSB.
        Ключи должны быть не DWORD, а REG_SZ.

Добавить комментарий