SQL Server High Availability Options

By:   |   Comments (4)   |   Related: > High Availability


Problem

I need to implement a high availability solution for one of my SQL Server databases, but I'm not sure of which option to implement to satisfy my company's needs.  Check out this tip to learn about the five native SQL Server High Availability options.

Solution

Finding the right high availability option can be tricky.  The decision really depends on these items:

  • Needs
  • Budget
  • Scope
  • SQL Server version
  • Level of automation
  • Team level support
  • etc.

At a high level, there are five main high availability options including a new feature set to be release with SQL Server 2012:

  • Replication
  • Mirroring
  • Log Shipping
  • Clustering
  • AlwaysON

SQL Server Replication Overview

At a high level, replication involves a publisher and subscriber, where the publisher is the primary server and the subscriber is the target server. Replication's main purpose is to copy and distribute data from one database to another. There are four types of replication that we will outline:

  • Snapshot replication
  • Transactional replication
  • Merge replication
  • Peer to Peer replication

Snapshot: Snapshot replication occurs when a snapshot is taken of the entire database and that snapshot is copied over to the subscriber. This is best used for data that has minimal changes and is used as an initial data set in some circumstances to start subsequent replication processes.

Transactional: Transactional replication begins with a snapshot of the primary database that is applied to the subscriber. Once the snapshot is in place all transactions that occur on the publisher will be propagated to the subscriber. This option provides the lowest latency.

Merge: Merge replication begins with a snapshot of the primary database that is applied to the subscriber. Changes made at the publisher and subscriber are tracked while offline. Once the publisher and subscriber are back online simultaneously, the subscriber synchronizes with the publisher and vice versa. This option could be best for employees with laptops that leave the office and need to sync their data when they are back in the office.

Peer to Peer: Peer to Peer replication can help scale out an application.  This is because as transactions occur they are executed on all of the nodes involved in replication in order to keep the data in sync in near real time.

Pros and Cons for SQL Server Replication
Pros Cons
Can replicate to multiple servers Manual failover
Can access all databases being replicated Snapshot can be time consuming if you have a VLDB
Replication can occur in both directions Data can get out of sync and will need to re-sync

Related tips:

SQL Server Database Mirroring Overview

Database Mirroring involves a principal server that includes the principal database and a mirror server that includes the mirrored database. The mirror database is restored from the principal with no recovery leaving the database inaccessible to the end users. Once mirroring is enabled, all new transactions from the principal will be copied to the mirror. The use of a witness server is also an option when using the high safety with automatic failover option. The witness server will enable the mirror server to act as a hot standby server. Failover with this option usually only takes seconds to complete. If the principal server was to go down the mirror server would automatically become the principal.

Pros and Cons for Mirroring
Pros Cons
Automatic failover (with witness server) Limited to two servers
Fairly easy to setup Mirrored database is set to restore mode (Can't access)
Fast failover Rumored to be replaced by AlwaysOn in SQL Server 2012

Related tips:

SQL Server Log Shipping Overview

Log shipping involves one primary server, one monitor server (optional), and can involve multiple secondary servers. The secondary database(s) is restored from the primary database with no recovery leaving the database inaccessible to end users. The process of log shipping begins with the primary server taking a transaction log backup and moving the transaction log to a backup share on the secondary server by using the SQL Server Agent and job schedules at a set time interval. The secondary server will then restore the transaction log using the SQL Server Agent and job schedules at a set time interval. While it's nice that log shipping supports multiple secondary servers, it's probably the least used for HA because before the failover can occur, the secondary database must be brought fully up to date by manually applying unrestored log backups.

Pros and Cons for Log Shipping
Pros Cons
Can log ship to multiple servers Failover is only as good as your last log backup
Secondary database will be read only for reporting Manual failover
Does not require SQL Server Enterprise  

Related tips:

SQL Server Clustering Overview

Clustering involves at least two servers and is more of a server level high availability option compared to a database level option. Clustering will allow one physical server to take over the responsibilities of another physical server that has failed. This is crucial in environments that need close to 100% uptime. When a server's resources fail, the other server will automatically pick up where the failed server left off causing little or no downtime. The two types of clustering we will discuss are Active/Active and Active/Passive.

Active/Active: When running in Active/Active mode, SQL Server is actually running on both servers.  If one of the SQL Server's fail then the other SQL Server will failover meaning that two instances will be running on one server which could potentially cause performance issues if not sized appropriately.

Active/Passive: When running in Active/Passive mode, SQL Server runs on one server while the other server waits in case of a failure. This is the most popular choice because it doesn't affect performance; however, you will need a server just sitting there with nothing running on it which could be perceived as expensive.

Pros and Cons for Clustering
Pros Cons
Can cluster multiple servers Complex setup
Automatic failover Risk of purchasing hardware that never gets used
Server level failover compared to DB level Not necessarily data protection

Related tips:

SQL Server AlwaysON Overview

AlwaysON is a new feature shipping with SQL Server 2012 and is an alternative to database mirroring. AlwaysON uses groups called Availability Groups, which are groups that contain selected databases that will fail over together if a failure should occur. Since AlwaysOn is such a new feature there is not a lot of production environment usage yet. I have installed and configured this option on a few test servers, however, and think it's by the far the coolest HA option to date.

Next Steps


sql server categories

sql server webinars

subscribe to mssqltips

sql server tutorials

sql server white papers

next tip



About the author
MSSQLTips author Brady Upton Brady Upton is a Database Administrator and SharePoint superstar in Nashville, TN.

This author pledges the content of this article is based on professional experience and not AI generated.

View all my tips



Comments For This Article




Monday, September 19, 2016 - 5:04:00 AM - Binu Back To Top (43352)

 

 I have a requirement of Active/Active clustering to be implemented using SQL Server 2012 Standard Edition in shared storage SAN. How the data share or synchronization between the two instances on the the disks of nodes in shared storage is going to achieve on the same.

 


Monday, February 9, 2015 - 3:29:03 AM - Kasen Back To Top (36184)

Hi Brady, thanks for your wonderful article. This is just the one that I expected for a long time about the comparison of SQL Server HA options.

I give this article five stars !




Thursday, October 20, 2011 - 3:59:00 PM - Brady Back To Top (14884)

Correct, Jason... and very good choice of using Clustering for Sharepoint. Mirroring would take a lot longer to setup if you are going against 80 databases. Also, AlwaysOn (when available) will be great for Sharepoint servers because you can create one Availability Group and add all databases into them all at once. Good luck!


Thursday, October 20, 2011 - 3:31:21 PM - Jason Back To Top (14883)

Nice article.  I would add that Mirroring, Replication, and Log Shipping all are set up at the database level.  Clustering is set up a the instance level.

When it came to decision time for me, it was a Sharepoint database server that we wanted HA.  The consultant team that was installing Sharepoint was really pushing for Mirroring.  I insisted that we were going the HA Cluster route...  why?  because I knew that we were going to end up with 80+ databases for our Sharepoint system with MySites, sharded sites into seperate databases, search, etc, and I did not want to maintain mirroring on that number of databases.

 

 















get free sql tips
agree to terms