皆さん、こんにちは。 SQL Server/Microsoft Azure SQL Database サポートチーム です。
今回は、Microsoft Azure SQL Database (以下 MASD) を使用するうえで、必ずお目に掛かる Reconfiguration (リコンフィグレーション) について紹介します。
[Reconfiguration (リコンフィグレーション) とは!?]
Reconfiguration は、MASD 環境上の高可用性を維持するために実装された仕組みであり、ロールの変更 (セカンダリからプライマリへの昇格など) が行われる動作のことを意味します。
具体的には、以下のような場合に発生する可能性のある動作になります。
1. SQL Database、OS に対して更新プログラムなどを適用する場合
2. SQL Database を構成しているレプリカ (プライマリ、セカンダリ) 上で何らかの異常を検知した場合 (物理ハードウェアの問題を含む)
Reconfiguration に伴い、既存のセッションが切断され、ロールの変更が完了するまでの 数秒、数十秒間、お客様データベースへの接続に時間を要するなどの現象が発生する可能性があります。
しかしながら、長期間のダウンタイムを発生させないよう、必要な更新プログラムの適用などを適切なタイミングで実施したり、長期間のダウンタイムが発生しうる状況を事前に検知し、事前に問題を解消させるために必要な動作となります。
そのため、Reconfiguration は悪ではなく、長期間のダウンタイムの発生を可能な限り防ぎ、高可用性を維持するという意味では、私達の味方ですね。
なお、ここで重要となる点として、MASD 環境を使用したシステムを構築する場合は、Reconfiguration が行われることを前提としたアプリケーションを実装することが、お客様 アプリケーション側の可用性を維持するために必要となります。
MASD 環境を使用したシステムを構築する上で、推奨しているアプリケーションの実装方式については、以下の ブログ を参照下さい。
[SQL Database] アプリケーション作成における推奨事項について (Microsoft Azure SQL Database)
http://blogs.msdn.com/b/jpsql/archive/2014/10/22/sql-database-windows-azure-sql-database.aspx
[補足 : Reconfiguration (リコンフィグレーション) の発生はどのように確認できるの!?]
MASD で master データベースに接続後、システム テーブル “sys.event_log” を検索し、”event_subtype_desc” : “reconfiguration” というレコードが存在する場合は、接続されていたセッションが、reconfiguration により切断されたと判断可能です。
なお、reconfiguration は障害ではなく、高可用性を維持するために必要な動作になります。 そのため、接続されたセッションの切断や、短期間、アプリケーション から MASD への接続に時間を要する現象が発生した場合は、まずは、システム テーブル “sys.event_log” を参照し、reconfiguration の発生有無を確認ください。
一般的に、数分、数十分間、reconfiguration が多発する現象が見られない場合、また、継続的に MASD に接続ができない現象が発生していない場合は、データセンター側では問題が発生していないと判断可能 です。
event_category | event_type | event_subtype | event_subtype_desc | severity | description |
connectivity | connection_terminated | 1 | reconfiguration | 2 | データベース再構成が原因で、セッションが終了しました。 |
sys.event_log (SQL データベース)
http://msdn.microsoft.com/ja-jp/jp-ja/library/dn270018.aspx
※ 本Blogの内容は、2014年10月 現在の内容となっております