SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Tech Summit 2016 で登壇させていただきました

leave a comment

11/1, 2 で開催されていた Tech Summit 2016 で、「進化した AlwaysOn! SQL Server 2016 の AlwaysOn 可用性グループの新機能を一挙紹介」という内容で登壇させていただきました。

後日、資料や動画が公開されるはずですので、興味のある方がいらっしゃいましたら公開されましたらご確認いただければ幸いです。
ちなみに最大の見どころは、途中で「0 → Enter」を押してしまって、タイトルスライドを表示して慌てているところです。
# Enter の隣にテンキーがあって、間違って押しました。

セッションの内容のフォローアップを軽く。

今回、お話しさせていただいた内容は以下になります。
公開後に詳細を確認されたい場合はこれらの情報を確認していただければと思います。

新機能

新しい初期同期方法

可用性グループの新しい構成

可用性グループの機能強化

セカンダリの利用方法の強化

Ignite 2016

デモ環境


デモの環境ですが、すべて Azure 上で構築をしています。
image

 

構成としては、

  • Windows Server 2016 + SQL Server 2016 Enterprise Edition × 3 の可用性グループ
  • Windows Server 2016 + SQL Server 2016 Enterprise Edition × 2 の可用性グループ
  • Windows Server 2016 + SQL Server 2016 Standard Edition × 2 の可用性グループ

を使っており、各環境用に Internal ロードバランサーを設定しています。

各ロードバランサーには、複数のリスナーを設定するためにマルチ IP のロードバランサーとして設定していますが、それ以外はシンプルな構成となっています。

デモのスクリプトについては https://1drv.ms/f/s!ArLODcpbx8HegbNUlCOReN-LS10uCQ にアップロードしましたので、こちらからご確認いただければと思います。

 

Standard Edition の可用性グループについて


Ask the Speaker で、複数の方からご質問いただいたのが、Standard Edition の可用性グループになります。
imageimage

 

Standard Edition の基本的な可用性グループでは、DB 単位に可用性グループが作成されるため、データベースが異なるサーバーに配置される可能性があるということは意識しておく必要があるのではと思います。

上記のスライドのような配置になった場合、AG01 のリスナーに接続している状態では、DB1 と DB3 を結合した情報の取得を SQL 的に実行しようとしても、DB3 がセカンダリレプリカの状態となっているため、アクセスをすることができません。

基本的な考え方は、ミラーリングと同じになるかと思います。
ミラーリングについては Database Mirroring Automating Failover for Multiple SQL Server Databases というような方法を使う必要がありましたが、これを可用性グループ向けに考慮する必要があります。

そのための解決方法としてデモでは、以下のような方法で実装していました。

  • リンクサーバーとしてリスナーを設定し、他の DB にアクセスする場合は、リスナー経由でアクセスをする
    • リスナー経由でアクセスをすれば、透過的にプライマリにアクセスされますので、それをリンクサーバーで利用しています。
    • この方法はリモートクエリとして OLEDB での実行となるため、処理のオーバーヘッドを考慮する必要があります。また、フェールオーバー後の初回のクエリ実行時にはエラーとなるため、エラートラップを考慮する必要があります。
:Connect STD-AG01-LN01
SELECT 
	*,
	(SELECT name FROM sys.servers WHERE server_id = 0) AS A1,
	(SELECT name FROM [STD-AG01-LN03].master.sys.servers 
	 WHERE server_id = 0) AS A3
FROM 
	AGDB01..AGDB01_T1 AS A1
	LEFT JOIN
	[STD-AG01-LN03].AGDB03.dbo.AGDB03_T1 AS A3
	ON
	A1.Col1 = A3.Col1
GO
  • 可用性グループを特定のサーバーに寄せて配置できるようにする
    • デモでは AGMonitor というクラスターリソースで実装をしていました。

 

de:code 2016 に続いての登壇でしたが、SQL Server のデータベースエンジンだけでも、常に調べることがたくさんあり、日々勉強ですね。

Written by masayuki.ozawa

11月 5th, 2016 at 11:18 pm

Posted in SQL Server

Tagged with

Leave a Reply

*