Written By: Matan Yungman 24/09/2015
AlwaysOn Availability Groups is a great technology that centralizes the management of High Availability, Disaster Recovery and Scale-Out. However, in many cases, the good old Database Mirroring is just good enough (and in some cases, better):
Database Mirroring can work in Standard Edition
Database Mirroring is supported in both Enterprise Edition (asynchronous + synchronous modes) and Standard Edition (synchronous mode). Up till SQL Server 2016, Availability Groups is supported only in Enterprise Edition. Starting SQL Server 2016, Availability Groups is supported in Standard Edition, but with a limited functionality – one secondary, one database per Availability Group, and that database is not readable, unless you take a snapshot of it.
Database Mirroring can work without a domain
Because AlwaysOn Availability Groups works on top of Windows Cluster, it requires working in a domain. Database Mirroring, however, allows working in domain-less environments using certificates, in addition to the option of working in a domain.
It was pointed out to me that starting Windows Server 2016 and SQL Server 2016, non-domain Availability Groups are supported. Mirroring is still easier ad supports more platforms, but definitely a good addition to the product!
Database Mirroring requires less IP addresses
With Mirroring, you need an IP address for the Principal, for the mirror, optionally for the Witness, and you’re good to go. With Availability Groups, you need an IP address for the each one of your replicas, for the cluster, and optionally for the cluster witnesses and Availability Group Listeners.
You don’t need to configure DNS records for proper reconnect after a failover
When working in a multi-subnet environment, it’s tricky to get Availability Groups to work smoothly after a failover. You need to understand what the RegisterAllProvidersIP, MultiSubnetFailover and HostRecordTTL options mean, and how to change them in the application and the cluster configuration (more in-depth information about those here).
With Database Mirroring, you need to know how to configure a failover partner in the connection string, and in most cases you’re done.