SE の雑記

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

SQL Database のメンテナンスウィンドウ (Preview) について

leave a comment

Ignite 2021 でアナウンスのあった、SQL Database と Managed Instance のメンテナンスウィンドウ (Maintenance Windos) についてまとめておきたいと思います。

Azure の SQL Server ベースの PaaS の環境では、Synapse の専用 SQL プールがメンテナンススケジュールをサポートしていましたが、一般的な DB でもメンテナンス期間の指定ができるようになりました。

2021/3/3 のプレビュー時点での内容となりますので、今後変更される可能性はあります。

公式のアナウンス / ドキュメントについては、次の情報を参照してください。

アナウンス

docs

利用可能な環境の条件

現在、メンテナンスウィンドウが利用可能な環境については制限があります。
メンテナンスウィンドウは論理サーバーではなく、データベースに対して設定を行うことになります。
(エラスティックプールの場合は、プールに設定し、Managed Instance の場合はインスタンスに設定)

利用可能な条件を満たしている場合は、次のように「メンテナンス期間」に複数の選択肢が表示されるはずです。
image

条件を満たしていない場合は、メンテナンス期間はシステムの既定値のみとなっており変更することはできません。
image

既に作成済みのデータベースの場合は、データベースのブレードから設定を変更することができます。
「設定」の下に「メンテナンス」が表示されている場合は、メンテナンスウィンドウを使用することができる環境となっています。
この項目が表示されていない場合は、データベースがメンテナンスウィンドウをサポートする環境となっていません。

image
Ignite 2021 のタイミングで Advance notifications for planned maintenance events (Preview) として、SQL Database の計画メンテナンスが発生する際に通知を行う機能の発表もありましたが、メンテナンスから正常性アラートに遷移することができるようですね。

今回はポータルからの設定画面を張り付けていますが、Configure maintenance window (Preview) に書かれているように、コマンドからも設定することができます。

 

メンテナンスウィンドウのサポートですが、現時点では次のような条件があります。

利用可能なサブスクリプション

最初にサブスクリプションですが、すべてのサブスクリプションで利用できるようになっていないようです。

Cost and eligibility

Choosing a maintenance window is free of charge for the following subscription offer types: Pay-As-You-Go, Cloud Solution Provider (CSP), Microsoft Enterprise, or Microsoft Customer Agreement.

通常の運用環境で使用しているサブスクリプションであれば、利用できるのではと思いますが、Visual Studio の特典で利用できる Azure のサブスクリプション (Visual Studio Enterprise 加入者 : MS-AZR-0063P / Pay-As-You-Go Dev/テスト : MS-AZR-0023P) では、設定を行うことができませんでした。

そのため、検証用途で設定を確認したい場合でも通常の従量課金のサブスクリプションを用意しておく必要がありそうです。
本投稿では、従量課金の MS-AZR-0003P のプランを新規に作成して確認を行っています。

利用可能な SLO (Service Level objectives)

メンテナンスウィンドウが設定可能な SLO についても制限があります。

次の SLO ではメンテナンスウィンドウは使用することができません

Supported service level objectives

Choosing a maintenance window other than the default is available on all SLOs except for:

  • Hyperscale
  • Legacy Gen4 vCore
  • Basic, S0 and S1
  • DC, Fsv2, M-series

DTU であれば S2 以上、vCore であれば Gen5 が対象となります。
Serverless はサポートしているようですが、Hyperscale については現時点ではサポートされていません。

利用可能なリージョン

現時点では日本リージョンについては、東日本のみがサポート対象となっています。

Azure region support

Choosing a maintenance window other than the default is currently available in the following regions:

  • Australia East
  • Australia SouthEast
  • Brazil South
  • Canada Central
  • Central US
  • East US
  • East US2
  • Japan East
  • NorthCentral US
  • North Europe
  • SouthCentral US
  • SouthEast Asia
  • UK South
  • West Europe
  • West US
  • West US2

 

メンテナンスウィンドウの対象

SQL Database の場合、メンテナンスウィンドウは各データベースが対象となり、SQL Database に接続を行うためのゲートウェイについては設定の対象となりません。
(Managed Instance の場合は、ゲートウェイが仮想クラスター内にあるため、メンテナンスウィンドウの設定の制御化になるようですが、SQL Database の場合、ゲートウェイはパブリックなリソースとなります)

SQL Database の接続のアーキテクチャについては Azure SQL Database と Azure Synapse Analytics の接続アーキテクチャ に記載されており、次のような図で解説が行われています。

メンテナンスウィンドウは、データベースクラスター内のデータベースに対しての設定となり、接続の初期に必ず使用されるゲートウェイ (ゲートウェイノード) には適用されません。

そのため、Gateway maintenance for Azure SQL Database には次のように記載されています。

In Azure SQL Database, any connections using the proxy connection policy could be affected by both the chosen maintenance window and a gateway node maintenance window. However, client connections using the recommended redirect connection policy are unaffected by a gateway node maintenance failover.

接続の方法については、プロキシではなくリダイレクトを使用することで、ゲートウェイのメンテナンスが発生した場合の影響を受けないと記載が行われています。

新規の接続については、最初にゲートウェイへの問い合わせがあり、コネクションプールのような接続の再利用を行う接続方式であれば、接続の再利用を行うため、必ずしもゲートウェイのメンテナンスの影響を受けないのかは微妙なところかと思いますが、プロキシよりリダイレクトの方が、影響を受けにくいのは確かかと。

メンテナンスウィンドウを設定しても、ゲートウェイのメンテナンスの影響については、設定した時間外でも受ける可能性があるのは注意しておきたいですね。

メンテナンスウィンドウで設定可能な時間

利用可能な環境の条件で画像をつけていますが、SQL Database のメンテナンスウィンドウについては、自由に設定できるのではなく、事前に定義されている次のメンテナンスウィンドウスロットから選択することになります。

  • システムの既定値 : 毎日 午後 5 時 ~ 午前 8 時
  • 月~木 : 午後10時 ~ 午前 6 時
    • 週末はメンテナンス対象外とするケース
  • 金~日 : 午後10時 ~ 午前 6 時
    • 週末をメンテナンス時間とするケース

時間についてはデータベースのリソースのリージョンの時間が基準値となります。
Maintenance window FAQ に記載されているのですが、データベースのタイムゾーン (これは MI のみ設定可能ですが) には依存せず、リソースをホストする Azure のリージョンによって時間が決定されるため、東日本で設定を行う場合は上記の時間が JST で設定されることなります。(設定した時間を UTC から変換するという必要はなく、JST の上記の時間にメンテナンスが実施されます)

 

ここで設定した時間以外はメンテナンスをしないことを保証するものではなく、計画外メンテナンスが発生する可能性があることも明記されています。

Gain more predictability with maintenance window

Note

In addition to planned maintenance updates, in rare circumstances unplanned maintenance events can cause unavailability.

メンテナンスウィンドウを設定していても、それ以外のタイミングでメンテナンスが入るという可能性が残っていることを覚えておくのは重要かと。

設定可能なメンテナンスウィンドウスロットですが Get-AzMaintenancePublicConfiguration というコマンドレットを使用することで、各リージョンで設定可能な時間を確認することも可能です。

確認方法については Discover SQL Database and elastic pool maintenance windows を参照してください。

 

基本的な内容はドキュメントを確認すれば把握できると思いますが、検証用のサブスクリプションを使用している場合だと、設定ができないことが注意点でしょうか。

Share

Written by Masayuki.Ozawa

3月 3rd, 2021 at 3:34 pm

Posted in SQL Database

Tagged with

Leave a Reply