Как известно, продукты линейки 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, не будет лишним изучить опыт использования новых версий ПО, которым делятся пользователи в Интернете. Удалось найти обсуждения, как минимум, двух проблем, получивших некоторый резонанс:
- Проблемы с работой 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 и они подтвердили то, что проблема действительно ещё актуальна. - Процессы 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. Это, как минимум:
- О нововведениях версии: "What's new in System Center DPM"
- Системные требования:
- "Preparing your environment for System Center Data Protection Manager"
- "Get DPM installed - Setup prerequisites" - Информация о порядке обновления: "Upgrade your DPM installation"
Задача 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
Таблицу версий 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
В нашем примере у нас должна получиться команда следующего вида:
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"
Созданный файл резервной копии БД должен появится в указанном нами каталоге.
Зафиксируем информацию о текущем порядке сортировки (Collation), используемом в экземпляре SQL Server и БД. В нашем случае порядок сортировки и у экземпляра SQL Server и у самой БД DPM - SQL_Latin1_General_CP1_CI_AS.
Эта информация может нам пригодится в случае, если в ходе обновления что-то пойдёт не так и нам придётся переустанавливать SQL Server с последующим восстановлением БД DPM.
Шаг 2. Изменение режима выполнения служб SQL Server
Ранее описывалась проблема, которая может возникнуть с инсталлятором System Center 2012 R2 DPM и то, как для их обхода этой проблемы изменить режим запуска служб SQL Server (смотрите раздел "Меняем режим выполнения служб SQL Server" этой статьи). Чтобы избежать аналогичных проблем при обновлении в инсталляторе System Center 2016 DPM, предполагается, что у нас уже настроен запуск всех служб SQL Server не от имени локальной системы, а от имени сервисных учётных записей.
В нашем случае в качестве сервисной учётной записи для запуска служб SQL Server вместо классической пользовательской учётной записи используется учётная запись gMSA.
Я не исключаю того, что в инсталляторе 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
На данном моменте (перед открытием окна программы установки DPM) будет выполнена проверка наличия в системе компонент Visual C++ 2012 x64 и, в случае их отсутствия, может произойти их автоматическая установка с последующей форсированной перезагрузкой системы без каких либо предупреждений. Именно поэтому в самом начале я предупредил о том, что серверу потребуется окно обслуживания на время проведения обновлений.
Если сервер ушёл в перезагрузку, то после загрузки системы повторно запускаем инсталлятор DPM 2016 и доходим до шага с лицензионным соглашением, соглашаемся с этим соглашением и переходим к шагу настройки подключения к БД. Убеждаемся в том, что имя экземпляра SQL Server с текущей базой DPM 2012 R2 указано верно и жмём Check and Install.
После этого будет выполнена проверка наличия требуемых для установки программных компонент и предпринята попытка подключения к указанному экземпляру БД.
Если с обнаружением экземпляра SQL Server возникли проблемы, то изучаем лог-файл программы установки:
C:\Program Files\Microsoft System Center 2016\DPM\DPMLogs\DpmSetup.log
В нашем случае, инсталлятор сообщил о том, что в систему была доустановлена недостающая компонента и требуется перезагрузка сервера.
Жмём кнопку отмены, перезагружаем сервер, снова запускаем из временного каталога уже ранее распакованный инсталлятор DPM 2016 и повторно нажимаем кнопку Check and Install.
Инсталлятор обнаружит существующую БД текущей версии DPM и предупредит нас о том, что будет выполнено обновление этой БД, перед которым нам рекомендуется сделать резервную копию этой БД.
Резервная копия БД у нас уже создана, поэтому переходим к следующему шагу, где нам будет предложено ввести имеющийся у нас ключ продукта линейки System Center 2016
Изменение каталога установки в нашем случае будет недоступно, так как обнаружив предыдущую версию DPM, инсталлятор перешёл в режим обновления. То есть, при обновлении все исполняемые файлы сервера DPM 2016 фактически будут помещены в текущий каталог DPM 2012 R2:
C:\Program Files\Microsoft System Center 2012 R2\DPM
Далее на вопрос об использовании Windows Update отвечаем отказом, чтобы сделать дальнейший процесс установки более предсказуемым.
Жмём кнопку Upgrade и дожидаемся успешного завершения процедуры обновления.
Закладка Warning в нашем случае содержит только одно информационное предупреждение о том, что теперь было бы неплохо обновить агентов DPM, связанных с данным сервером.
Если на вкладке Status получено сообщение о том, что требуется перезагрузка системы, то прежде, чем приступать к последующему обновлению, лучше выполнить перезагрузку.
Далее мы можем поднять до актуального состояния версию DPM 2016 путём установки последнего кумулятивного обновления Update Rollup 10 for System Center 2016 Data Protection Manager. Это обновление может быть установлено либо через локальные службы WSUS, либо загружено из онлайн каталога Windows Update: KB4578608.
В нашем случае установка UR10 была успешно проведена с сервера WSUS.
После установки обновления снова перезагружаем сервер и убеждаемся в штатной работе консоли System Center 2016 DPM UR10.
Шаг 4. Создание резервной копии БД System Center 2016 DPM UR10
Теперь, фактически имя уже обновлённую версию DPM, мы сделаем резервную копию БД, которая в дальнейшем может пригодиться для восстановления работоспособности DPM после обновления SQL Server на новую версию (опять же, на случай, если такое обновление будет безуспешным).
Перед тем, как создавать резервную копию БД, обратите внимание на то, что в ходе обновления DPM до уровня System Center 2016 произошло изменение имени БД.
Сделать резервную копию БД по аналогии с Шагом 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'"
Резервная копия БД создана и теперь можно переходить к процедуре поднятия версии SQL Server.
Шаг 5. Остановка и отключение служб System Center 2016 DPM
Перед запуском процесса обновления SQL Server, нам желательно закрыть все открытые консоли DPM Administrator Console и остановить службы службы сервера DPM, чтобы они не обращались к ресурсам SQL Server. Сделать это можно, например, с помощью PowerShell:
Get-Service -DisplayName "DPM*" | Stop-Service
Остановки служб будет недостаточно, так как некоторые службы настроены на автоматический перезапуск после остановки. Поэтому нам потребуется перевести тип запуска этих служб в выключенное состояние на время процедуры обновления 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.
В нашем случае используется 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".
В открывшемся мастере обновления SQL Server убедимся в том, что указан лицензионный ключ для SQL Server 2016 Standard (этот ключ вшит в дистрибутив SQL Server, поставляемый в комплекте с System Center 2016)
На следующих шагах мастера нам нужно будет принять лицензионное соглашение (здесь мы удостоверимся в том, что устанавливается именно редакция SQL Server 2016 Standard) и определиться с выбором использования Windows Update в ходе установки. В нашем случае у сервера нет полноценного прямого выхода в Интернет, поэтому мы отключаем опцию проверки обновлений.
Не смотря на выбор опции обновления, инсталлятором может быть предложено сразу установить критический патч KB3164398.
Далее инсталлятор SQL Server выполнит предварительные установки Setup files и предложит выбор экземпляра SQL Server, который мы собираемся обновлять. В нашем случае на сервере всего один локальный экземпляр "MSDPM2012", в котором выполняется база данных нашего уже обновлённого сервера DPM 2016. Имя экземпляра SQL Server на ранее описанном этапе обновления DPM не обновлялось и унаследовано от DPM 2012 R2, поэтому просто жмём "Next".
Выбор устанавливаемых компонент в режиме обновления нам будет недоступен, жмём "Next".
На следующем шаге мастера не вносим никаких изменений в конфигурацию экземпляра (не меняем имя экземпляра, чтобы не сломать имеющиеся ссылки на этот экземпляр в DPM) и снова жмём "Next".
На следующем шаге просматриваем сводную информацию о предстоящем обновлении экземпляра SQL Server и нажимаем кнопку "Upgrade".
В ходе процесса обновления мы словили ошибку вида "The following error has occurred: Attempted to perform an unauthorized operation":
Нажатия кнопки "Retry" приводили к повторному появлению этого окна, в итоге была нажата кнопка "Cancel" и, как ни странно, процесс обновления не прервался и пошёл дальше.
Не смотря на появление этой странной ошибки, на конечный результат обновления это не повлияло и всё завершилось без явных проблем.
Анализ сводного лога по ссылке внизу диалоговой формы не показал наличия каких-либо проблем в ходе обновления, однако "неприятный осадок" всё-таки остался.
Дополнительное изучение детального лога 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)". При этом ручной запуск службы проходил успешно. Поэтому для данной службы был изменён тип запуска на автоматический (отложенный) и включён автоматический перезапуск после первой остановки.
Однако позднее было замечено, что не смотря на успешный автоматический или даже ручной запуск, менее, чем через минуту служба всё равно останавливалась с регистрацией ошибки:
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.
Здесь нужно иметь ввиду, что установка обновлений 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".
В небольшой открывшейся форме выбора типа изменений инсталляции SQL
Server выберем пункт "Remove".
В окне мастера удаления SQL Server 2012 дойдём до шага выбора удаляемых компонент и отметим все компоненты, относящиеся к старой версии.
На следующем экране мастера кнопкой "Remove" подтвердим удаление и дождёмся окончания процесса.
Не смотря на то, что после удаления компонент старой версии SQL Server перезагрузка может не потребоваться, можно всё же выполнить дополнительную перезагрузку для получения уверенности в том, что при запуске системы службы SQL Server 2016 запускаются в автоматическом режиме штатно.
Теперь мы можем вызвать из стартового меню утилиту "SQL Server 2016 Installation Center (64-bit)" и перейти на вкладку "Tools". Здесь с помощью пункта "Installed SQL Server features discovery report" сформируем отчёт о всех зарегистрированных в системе компонентах SQL Server.
Убедимся в том, что в отчёте отсутствуют компоненты старой версии SQL Server.
Как видно в нашем примере, удалённые компоненты старой версии 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"
Службы должны успешно запуститься без ошибок.
Теперь можно попробовать открыть графическую консоль 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)
Связано это с тем, что в обновлённом наборе файлов 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/
…то отчёт должен успешно сформироваться:
Конечно, такие "костыли" с отчётами в консоли 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".
При этом необходимо помнить о том что, в некоторых случаях может потребоваться перезагрузка серверов, на которых будут обновляться агенты, поэтому процесс обновления агентов лучше запланировать на нерабочее время. В нашем случае все агенты DPM 2012 R2 были обновлены на новую версию DPM 2016 без сообщения о необходимости перезагрузки.
Также стоит помнить про то, что при попытке обновить агента DPM, который является участником кластера, автоматически будет инициировано обновление всех остальных агентов кластера. С такими агентами тоже замечена одна особенность – какой-то один из агентов-участников кластера может начать обновляться, а другой может перейти в состояние ошибки. В такой ситуации лучше не делать резких движений и просто дождаться, когда первый агент обновится и перейдёт в статус "OK", а уже после этого повторить попытку обновления другого агента-участника кластера.
В зависимости от версии ОС и серверных ролей защищаемого сервера с агентом 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". Как я понял, этот пакет можно удалить вручную и на работе агента новой версии это никак не сказывается.
Задача 4. Актуализация группы защиты на серверах DPM
Процедуру актуализации групп защиты сначала выполняем на первичном сервере DPM, а затем делаем тоже самое на вторичном сервере DPM.
После процедур обновления состояние групп защиты может перейти в статус "Replica is inconsistent" и для его исправления достаточно будет запустить стандартную процедуру "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.
После обновления MP в SCOM мы получим возможность централизованного мониторинга состояния всех серверов DPM.
На этом процесс обновления можно считать законченным.
В заключение хочется напомнить про некоторые неочевидные вещи, которые потребуют дополнительного внимания уже после обновления ПО. Например, стоит вспомнить про используемые в инфраструктуре антивирусные решения, где может потребоваться корректировка настроек в связи с появлением на серверах/агентах DPM новых путей к исполняемым файлам. При этом обратите внимание на то, что в описанном нами сценарии обновления каталог исполняемых файлов сервера DPM 2016 остался тем же, что был до обновления в DPM 2012 R2.
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.
Вы по своему опыту использования на чём остановились?
Советовать я не могу на какой версии остановится, очень зависит от вашей инфраструктуры.
Например, 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 не тестировалось. Было несколько инсталляций апгрейда и всегда были разные проблемы.
Спасибо.
Что-то не получается отключить 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.
Вы не отключите MBS на связке WS2022+DPM2022. Во всех последних версиях DPM Microsoft безальтернативно вынуждает использовать MBS, при этом годами не решая проблемы работы с ReFS. Как я понимаю, минимальная связка, где возможен откат на классический дисковый пул с томами NTFS - это WS2012R2+DPM2016. Именно поэтому, как из-за неизбежности проблем с ReFS, мы в конечном итоге вынуждены были отказаться от использования DPM вообще.
Спасибо за ответ. Видимо придётся тоже смотреть в другую сторону.
Если не секрет, что используете вместо DPM?
Veeam Backup & Replication
Сервер нужно перезагрузить или сервсис msdpm.
У меня работает связка W2022+DPM2022CU1 на множестве серверов.
Александр, речь не про то, что не работает связка WS2022+DPM2022, а речь про то, что в любых связках выше WS2012R2+DPM2016 не получится отказаться от использования MBS, и как следствие, рано или поздно придётся столкнуться с проблемами сосуществования DPM с ReFS.
Вы не внимательно читали мой ответ. Ключи в реестре позволяют выключить MBS. Я не использываю MBS с ReFS.
Что-то у меня не вышло. Добавил ключи. Перезагрузил сервер. На нужном диске удалил все разделы. Диск в GPT. Ни через графический интерфейс, ни через powershell нет доступного диска, который можно добавить в DPM.
Сервер должен быть пустой. На диске не должно быть никаких разделов. Диск будет динамический. У вас удалены все PG с MBS? Ну не может же нам MS выдать особенную версию DPM?
Добрый день.
Подтверждаю, ключи помогли запустить DPM 2019 на WS 2019 без MSB.
Ключи должны быть не DWORD, а REG_SZ.