Jeremy Phillips

Thoughts on technology, management and more

Archive for the ‘Tech’ Category

Real Life Exchange 2010 Disaster Recovery

with 2 comments

Last Thursday night I had the distinct privilege of participating in a real life Exchange 2010 disaster recovery scenario. Roughly 41,000 mailboxes on 22 databases had the DAG ripped out from underneath them accidentally. When I say ‘ripped out from underneath them’ I mean literally that; everything was removed, including all the cluster resources and mailbox servers. As far as AD was concerned these servers didn’t even exist. All we had left was the .edb files, catalog indexes and log files. The solution? Database portability.

Even though this was essentially a test environment, there were a number of live mailboxes that simply had to be recovered and we wanted to recover them all. The steps we took were rather straightforward;

1 | Find some live mailbox servers that had the spare capacity to mount 22 databases. Split the list of databases to be mounted among them.

2 | For each mailbox server, copy over the database and log directories so we had the data to use.

3 | Perform a soft recovery with eseutil /r on each database/log set to commit any uncommitted log files and ensure we could actually mount the data later in the process.

4 | Create the new mailbox databases: new-mailboxdatabase -name <name> -server <server> -EdbFilePath <path to recovery folder, e.g. c:\RecoverDBs\RecoverDB1\<name of original edb>.edb> -LogFilePath <path to logs, e.g. c:\RecoverDBs\RecoverLogs1>

Pro Tip: Use a new name for the database. If the old database was named DAG1-DB001, you might use DAG1-RecoveryDB001.

5 | Set the newly created databases to allow file restore: set-mailboxdatabase <db name> -AllowFileRestore:$true

6 | Copy in the database, logs and catalog data to the correct folders (those specified in step 4)

7 | Mount the databases one at a time: mount-database <DatabaseName>

8 | Once the database is mounted we can now re-home all the users with mail data there: get-mailbox -database <OriginalDatabaseName> | ?{$_.ObjectClass -NotMatch ‘(SystemAttendantMailbox|ExOldDbSystemMailbox)’} | set-mailbox -database <RecoveryDatabaseName>

9 | If you’re running with multiple copies then keep in mind that you’ve only got one live copy of the new database. You can either add a copy of the new database or do what we did and move them to databases on your new DAG that (hopefully) has multiple copies already. If you choose to go the route of moving them to existing healthy databases the command is: get-mailbox -database <RecoveryDatabaseName> | new-moverequest -TargetDatabase <HealthyDatabaseName>

Comments and/or questions are welcome in the comments. I just wrote this from memory so if I missed anything along the way please let me know.

Possibly Related Posts:

Written by Jeremy Phillips

January 16th, 2010 at 8:48 pm

Outlook 2010 Question

without comments

OK, this is driving me insane. I really like the multiple Exchange profile support in Outlook 2010 but how the hell do I change the From: names in the drop down list? I tried changing the name of the account but it always reverts back. Help!

Office2010-HowDoIChange

Possibly Related Posts:

Written by Jeremy Phillips

January 16th, 2010 at 8:48 pm

How to perform a System State Backup on Windows 2008 with Windows Server Backup

without comments

1.) Launch an elevated command prompt. (Right Click on Command Prompt –> Run as Administrator)

2.) Execute the command wbadmin start systemstatebackup -backuptarget:D: while substituting D: for another drive letter if needed.

To my knowledge you can’t backup to a folder unfortunately.

Possibly Related Posts:

Written by Jeremy Phillips

January 16th, 2010 at 8:48 pm

Cell Phones

with 2 comments

I just came across this phone today – a Nokia 8860 – that I purchased back in 1999. If I remember correctly I paid around $450 for it but I’m not 100% positive. While not my first phone – which was a Nokia of some sort on CellularOne – it is the oldest one I still have. What was your first cell phone?

CIMG0099

Possibly Related Posts:

Written by Jeremy Phillips

January 16th, 2010 at 8:48 pm

Netbooks

without comments

I’m looking for a netbook but can’t discern a huge difference between the various models. Here are some of the specs I want;

  • 10.2″ Screen
  • 160GB HDD
  • 2GB RAM (Capable at least, I can upgrade it if needed)

What I want to use it for;

  • Streaming Video – 720p preferably
  • Web Browsing
  • Occasional E-Mail

Any recommendations?

Possibly Related Posts:

Written by Jeremy Phillips

January 16th, 2010 at 8:48 pm

Dreamhost -vs- A Server In My Garage

without comments

The graph of time spent downloading a page from Google Webmaster Tools pretty much speaks for itself. May & June = Dreamhost, July = Server In My Garage Hosted On A Cable Modem.

solongdreamhost

Possibly Related Posts:

Written by Jeremy Phillips

January 16th, 2010 at 8:48 pm

Sprint Has Too Many Plans

without comments

So the Palm Pre is finally available to order online and I am in need of a new phone finally. Navigating through Sprint’s site I find and click Select, thinking it will let me buy the phone.

pre-1

Nope, that would be too easy. Evidently my current plan – Everything Data Share 1500 – is not on the list. Now I get to call Sprint and get them to change my plan to one with the same features at the same price – but with a different name – so I can purchase a new phone. This bites.

Edit: Yep, surely enough the only difference is the plan name. This is the plan I’ll have to change to.

pre-3

Possibly Related Posts:

Written by Jeremy Phillips

January 16th, 2010 at 8:48 pm

VBScript To List WMI providers

without comments

Just in case you need it as well –

strComputer = “.”

Set objWMIService=GetObject(“winmgmts:{impersonationLevel=impersonate}!\\” & _
strComputer & “\root\cimv2″)
Const ForAppending = 8
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
Set objTextFile = objFSO.OpenTextFile _
(“c:\scripts\wmiProviders.txt”, ForAppending, True)
Set colWin32Providers = objWMIService.InstancesOf(“__Win32Provider”)
For Each objWin32Provider In colWin32Providers
objTextFile.WriteLine(objWin32Provider.Name)
Next
objTextFile.Close

Possibly Related Posts:

Written by Jeremy Phillips

January 16th, 2010 at 8:48 pm

500 Internal Server Error

without comments

Currently, all my sites are hosted by Dreamhost. For the most part this has been a pleasant experience but I’ve noticed a number of issues in the last couple weeks and have finally decided to move all my sites back to my own server. I really don’t want to do this as it’s somewhat bothersome having to maintain my own server for a few sites that don’t really do much, but at the same time I’ll at least have a bit more control over what’s happening and if it breaks I’ll have nobody to blame but myself. :)

What made me decide to do this?

  1. Last week I tried to make some DNS changes and noticed that it took hours for my changes to completely replicate. While investigating I noticed some strange happenings in their DNS servers as well; they were shooting back different zone serials when queried. This in and of itself is not abnormal as Dreamhost uses three DNS servers, right? Well, the strange part is that the same DNS server returned different serials upon subsequent queries. An example would be if I queried ns1.dreamhost.com; first it would bring back serial 3, then serial 7, then serial 4 again. They probably have load balanced clusters or something fancy like that. No big deal, issues like this are inherent in highly scaled systems, but enough to encourage me to move DNS somewhere else. I’ve been using rollernet.us off and on for the last couple years and they are once again doing a fantastic job serving DNS for my domains.
  2. Earlier today I tweeted about some difficulties I was having, primarily that this site was encountering the dreaded “500 Internal Server Error”. Now, one thing I will give Dreamhost is that I’ve always had fantastic customer service from them. Evidently one of their managers noticed my tweet and decided to proactively address the issue. They discovered that my WordPress theme (Vigilance) was causing some issues so they turned the default theme back on. They also noted that my site was using a good amount of memory and recommended that I visit this very informative wiki page to figure out why. Very proactive.

One thing I will never deny about Dreamhost is that their support is better than any other shared hosting provider I’ve ever used. While writing this post I just got another e-mail from support stating that they noticed FastCGI was disabled, recommended I enable it and then turned my Vigilance theme back on. Impressive that they will go to those lengths to help me out, especially considering I never contacted support in the first place.

I know this post may seem like a slam against Dreamhost but it’s really not intended that way. For probably 99.9% of their customers they provide quality service at a very reasonable price. They just don’t do everything I desire so I shall happily move on.

Possibly Related Posts:

Written by Jeremy Phillips

January 16th, 2010 at 8:48 pm

New DVD Player

with one comment

Our last DVD player bit the dust a few weeks ago so I’ve been watching for a good price on one online. Luckily, I picked up an almost identical Philips for $19.99 on Woot about a week ago and it showed up today. This of course led to Ryan immediately asking if he could hook it up and the answer was a resounding yes. I acted as the official photographer for the activity.

Possibly Related Posts:

Written by Jeremy Phillips

January 16th, 2010 at 8:48 pm