Today I'll write
with one of the features I like the most and is Always On. There will be two
post of this subject, this first one is an overview of the changes it has gone
through, benefits and the scenarios where you can get it implemented, the
second will detail the steps on how you can get it implemented.
So I'll try to
answer this questions What is Always On? When was it Released? And How can it
be used?
What is Always On?
Always On or Always
On availability groups (Microsoft)
is an integrated high availability (HA) and disaster recovery (DR) solution
that provides redundancy within a datacenter and across datacenters to help
enable fast application failover during planned and unplanned downtime.
Specifically, Always On delivers failover cluster instances, multiple
secondary, active secondary, and connection director capabilities (multi-subnet
and read-only intent).
In English, this
means, Always On provides a highly available and Disaster recovery solution for
you database environment. As mentioned before is the next evolution of database
mirroring. Database mirroring is relatively easy to set up, and it provides an
almost instant failover when it’s used in High Safety mode. However, database mirroring has several
important limitations. First, database
mirroring is limited to a single failover partner. In addition, database mirroring is capable of
failing over only a single database at a time.
Database mirroring must be implemented either synchronously or asynchronously
you have to choose one or the other. Finally, the databases on the mirroring
server are in a state of recovery, so they can’t be directly accessed. To use the data, you must take point-in-time
snapshots of the
databases.
This function was
introduced with SQL Server 2012 and has received a lot of transformations with
the different releases of SQL Server
This are some of the
enhancements:
- Secondary replicas With 2012 you could only have 4, with 2014 it was increased to 8
- You were not allowed to create a replica in Azure, with 2014 that option was introduced
- In 2012 and 2014 it was limited to the Enterprise version, in 2016 SP1 you can use "Basic Availability groups since the standard version"
- In the previous versions you were limited to servers that belong to the same domain, with 2016 you can combine groups form different domains.
- In 2016 Databases with Transparent Data Encryption (TDE) are now supported
- If you were using Grouped Managed Service accounts (gMSA) you were not able to configure the availability groups, it is now supported with 2016
- In 2016 the Direct Seeding got introduced. Direct seeding takes all the initialization steps for you, it does a full backup and synchronizes the database in the background for you.
- In 2014 the read intent was introduced, meaning that all of your read operations will be routed to your replicas so that you have the primary server to run I/U/D (Insert, Update, Delete), In 2016 the engine automatically load balance this across your replicas.
How can it be used?
Always On needs some
components to run:
- Two sets of IPs: You will need one IP for the Windows failover cluster and one for your Listener.
- Windows Failover cluster: You need to configure (create) a windows failover cluster (WSFC) so that you can enable the Always on Functionality in the SQL Server service, why? Because the failover cluster validates if the servers that will be part of the availability groups are running without problems.
- Availability Groups: After you create your cluster and install SQL Server as Stand Alone instances, you will have to configure an availability group and add both SQL Server instances, this is where you Always On starts to takes life.
- Listener: This will be you single point of entry to you Availability group (AOG) it could be either by the domain name or the IP you will be assigning to it in the setup section, this will always route you to your primary server, unless you configure the Read-Intent routing and it will route your read operations to your replicas.
Think of the an
Always On environment as an "Share almost nothing" environment"
why? You are only sharing the failover clustering part, other than that you
will have independent hardware for each of your SQL Servers. Also when you
setup your environment with this type of setup, it reduces the changes (or
steps) that you need to take when doing a planned DR because everything is
already setup (At least the database part) and you only need to worry if the
synchronization was up to date.
Excellent Explain
ReplyDelete