So upgrading is very simple, there are many different post on how to upgrade , and its mostly point and click, however there are some things you should do to "make it work", or maybe it was just me.
also depending on how large your infrastructure is, now backups can run until the whole process is done, that means you need your dpm server on 2012, and client agents on on 2012 (2003 servers may require a reboot)
1st backup your 2010 database
run your upgrade
once completed
reboot then BACK UP your 2012 DATABASE NOW! this will save you frustration later down the road, just put it on disk somewhere.
FYI, if your using the SQL that came with DPM, it does not include SP1 (yeah that's right), update this later.
everything will be out of sync begin sync them now.
if you remember setting the tape write period ratio along time ago, guess what, it dosen't exist any more in powershell
Set-DPMGlobalProperty –DPMServerName -TapeWritePeriodRatio
you now get to set it on every single protection group (grouped) you have "yeah"! :-P
now go to management > libraies , click Optimize usage.
create a group with the settings you want.
add the servers you want to have those settings...
create more groups as needed..yada yada yadda.
another "feature" is that when dpm 2012 is installed, it changes our long term retention times all to one month and makes it the default.
So, if your tapes went off site every week, now they only get written to once a month. so you will need to go through LT recover goal and change these back.
Ok at this point every thing looked good for me. however it was all down hill from this point..
Oh do a back up now...
so your backup jobs will appear to run and DPM will not complain about it, this is how i knew that there was an issue was when DPM created a big ass error.
well the errors are in the event logs, so if you don't monitor those every day (as if you had other work to do), you miss a few things:
this error is usually followed by:
This awesome error comes up when a recovery point is created, or synced. To find WTF this actually is, you have to dig into sql and find that job and figure out what it is running. im my case it was running
"C:\Program Files\Microsoft System Center 2012\DPM\DPM\bin\TriggerJob.exe 1406e2b4-abb0-47f3-955b-9f5bb69b07a4 04102f31-b575-406d-9f04-bb9e73ee27a1 DPMSERVER.LOCAL.DOMAIN"
so basically it doesn't tell you shit.
so now you need to look here
C:\Program Files\Microsoft System Center 2012\DPM\DPM\Temp\MSDPMCurr.errlog
this will tell you what the error is. here is what mine was.
1690 1788 04/25 16:30:00.901
15 CommandHelper.cs(797)
WARNING The scheduleID 30a117f3-4b94-4eb1-98ed-8cba0569715e is not associated with the job definition 5e76a2ab-4957-4428-a994-d55634f6aeca.
1690 1788 04/25 16:30:00.901
09 serviceutils.cpp(537)
WARNING Caught Dls exception: Microsoft.Internal.EnterpriseStorage.Dls.Utils.ScheduleNotFoundException: The scheduleID: 30a117f3-4b94-4eb1-98ed-8cba0569715e is not associated with the job definition: 5e76a2ab-4957-4428-a994-d55634f6aeca
WTF does that mean? well apparently the DPM team on technech doesnt know either.
to shorten this up, what i had to do was a backup of the database, uninstall of DPM 2012, uninstall of SQL,
re-install DPM 2012
restore the database using the DPMSYNC tool
so after re-installing DPM open the DPM management shell as and admin
DPMSync –RestoreDB –DBLoc location of folder
DPMSync takes the DPM service offline and attaches the backed up database to SQL
after that run
DpmSync -sync
then reboot the server.
when it comes back up, re-scan your library, re-sync your restore points, you should be good to go.
another issues is an issue with reports after a restore.
Open SQL management studio (run as admin)
connect to the DPM 2012 server
expand Security> Logins
double click on SERVERNAME
\DPMDBReaders$SERVERNAME
make sure user mappings have DPMDB checked , and has DB_datareader,MSDPMReaderRole, and public
Im still waiting to see if the tapes work will let you know soon.
Update:4/30/2012 - everything appears to be good to go.
I was origonally having issues with tapes not expiring in the reports, MS has had several reports on this and put out a script in the mean time.
http://social.technet.microsoft.com/Forums/en-US/dpmtapebackuprecovery/thread/ff20c278-1e8e-40ff-97d4-91ee0bb5ade6
Here is the script name it duetape.ps1 and place in "C:\Program Files\Microsoft System Center 2012\DPM\DPM\bin":
$version = 1.6
foreach ($switch in $args)
{
$switches = $Switches + $switch.toupper() + " "
}
if ($switches -match'label') { $barcode = 'label' } else { $barcode = 'barcode'}
if ($switches -like '*??/??/????*') { [datetime] $date = $switches.substring($switches.IndexOf("/")-2,10) } else { [datetime] $date = '12/30/9999' }
if ($switches -match 'T' -and $date -eq '12/30/9999' ) { $date = (get-date).AddDays($switches.substring($switches.indexof("T") + 1,3))}
if ($switches -match 'verbose') { $verbose = 1 }
if ($switches -match '\?') { $help = 1 }
if ($switches -match 'expired') { $expired = 1 }
$date = $date.AddDays(1)
$confirmpreference = "None"
cls
write-host "due-tape Version $version`nType ? for help" -f white
write-host "`nCommand: " $myinvocation.line -f yellow
if ($help)
{
write-host 'usage: due-tape ' -f white
write-host 'switches:'
write-host ' LABEL - List ALL tapes and when they will get expired. Output will list tape labels.' -f yellow
write-host ' VERBOSE - Includes all recovery points in the tape' -f yellow
write-host ' Tnnn - Tapes that will be expired nn days from now. Cannot be used with mm/dd/yy switch' -f yellow
write-host " mm/dd/yyyy - Tapes that will expired before the this date" -f yellow
write-host " Expired - Include Tapes that are already expired" -f yellow
write-host "`nExamples:`n"
write-host "due-tape label" -f white
write-host " Return tapes with their label values. If ommited, it will return barcode values`n" -f cyan
write-host "due-tape verbose" -f white
write-host " Include all recovery points available in the tape`n" -f cyan
write-host "due-tape 05/02/12" -f white
write-host " Lists all tapes that are set to expire before May, the 2nd of 2012`n" -f cyan
write-host "due-tape T015" -f white
write-host " Lists all tapes that are set to expire within the next 15 days`n" -f cyan
write-host "due-tape Expired" -f white
write-host " Include all tapes expired before current date" -f cyan
exit
}
write-host "`nList tapes that will be expired before $date`n" -f cyan
$dpmserver = connect-dpmserver (&hostname)
$pg = @(get-protectiongroup (&hostname) | where { $_.protectionmethod -like "*Long-term using tape*"})
$filename = "duetape_" +(get-date -uFormat "%m-%d-%Y_%H-%m") + ".txt"
"Command: " + $myinvocation.line | out-file $filename -encoding ASCII
foreach ($pg1 in $pg)
{
$count = 0
$rp = @()
write-host "Protection Group" $pg1.friendlyname "has tape protection" -foreground white
$ds = @(get-datasource $pg1)
foreach ($ds1 in $ds)
{
if ((get-recoverypoint $ds1 | where { $_.datalocation -eq "Media"}) -ne $null)
{
$rp = $rp + (get-recoverypoint $ds1 | where { $_.datalocation -eq "Media"})
}
}
$tp = @(get-tape -protectiongroup $pg1)
foreach ($tp1 in $tp)
{
if ($tp1.Isoffsiteready -eq $true)
{
if ($verbose) { write-host "`n Recovery Points present on tape with" $barcode $tp1.$barcode }
foreach ($rp1 in $rp)
{
if ($tp1.id -eq $rp1.RecoverySourceLocations[0].mediamaplist[$rp1.RecoverySourceLocations[0].mediamaplist.count-1].mediaid)
{
if ($verbose) { write-host " " $rp1.RecoverySourceLocations[0].creationdatetime " - " $rp1.RecoverySourceLocations[0].expirydate " - " $tp1.$barcode "-" $rp1.recoverysourcelocations[0].generation -foreground red }
if ($expire -lt $rp1.RecoverySourceLocations[0].expirydate)
{
$expire = ($rp1.recoverysourcelocations[0].expirydate)
}
}
}
if ($tp1.location.isoffline)
{
if ($expire -lt $date -and $expire -gt (get-date))
{
write-host " Offsite Tape with" $barcode $tp1.$barcode "is due back to Library on" $expire -foreground yellow
"Offsite Tape with " + $barcode + " " + $tp1.$barcode + " is due back to Library on " + $expire | out-file $filename -encoding ASCII -append
$count++
}
}
else
{
if ($expire -lt $date -and $expire -gt $currentDate)
{
write-host " Tape in" $tp1.location.name "-" $tp1.location.id "expires on" $expire -foreground green
"Tape in " + $tp1.location.name + "-" + $tp1.location.id +" expires on " + $expire | out-file $filename -encoding ASCII -append
$count++
}
}
}
if ($expired)
{
$notexpired = 0
foreach ($rp1 in $rp)
{
if ($tp1.id -eq $rp1.RecoverySourceLocations[0].mediamaplist[$rp1.RecoverySourceLocations[0].mediamaplist.count-1].mediaid)
{
if ($verbose) { write-host " " $rp1.RecoverySourceLocations[0].creationdatetime " - " $rp1.RecoverySourceLocations[0].expirydate " - " $tp1.$barcode "-" $rp1.recoverysourcelocations[0].generation -foreground red }
$expire1 = $rp1.RecoverySourceLocations[0].expirydate
if ($expire1 -gt $expire -and $expire1 -lt (get-date)) { $expire = $expire1 }
if (!$expire)
{
$notexpired = 1
Break
}
}
}
if ($tp1.location.isoffline -eq $True -and $notexpired -eq 0)
{
write-host " Offsite Tape with" $barcode $tp1.$barcode "expired on " $expire -foreground red
"Offsite Tape with " + $barcode + " " + $tp1.$barcode + " expired on " + $expire | out-file $filename -encoding ASCII -append
$count++
}
if ($tp1.location.isoffline -eq $False -and $notexpired -eq 0)
{
write-host " Tape in" $tp1.location.name "-" $tp1.location.id "expired on" $expire -foreground red
"Tape in " + $tp1.location.name + "-" + $tp1.location.id +" expired on " + $expire | out-file $filename -encoding ASCII -append
$count++
}
}
}
if ($count -eq 0) { Write-host "`n No tapes will be expired before the supplied date" -f red }
}
write-host "`nFile $filename created`n"
Hi, thanks a lot for posting your experinces :-)
ReplyDeleteI am wondering. What database backup did you restore after uninstalling DPM 2012 and re-installing it again. The one done after the 2012 upgrade or the one just before (still DPM 2010).
I assume you have used "DPMBackup.exe -db" for doing the backups.
Reards Christian
I used the database from the 2012 install.
ReplyDelete