Log Shipping:
Overview: Transactions on principal are queued to disk and then shipped over to mirror based on replication schedule. Logs are applied to mirror database based on a schedule.
SQL Edition: Standard, Enterprise
Admin effort: Setup network share on mirror as drop location for transaction logs, run SQL wizard for setup
Automatic Failover: Not possible unless Witness server is present
Manual Failover: Involves applying uncommitted transaction log files to database
Failure concerns: Medium, as it relies on Windows to present a network share on the mirror. If application
of transaction logs on mirror stop, they will build up
I/O: Higher than mirroring
Mirroring:
Overview: Transactions on principal are committed on principal and sent to mirror. When mirror commits transaction, it tells principal that it is ready for another.
SQL Edition: Enterprise
Automatic failover: Not possible unless Witness server is present
Manual Failover: If connectivity is present, switch mirroring mode to Synchronous. If no connectivity, issue SQL statement to perform a Forced Service restore. Pairs can then be re-synched
Performance: Low when compared to Log Shipping
Personal Lab Work:
Conducted with SQL 2005 Standard and Enterprise.
I found log shipping to be a good idea on paper, but it was complicated to setup and perform a failover in my lab. Mirroring was very elegant and I knew for a fact that the transactions got commited to both pairs.
When it comes time to bring the target up as the primary, I don't want to have to tinker with applying transaction log files. If you need a short RTO, I would lab out mirroring.
You will need to read more about synchronous (transaction is committed to both pairs before marked as complete) vs asynchronous (commit on principal, then sent to target) modes of replication for a mirrored pair. With a LAN, you can run them in synchronous mode, but over a WAN you will have to watch latency when in synchronous mode (be under 10-20ms) otherwise your response time to the application will slow down.
Note that only SQL 2005 Enterprise edition supports asynchronous, which is also called "High-Performance Mode" or turning the SAFETY property "OFF" on the SQL server.
Sorry I don't have any clustering experience.
MSDN Sources
Overview of Database Mirroring
http://msdn.microsoft.com/en-us/library/ms189852%28SQL.90%29.aspx