The Database Mirroring availability option provides complete protection against data loss and fast recovery through automatic failover. Database mirroring maintains a redundant database by shipping log files to mirror servers when the transactions are committed on the principal server.
Use database mirroring when you need to maintain multiple copies of your data and to create a warm standby of your SQL Server database environment. You should note that SQL Server database mirroring is performed at the database level. Only user databases can be mirrored. This can give you flexibility over SQL Server failover clustering in that you don’t need to include all of your databases in the cluster. You can pick and choose which database(s) to mirror. There is also no single point of failure, as in SQL Server failover clustering, in which the storage can become unavailable or corrupted.
There are three modes in which database mirroring operates:
High Availability mode (High Safety) – A principal server, mirror server, and witness server are required. This mode sets the transaction safety to ‘FULL’ thereby using synchronous I/O between the principal and mirror servers. The principal server will wait for an acknowledgement from the mirror server that the shipped transaction has been applied on the mirror server. In the event of failure at the principal server, the witness server will form a quorum and fail over to the mirror server. You do not lose any data as a result of the transaction safety mode being configured as “FULL”.
High Protection mode – A principal server and mirror server are required. Transaction safety mode is set to ‘FULL’. This uses synchronous I/O between the principal and mirror servers. In the event of a failure of the principal server, you will need to manually fail over to the mirror server as there is no witness server to perform quorum and automate failover.
High Performance mode
– A principal server and a mirror server are required. Transaction safety is set to ‘OFF’ and as a result, asynchronous I/O is used between the principal and mirror servers. In this mode, the principal server does not wait for an acknowledgement from the mirror server that all transactions have been recorded on the mirror server. The client application gets a confirmation that a transaction has been committed as soon as the principal server writes the transaction to the log. In the event of failure or unavailability of the principal server, you will need to manually fail over to the mirror server. There is the possibility of data loss as some transactions might be ‘in flight’ during the failure of the principle server.
Read More about VMWare Solutions: http://www.vmware.com/files/pdf/solutions/MOSS_Availability_Guide_FINAL.pdf