SQL Server 2012 から追加された機能である、AlwaysOn 可用性グループですが、SQL Server 2016 で様々な機能強化が行われています。本セッションでは、SQL Server 2016 で機能強化された内容について検証した内容についてお話させていただきます。新しい AlwaysOn では、どのようなことができるようになったのか、興味のある方はぜひご参加ください!!
[db tech showcase Tokyo 2016] B27:SQL Server 2016 AlwaysOn 可用性グループ New Features - 機能強化された AlwaysOn では何ができるようになったの? - by 小澤 真之
1. SQL Server 2016 AlwaysOn 可用性グループ
New Features
Masayuki Ozawa (Microsoft MVP for Data Platform)
2. 自己紹介
2016/7/14db tech showcase 20162
SQL Server のデータベースを中心に、Microsoft 製品を使用した案件に
携わらせていただいているフリーランスのエンジニアです。
2011/7 から Microsoft MVP Awardを、SQL Server , Data Platform の領域で
受賞しています。
Microsoft MVP Award
https://www.microsoft.com/ja-jp/communities/mvp/default.aspx
ブログや勉強会/セミナーを通じて SQL Server の情報発信をしています。
blog
SE の雑記 : http://blog.engineer-memo.com
Twitter : @Masayuki_Ozawa
直近で担当したセミナーのセッション
de:code 2016 : SQL Server on Azure VM 最新情報とベスト プラクティス
https://channel9.msdn.com/Events/de-code/2016/DBP-008
9. Workgroup Cluster での AlwaysOn
2016/7/14db tech showcase 20169
Windows Server 2016 の新機能である Workgroup Cluster で構築されたクラスター上
で、AlwaysOn 可用性グループを構築可能に
Active Directory が不要で、AlwaysOn 可用性グループの構築が可能
サポートされる Custer Quorum に注意する
(現状、ファイル共有/ノードはサポート対象に含まれていない)
Windows Server 2016 ではマルチドメインクラスターもサポート
Active Directory ドメイン
Windows Server Failover Clustering
Quorum
- Disk
- Node
- File Share
Windows Server 2012 R2
Workgroup
Windows Server Failover Clustering
Quorum
- Disk
- Cloud Microsoft Azure
Windows Server 2016
12. SQL Server 2012 / 2014 のスレッド
2016/7/14db tech showcase 201612
AlwaysON – HADRON Learning Series: Worker Pool Usage for HADRON Enabled Databases
https://blogs.msdn.microsoft.com/psssql/2012/05/17/alwayson-hadron-learning-series-worker-pool-usage-for-hadron-enabled-databases/ より
Log Scanner
Primary
HadrThreadPool
DDL / Notifications
20-60 Seconds Idle Per Database
Per Database
On Msg completion
Per Secondary
On Msg completion
Msg Reader
Secodnary
Redo
20-60 Seconds Idle
Per Database
On Msg completion
State Processing
Per Database
20-60 Seconds Idle
Msg Receive
Per AG
Per DB Per DB
Msg Log Apply
HadrThreadPool
On Msg completion
Msg Routing
On Msg completion
16. ロードバランスされた読み取りレプリカへのアクセス
2016/7/14db tech showcase 201616
2012 / 2014 は、接続順序 (ルール) によるセカンダリレプリカへのアクセス
2016 では、ラウンドロビンにより、ロードバランスされたアクセスが可能に
以下の SQL Server 2016 の、設定例は Server A または Server B でロードバランスし、
どちらも接続できない場合は Server C に接続
Server A
Server B
Server C
ALTER AVAILABILITY GROUP [AlwaysOnAG]
MODIFY REPLICA ON N'SQL-2016-01'
WITH
(PRIMARY_ROLE
(READ_ONLY_ROUTING_LIST=(
N'Server A',
N'Server B',
N'Server C'
)))
SQL Server 2012 / 2014
ALTER AVAILABILITY GROUP [AlwaysOnAG]
MODIFY REPLICA ON N'SQL-2016-01'
WITH
(PRIMARY_ROLE
(READ_ONLY_ROUTING_LIST=(
(N'Server A',N'Server B'),
N'Server C'
)))
SQL Server 2016
18. AlwaysOn で分散トランザクションをサポート
2016/7/14db tech showcase 201618
特定環境下での分散トランザクションをサポート
異なるインスタンスの DB に対しての分散トランザクションをサポート
AlwaysOn は同一インスタンス内の複数データベースにまたがるトランザクションはサポートしていない
OS は、Windows Server 2012 R2 + KB3090973 or Windows Server 2016 を使用する必要がある
WITH DTC_SUPPORT = PER_DB を指定して可用性グループを作成
可用性グループの作成時のみ、設定が可能なため、後からの変更は不可能
AG 1
DB1
DB2
非サポートの DB 配置
AG 1
DB1
DB2
Server A Server B Server A Server B
AG 1
DB1
DB2
AG 2
AG 1
DB1
DB2
サポートされるDB 配置
Server A Server B Server A Server B
19. Direct Seeding によるセカンダリレプリカへの復元
2016/7/14db tech showcase 201619
セカンダリに明示的なバックアップのリストアが不要で同期を開始
従来 : SEEDING_MODE = MANUAL
プライマリの初期バックアップ → 可用性グループに追加 → セカンダリでリストア → 同期開始
Direct Seeding (Automatic Seeding) : SEEDING_MODE = AUTOMATIC
プライマリの初期バックアップ → 可用性グループに追加 → セカンダリに自動的に追加され、同期開始
すべてをセカンダリへの自動的な追加は、ディレクトリ構成を同一にする
同一でない場合は、事前に手動でバックアップをリストアしておく必要がある
後述の分散可用性グループの初期同期でも Direct Seeding を使用することができる
-T9567 を設定すると、データ同期時のデータストリームが圧縮される
SQL Server 2012 / 2014
AG 1
DB1
DBを追加
Server A
Server B AG 1
DB1
共有フォルダー
バックアップ
リストア
AG 1
DB1
DBを追加
Server A
Server B AG 1
DB1
AG に自動で
追加される
SQL Server 2016
25. 参考資料
2016/7/14db tech showcase 201625
Introducing Microsoft SQL Server 2016 – get your free ebook today
https://info.microsoft.com/Introducing-SQL-Server-2016-eBook.html
Enhanced Always On Availability Groups in SQL Server 2016
https://blogs.technet.microsoft.com/dataplatforminsider/2015/12/15/enhanced-always-on-availability-groups-in-sql-server-2016/
High Availability Enhancements
https://msdn.microsoft.com/en-us/library/bb510411.aspx#Anchor_4
Workgroup and Multi-domain clusters in Windows Server 2016
https://blogs.msdn.microsoft.com/clustering/2015/08/17/workgroup-and-multi-domain-clusters-in-windows-server-2016/
SQLServer 2016 AlwaysOn and new Log Transport behavior
https://blogs.technet.microsoft.com/simgreci/2016/06/17/sqlserver-2016-alwayson-and-new-log-transport-behavior/
SQL 2016 – It Just Runs Faster: AlwaysOn Parallel Compression / Improved Algorithms
https://blogs.msdn.microsoft.com/psssql/2016/05/03/sql-2016-it-just-runs-faster-alwayson-parallel-compression-improved-algorithms/
Configure load-balancing across read-only replicas
https://msdn.microsoft.com/en-us/library/hh710054.aspx#loadbalancing
Cross-Database Transactions and Distributed Transactions for Always On Availability Groups and Database Mirroring (SQL Server)
https://msdn.microsoft.com/en-us/library/ms366279(v=sql.130).aspx
SQL Server 2016 DTC Support In Availability Groups
https://blogs.technet.microsoft.com/dataplatform/2016/01/25/sql-server-2016-dtc-support-in-availability-groups/
Distributed Availability Groups (Always On Availability Groups)
https://msdn.microsoft.com/en-us/library/mt651673.aspx
Basic Availability Groups (Always On Availability Groups)
https://msdn.microsoft.com/en-us/library/mt614935.aspx