System Center 2012 R2 Data Protection Manager – решение ошибки ID 31224

В данной статье пойдет речь о том, как решить ошибку ID 31224 и почему она возникает при использовании Microsoft System Center 2012 R2 Data Protection Manager (DPM).

Ошибка ID 31224 в DPM возникает при частом включении (protect) и исключении (unprotect) одного и того же объекта (-ов) из групп защиты в течение определенного времени (несколько дней). Также аналогичная ошибка может возникнуть при перенастройки источника данных (“data source”) из одной группы защиты (“protection group”) в вторую, а потом в третью.

Описание ошибки указано на сайте Microsoft в разделе “Библиотека” (Library):

Error ID: 31224

Create protection group: <protection group name> failed. The ‘Allocate Replica’ task for <data source name> failed.
(ID 31224)

При этом решение сводится к удалению всех точек восстановления,

“ the last two steps until you have removed all recovery points associated with the data source ”

 что заставляет призадуматься о том, куда и как перенести удаляемые данные из DPM.

 

Вот одно из описаний жизненной ситуации, при которой может возникнуть данная ошибка.

  • Имеется база данных SQL 2012. Она защищены (включена в политики резервного копирования) при помощи DPM 2012 R2.
  • Расписание резервного копирования источника данных настроено на синхронизацию (инкрементальное) каждые 15 – 30 мин.
  • Еженедельно или ежемесячно запланированы работы по обслуживании баз данных:
  • • Check database integrity
    • History cleanup
    • Maintenance cleanup
    • Rebuild index
    • Reorganize index
    • Shrink database
    • Update statistics

А как нам известно, НЕЛЬЗЯ одновременно выполнять обслуживание баз данных и синхронизацию резервного копирования, поэтому в DPM есть два решения этого вопроса.

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

image

 

image

DPM_unprotected

Минусом такого решения является то, что все базы данных определенное время не будут синхронизироваться с защищаемого сервера (в нашем случае SQL) на DPM сервера.

Если проводить работы по обслуживанию только ОДНОЙ базы, то такой подход не подойдет. Поэтому переходим ко второму варианту.

2. Исключить (stop protection) источник данных (data source) БЕЗ удаления данных (don’t check “delete replica on disk”)!

image

image

 

При этом если это делать часто, то и возникнет ошибка ID 31224.

Почему это происходит!?

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

Подробнее без технических деталей это происходит так. В ходе первоначальной настройки защиты источника данных в DPM создается два динамических диска в пуле DPM: реплика и точки восстановления. При этом происходит ассоциация (т.е. создаются ссылки на данные диски) в DPM. Их можно просмотреть через консоль DPM и консоль управления дисками.

image

image

image

 

 

При исключении из защиты источника данных DPM все точки восстановления и реплика становится неактивными. При повторном включении источника данных (data source) в политики защиты на DPM создаются еще два новых динамических диска.

Дизайн DPM рассчитан на использование только 2-х расположений источника данных (data source), для простаты будем называть их “предыдущая” – PREVIOUS (сокращенно PRE) и “существующая”- CURRENT (сокращенно CUR). Это сделано для того, чтобы уменьшить фрагментацию данных в дисковом пуле DPM.

При восстановлении будут использоваться оба расположения данных PRE и CUR.

При исключении из группы защиты объекта 2-ой (3-ий или N-ый) раз автоматически должны будут создаваться новые динамические диски “CUR”, а старые удаляться PRE, но этого не происходит! Объяснить это можно тем, что данные из расположения PRE нам нужны и перед удалением хотелось бы их сохранить! Поэтому возникает ошибка, которая дает нам свободу действий, либо ставит в тупик :) !!!

Решением служит использование скрипта, который найдет и удалит только все старые точки восстановления (т.е. PRE) для выбранного объекта (data source). Сравниваться будет дата создания PRE и CUR дисков.

#begin script

 
$ErrorActionPreference='SilentlyContinue'
 
$dss = @(Get-ProtectionGroup (&hostname) | foreach {Get-Datasource $_}) 
 
$dss += Get-Datasource -Inactive
 
for ($i=0; $i -lt $dss.Count; $i++) {Write-Host "[$i] $($dss[$i].name) on $($dss[$i].productionservername)"} 
 
$ds = $dss[(Read-Host "Select index " )] 
 
$DPMInstallPath= (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft Data Protection Manager\setup').InstallPath
 
$paths = @(Get-ChildItem ($DPMInstallPath + "Volumes\Replica") -Recurse -Filter "*$($ds.id.guid)*" | ? {$_.PsIscontainer}) 
 
if ($paths.Count -lt 2) {Write-Host "No multiple replicas found, aborting...";exit 0} 
 
$cutoff = ($paths | sort creationtime -Descending)[0].creationtime 

 Write-Host "Creation time of the previous data source that will be deleted. Please save data before REMOVAL !!!" -BackgroundColor Red -ForegroundColor Yellow
 
 $cutoff
 
$rp = @(Get-RecoveryPoint -Datasource $ds | ? {$_.representedpointintime -lt $cutoff}) 
 
$resp = @(Read-Host "Confirm deleting [$($rp.count)] recovery points from `"$($ds.name) _on_ $($ds.productionservername)`" y/N") 
 
if ($resp[0] -ne "y") {write-host "Aborting..."; exit 0} 
 
$rp | foreach {Remove-RecoveryPoint $_ -ForceDeletion}


 
#end script

Ссылка на скачивание скрипта: DPM 2012 R2: Delete Previous Replica (solution Error ID: 31224)

 

Полезные ссылки

Protect, Unprotect, Protect, Unprotect – Understanding how DPM 2010 retention works

Error ID: 31224 Create protection group: <protection group name> failed. The ‘Allocate Replica’ task for <data source name> failed.

Backing up SQL with DPM

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

  1. Алексей Максимов /

    System Center 2012 R2 Data Protection Manager

    1. Евгений Лейтан / Автор записи

      Поправил!

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