Replace/upgrade mirrored server hardware We are deploying new VMs for a mirrored database that is in high safety mode with automatic failover and also going from SQL Server 2008 to SQL Server 2008R2. 

Most of the documentation I've come across covers a rolling upgrade, but that only covers upgrading the SQL version, not an OS version change let alone changing servers out. 

The steps as I see it are: I have to break the mirror and then recreate with the new secondary server, failover, break it again, and then recreate it with the new primary and witness. 

How have you managed migrating servers and databases to new OS and new version with an existing mirror?
I think I would first outline something like this before testing it while recording time with a stopwatch.


D-X


get the newProd and newMirror ready (OS + SQL Server + User Account, job, ...)
build scripts for every step (back, restore, mirror, ...)

D-3


add a new IP to oldProd
update DNS with new IP and TTL = 300s (Time To Live)

D, H-2 or H-1 (I assume backup and restore both take 30min)


full backup of oldProd
restore newProd and newMirror

D, H (Downtime)


Stop applications and DB access
Backup logs on oldProd
Restore logs on newProd
Remove new IP from oldProd
Add new IP to newProd
Start applications and DB access

D,  H+something


Build new mirror between newProd and newMirror



Another option for 4. (downtime should be lower)


Break mirror with oldMirror
Backup/Restore logs to newProd
Create new mirror between oldProd and newMirror
Manual failover to newProd
Break new mirror
Create new mirror between newProd and newMirror


I may have forgotten a couple things.