Transcript Document
AlwaysOn Availability Groups 101
Using SQL Server 2012
About Me
Jeff Reinhard
20 years database development experience
@jreiny
[email protected]
Employment Highlights:
Ernst & Young
Internet Security Systems/IBM
AirWatch
WebMD
CheckFree
2 | 7/17/2015 | AlwaysOn Availability Groups 101
Thank You
Microsoft for the facility
For sponsoring tonight’s event:
Pyramid Analytics
3 | 7/17/2015 | AlwaysOn Availability Groups 101
Agenda
What is AlwaysOn
Prerequisites
Setting Up
Monitoring
AlwaysOn and Your Application
Lessons Learned
Q&A
34 slides, so I need to move fast
4 | 7/17/2015 |
AlwaysOn Availability Groups 101
Two Types of AlwaysOn ???
AlwaysOn Failover Cluster Instances
leverages Windows Server Failover Clustering
(WSFC) functionality to provide local high
availability through redundancy at the serverinstance level—a failover cluster instance (FCI).
Previously known as SQL Clusters
Works with SQL Server Standard Edition
AlwaysOn Availability Groups (AG)
This presentation discusses further
Requires SQL Server Enterprise Edition
5 | 7/17/2015 | AlwaysOn Availability Groups 101
What Is AlwaysOn AG?
AlwaysOn is SQL Servers best available technology for
SQL High Availability.
AlwaysOn is a new integrated, flexible, cost-efficient high
availability and disaster recovery solution. It can provide
data and hardware redundancy within and across data
centers, and improves application failover time to increase
the availability of your mission-critical applications.
AlwaysOn provides flexibility in configuration and enables
reuse of existing hardware investments.
The principal goal of a high availability solution is to
minimize or mitigate the impact of downtime.
It is recommended for scenarios where high availability is
required and the application will benefit from readable
copies of the primary databases.
6 | 7/17/2015 | AlwaysOn Availability Groups 101
AlwaysOn Architecture Overview
7 | 7/17/2015 | AlwaysOn Availability Groups 101
Prerequisites – Before you begin
Prerequisites, Restrictions, and Recommendations for
AlwaysOn Availability Groups
http://msdn.microsoft.com/en-us/library/ff878487.aspx
AlwaysOn Failover
http://msdn.microsoft.com/en-us/library/ff929171.aspx
Do not use the Failover Cluster Manager to manipulate
availability groups, for example:
Do not add or remove resources in the clustered service (resource group) for the availability
group.
Do not change any availability group properties, such as the possible owners and preferred
owners. These properties are set automatically by the availability group.
Do not use the Failover Cluster Manager to move availability groups to different nodes or to
fail over availability groups. The Failover Cluster Manager is not aware of the synchronization
status of the availability replicas, and doing so can lead to extended downtime. You must use
Transact-SQL or SQL Server Management Studio.
8 | 7/17/2015 | AlwaysOn Availability Groups 101
Prerequisites – Before you begin (cont.)
AlwaysOn Quorum Resources
http://blogs.msdn.com/b/sqlalwayson/archive/2012/03/13/quorum-vote-configuration-check-in-alwayson-availability-group-wizards-andyjing.aspx
http://msdn.microsoft.com/en-us/library/hh270280.aspx
http://msdn.microsoft.com/en-us/library/hh270281.aspx
http://technet.microsoft.com/en-us/library/cc770620(v=ws.10).aspx
Connecting with multi-subnet failover
http://msdn.microsoft.com/en-us/library/hh205662.aspx
http://technet.microsoft.com/en-us/library/ff878716.aspx
Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server) - http://technet.microsoft.com/enus/library/hh213417.aspx
Creating a listener
http://technet.microsoft.com/en-us/library/hh213080.aspx
Prerequisites and requirements
Only one listener can be created though SQL Server. If you need an additional listener, it can be created thought WSFC.
Recommendation, use a static IP for multiple subnet configurations.
You must be connected to the instance that hosts that primary replica
If using static IP addresses, the listener will have a static IP for each subnet that has a replica.
Configure Read-Only Routing for an AG
http://technet.microsoft.com/en-us/library/hh710054.aspx
9 | 7/17/2015 |
AlwaysOn Availability Groups 101
Prerequisites - Windows Cluster
Go into Server Manager, features, add features
10 | 7/17/2015 | AlwaysOn Availability Groups 101
Prerequisites - Windows Cluster (cont.)
Enable Failover Clustering
Make sure cluster services are available on all
participating nodes
11 | 7/17/2015 |
AlwaysOn Availability Groups 101
Prerequisites - Windows Cluster (cont.)
Add the database servers to the cluster
Run validations, tests, etc.
Some warnings are due to no storage available
to the cluster, which is correct for AlwaysOn.
Create the cluster
Create Active Directory computer account for
cluster name
12 | 7/17/2015 |
AlwaysOn Availability Groups 101
Prerequisites – SQL Server Configuration
Open SQL Server Configuration Manager
Select SQL Server Services, right click on SQL
Server, select properties
13 | 7/17/2015 |
AlwaysOn Availability Groups 101
AlwaysOn Set Up
14 | 7/17/2015 | AlwaysOn Availability Groups 101
AlwaysOn Setup - Overview
Working Primary Node
Available “blank slate” secondary
Create Availability Group
Select Databases
Specify Replicas
Create the AG Listener
Select full data synchronization
Run the wizard
Configure Read Only Routing
15 | 7/17/2015 |
AlwaysOn Availability Groups 101
AlwaysOn Setup - Working Primary Node
Ensure your application is working properly
Review logins and users and permissions
Using Contained databases is recommended
but not required
If not using contained databases, export the
logins
http://support.microsoft.com/kb/918992
16 | 7/17/2015 | AlwaysOn Availability Groups 101
AlwaysOn Setup - Available “blank slate”
secondary
Secondary Node(s) should match the primary
in configuration, version, etc.
Make sure the databases and files on the
primary do not exist on the secondary
If not using contained databases, import the
logins used by the application.
Don’t import default and windows authentication
accounts
It is vital that the login SIDS match between the
primary and secondary node(s)
17 | 7/17/2015 |
AlwaysOn Availability Groups 101
AlwaysOn Setup - Create Availability Group
Using SSMS, from your primary database
node, start the New Availability Group Wizard
and give it a name
18 | 7/17/2015 |
AlwaysOn Availability Groups 101
AlwaysOn Setup - Select Databases
Select all of the databases that work together
as a set for your application; possibly
including Reporting Services database(s).
19 | 7/17/2015 |
AlwaysOn Availability Groups 101
AlwaysOn Setup - Specify Replicas
The wizard will select your primary node, add
your secondary node(s)
20 | 7/17/2015 |
AlwaysOn Availability Groups 101
AlwaysOn Setup - Specify Replicas (cont.)
For all, select Synchronous, Automatic
Failover, Readable Secondary = Yes
21 | 7/17/2015 |
AlwaysOn Availability Groups 101
AlwaysOn Setup - Create the AG Listener
On the listener tab, enter name and port
1433, then click add for IP
22 | 7/17/2015 |
AlwaysOn Availability Groups 101
AlwaysOn Setup - Create the AG Listener
(cont.)
Enter the IP address for the listener
23 | 7/17/2015 | AlwaysOn Availability Groups 101
Select full data synchronization
Create the folder, preferably on a secondary
node, then enter into the wizard
24 | 7/17/2015 |
AlwaysOn Availability Groups 101
Run the wizard
Perform the validation, next, then finish to
create the AG
25 | 7/17/2015 |
AlwaysOn Availability Groups 101
Configure Read Only Routing
I have a script that with the setting of a few
variables, will generate the code to perform
the configuration. Contact me and provide
payment if interested.
http://www.sqlservercentral.com/scripts/AlwaysOn/116992/
What is important after configuration
Endpoint_url uses DNS name and port 5022
Available mode is synchronous
Failover mode is automatic
26 | 7/17/2015 |
AlwaysOn Availability Groups 101
Configure Read Only Routing (cont.)
What is important after configuration (cont.)
Primary role allow connections is ALL
Secondary role allow connections is
READ_ONLY
ReadOnly Routing URL is IP and port 1433
27 | 7/17/2015 | AlwaysOn Availability Groups 101
AlwaysOn Monitoring - Dashboard
The first place to start is the dashboard
28 | 7/17/2015 |
AlwaysOn Availability Groups 101
AlwaysOn Monitoring – Top Section
Look for any errors, warnings, check that
failover mode is automatic, AG group state is
healthy, check the links on the right for any
errors or warnings
29 | 7/17/2015 | AlwaysOn Availability Groups 101
AlwaysOn Monitoring - Replicas
Check the health icon, failover mode is
automatic, synchronization state is good, and
no issues reported
30 | 7/17/2015 |
AlwaysOn Availability Groups 101
AlwaysOn Monitoring - Databases
Check the primary and secondary, health
state, synchronization state, failover
readiness, issues
31 | 7/17/2015 | AlwaysOn Availability Groups 101
AlwaysOn Monitoring (cont.)
There are many DMV queries that can be
used
Microsoft SQL Server 2012 AlwaysOn
Monitoring Management Pack
AlwaysOn Availability Groups
Troubleshooting and Monitoring Guide
http://technet.microsoft.com/enus/library/dn135328(v=sql.110).aspx
32 | 7/17/2015 | AlwaysOn Availability Groups 101
AlwaysOn and Your Application
The connection strings should all go to the
listener, not directly to any database server
instance
To have your application use the primary
mode, no change is required in your
connection string
To have your application use a readable
secondary, add to the connection string:
;ApplicationIntent=ReadOnly
33 | 7/17/2015 | AlwaysOn Availability Groups 101
AlwaysOn Lessons Learned
Request the DNS name and IP for windows
cluster and Availability Group Listener early, they
can take a while
Research prerequisites, make sure all patches,
versions, components are optimal to support
AlwaysOn
Schedule and plan out in advance, get key
players on board in the beginning
Schedule implementation in two phases:
Configuration of clusters, storage, SQL server stand
alone instances
Implementation of AlwaysOn
34 | 7/17/2015 | AlwaysOn Availability Groups 101
Bonus Trick
Sometimes, when a database is in the state
of “not synchronizing”, and all other issues
have been resolved, running the below
command might get it back to healthy:
ALTER DATABASE [XXXXX]
SET HADR RESUME;
35 | 7/17/2015 | AlwaysOn Availability Groups 101
Questions?
Thank
you for
your time!
36 | 7/17/2015 | AlwaysOn Availability Groups 101