1. SQL 2016 ALWAYSON
Sourabh K. Agarwal | Senior Program Manager
April 11 2017
@SQLSourabh
http://aka.ms/sqlserverteam | @mssqltiger
2. Agenda
Fundamental Changes to SQL Server 2016 AlwaysOn
Performance Enhancements to SQL Server 2016 AlwaysOn
Domain Independent AG’s
AlwaysOn Direct Seeding
Database Level Failover Detection
AlwaysOn Data Flow
Tracking AlwaysOn Latency
3. Fundamental Enhancements in SQL 2016
Readable secondary's load balancing
DTC support
Group Managed Service Account support
> 2 Auto-failover targets
Basic HA in Standard edition
4. SQL 2016 AlwaysOn Turbocharged
Streamline the Log
Transport
Parallel workers on
separate schedulers
Multiple Log Writers
Parallel Redo
Code Optimization
Read more on our blog
5. Domain Independent AGs
Environments have multiple domains that cannot be merged
No trust relationships
Installations that do not use Active Directory domains (Ex. Workgroups)
All nodes in a single domain
Nodes in multiple domains with full trust
Nodes in multiple domains with no trust
Nodes in no domain at all
Read our blog
docs
Requires combo of Powershell scripts, T-SQL scripts, SSMS, and Windows UI
blog blog
6. No need to initial full backups on primary
Network share not required
for backups
Automatic restores on secondary
Why Direct Seeding
VDI Stream - not compressed (use TF 9567)
Trade-off CPU v/s Network Bandwidth
Backup/Restore process - 1 worker per reader and writer per LUN
How it works
Extended Events - dbseed category (debug channel)
DMVs –
sys.dm_hadr_automatic_seeding
sys.dm_hadr_physical_seeding_stats
Diagnostics
Secondary AG Replica
VDI Stream
Primary AG
Replica
7.
8. CREATE AVAILABILITY GROUP [ag]
WITH (DB_FAILOVER=ON)
FOR DATABASE [agdb]
Database level health Triggers
Enabled for entire AG
Log or data files read/write failures
Database state != ONLINE
sqlserver.availability_replica_database_fault_reporting XEvent
Only when SQL Server detects a problem
Independent of flexible failover policy Refresher here
Ex. When we write
to log
9. AlwaysOn
Data Flow
Primary Replica Secondary Replica
Capture Log Block
Compress Log Block
Send log block to the Secondary
Decompress Log Block
Harden Log Block
Send Ack back to Primary
Commit Transactions