We have a situation where we are moving to a new hosting facility and are attempting to configure our new database environment. However, none of us are formal DBA's so a lot of what we are doing is guessing and reading articles while attempting to make an informed decision.
Firstly, we are currently a small company who takes in several hundred thousand records (about 1/2 of them have image data) in a month. We are growing quickly, and after a severe failure (a SAN array went down completely and we lost everything over a 12 hour period), we are moving to a new hosting facility with a better disaster recovery.
The new hosting facility will have our database on a 50 disk SAN. Every minute, a snapshot is taken. Should the SAN fail, the snapshot is loaded to another SAN, and the server is automatically brought up on the new SAN. Downtime is a few minutes.
In addition to this, we want a redundant database setup. We discussed having a Sql Server cluster using DFS on 2 separate SANs, but that violates PCI Compliance, which we must have. Therefore, it is my opinion that a Cluster buys us no more redundancy than the hosting company's built in snapshot system in the event of a SAN failure.
The other option we are discussing is using mirroring. However, the information we have read leads us to believe that mirroring with a witness will affect performance too greatly. One option presented was to use "Safety Off" mirroring until we want to perform maintenance, then fire up the witness, take one server down at a time and perform the maintenance. Then, when complete, power down the witness. This seems the best of both worlds, but also a headache.
So now the big question - With the snapshot system of our hosting company taking our downtime to mere minutes, what configuration is recommended to give use high availability as well as the best performance?