SQL Server のことなら SQL Quality SQL Server パフォーマンス チューニング、コンサルティング、アドバイス、相談、定期診断、トレーニング

ホーム > 技術情報 > SQL Server 2012 自習書 DWH 関連の新機能

SQL Server 2012 自習書シリーズ (HTML 版)
新機能編 No.2「AlwaysOn による可用性の向上」

松本美穂と松本崇博が執筆した SQL Server 2012 自習書シリーズの「新機能編 No.2 AlwaysOn による可用性の向上」の HTML 版です。 日本マイクロソフトさんの Web サイトで Word または PDF 形式でダウンロードできますが、今回、HTML 版として公開する許可をいただきましたので、ここに掲載いたします。[2014年12月26日]

目次へ | 前のページへ | 次のページへ

2.8 非同期モードの場合の手動フェールオーバー

◆ 非同期モードの場合の手動フェールオーバー

セカンダリが非同期モードの場合に手動フェールオーバーを実行するには、次の 2つの方法があります。

1.非同期モードを同期モードへ変更してから手動フェールオーバーを実行する

2.FORCE_FAILOVER_ALLOW_DATA_LOSS を指定して強制フェールオーバーを実行する。ただし、役割を元に戻すには RESUME を指定したデータベース再開がそれぞれのサーバー上で必要になる

◆ 非同期モードを同期モードへ変更する方法

非同期モードを同期モードへ変更する場合は、次のように[可用性レプリカ]フォルダー内のセカンダリを右クリックして、[プロパティ]をクリックし、[可用性モード]を[同期コミット]へ変更するだけです。ただし、この手順はプライマリ(SERVER1)へ接続して、プライマリ上から実行することに注意してください。

00103

SQL ステートメントを利用して、非同期モードを同期モードへ変更する場合は、次のように ALTER AVAILABILITY GROUP ステートメントを実行します。

USE master
ALTER AVAILABILITY GROUP AG1
 MODIFY REPLICA ON 'SERVER3'
  WITH ( AVAILABILITY_MODE SYNCHRONOUS_COMMIT )

AG1 は 可用性グループ 名、SERVER3 は同期モードを変更したいセカンダリの名前、AVAILABILITY_MODE SYNCHRONOUS_COMMIT と指定することで同期モードへ変更することができます。非同期モードへ戻したい場合は、ASYNCHRONOUS_COMMIT と指定します。

同期モードへ変更した後は、前の Step で試した SERVER2 と同じ状態になるので、手動でのフェールオーバーを全く同じように試すことができます。試した後は、非同期モードへ戻すようにします。

◆ FORCE_FAILOVER_ALLOW_DATA_LOSS を指定した強制フェールオーバー

次に、非同期モードの場合の手動フェールオーバーの方法の 2つ目を説明します。この方法では、FORCE_FAILOVER_ALLOW_DATA_LOSS を指定した強制フェールオーバーを実行するのですが、実行後の復旧手順(役割を元に戻す手順)が少し複雑になります。しかし、この手順は、実際に障害が発生した場合の復旧手順とほとんど同じなので覚えておくことをお勧めします。

それでは、これも試してみましょう。

1.まずは、SERVER3 非同期モードへ設定されていることを確認します。

00104

2.次に、SERVER3 へ接続して、前の Step ど同様の手動フェールオーバーを実行してみます。

USE master
ALTER AVAILABILITY GROUP AG1 FAILOVER

00105

結果はエラーとなり、非同期モードでは、手動フェールオーバーが実行できないことを確認できます。

3.次に、FORCE_FAILOVER_ALLOW_DATA_LOSS を指定して、フェールオーバーを実行します(このオプションを指定したフェールオーバーは "強制フェールオーバー" と呼ばれます)。

USE master
ALTER AVAILABILITY GROUP AG1 FORCE_FAILOVER_ALLOW_DATA_LOSS

00106

今度は正常に終了します(約10秒くらいで完了します)。Step 2 の冒頭で説明したように、非同期モードでは、データを失う可能性がある(同期がとれていない可能性がある)ので、ALLOW_DATA_LOSS(データ損失を受け入れ)、FORCE(強制的に)FAILOVER を実行する、というオプションになっています。データベース ミラーリング機能で非同期モードを利用したことがある方にとってはお馴染みのオプションです。

Note: GUI での強制フェールオーバー
オブジェクト エクスプローラーで強制フェールオーバーを実行するには、手動フェールオーバーのときと同様、次のように可用性グループ名(AG1)を右クリックして、[フェールオーバー]をクリックします。、
00107
00108
00109
00110

強制フェールオーバーが完了した後は、オブジェクト エクスプローラーを最新の情報に更新して、SERVER3 がプライマリに変更されていることを確認します。

00111

4.次に、SERVER3 またはリスナーAG1_Listener)へ接続して、INSERT ステートメントを実行して、データを 1件追加してみましょう。

USE AGTestDB
INSERT INTO t1 VALUES(5)
SELECT FROM t1

00112

正しくデータを追加できることから、SERVER3 がプライマリとして正常に動作していることを確認できます。

5.次に、フェールオーバクラスター マネージャーを起動して、リソースの所有者がSERVER3 へ変更されていることを確認しておきましょう。

00113

6.次に、Visual Studio 2010 で作成した Windows アプリケーションを実行して、正しく結果が取得できることを確認します。

00114

7.次に、オブジェクト エクスプローラーで[可用性レプリカ]フォルダーをクリックして、[オブジェクト エクスプローラーの詳細]を表示します。

00115

ツールバーの[最新の情報に更新]ボタンをクリックすると、新しいセカンダリとなった SERVER1 SERVER2 の[同期状態]が「同期されていません」と表示されることを確認できます。このように表示される場合は、その名のとおり、同期がとれいない状態なので、プライマリへ追加したデータ(さきほど追加した 5)は、セカンダリへは複製されていません

強制フェールオーバーは、後述の 2台のサーバーが障害発生した場合など、緊急時に使用するためのオプションなので、これを実行した後は、同期が自動停止するようになっています。同期を再開(RESUME)するには、明示的な操作が必要になります。

◆ 同期の再開(RESUME)

1.次に、SERVER1(元プライマリ、現在はセカンダリ)へ接続して、オブジェクト エクスプローラーを最新の情報に更新します。

00116

可用性データベース]フォルダーを展開すると、AGTestDB データベースのアイコンが「」に変わっていることを確認できます。これは、「同期されていない」状態を表すアイコンです。

2.同期を再開するには、ALTER DATABASE ステートメントを次のように実行して、RESUME オプションを指定します。

USE master
ALTER DATABASE AGTestDB SET HADR RESUME

00117

Note: GUI で RESUME を実行する場合
GUI 操作で RESUME を実行したい場合は、次のように[可用性データベース]フォルダーの AGTestDB データベースを右クリックして、[データ移動の再開]をクリックします。
00118

RESUME の実行が完了したら、オブジェクト エクスプローラーを最新の情報に更新して、アイコンが正常な状態を表す「」に変わっていることを確認しましょう。

00119

3.次に、SERVER1 へ接続して、SELECT ステートメントを実行し、現在のプライマリ(SERVER3)側で追加したデータ(5)が複製されていることを確認しておきましょう。

00120

このように、FORCE~オプションで強制フェールオーバーを実行した場合には、同期を再開するために RESUME の実行が必要になります。

4.次に、SERVER2 についても同様に、RESUME を実行します。

00121

5.RESUME が完了したら、SERVER3 の[オブジェクト エクスプローラーの詳細]で最新の情報に更新して、[同期状態]が「同期中」へ変更されていることを確認します。

00122

◆ 役割を元へ戻す(SERVER1 をプライマリへ)

1.次に、SERVER1 をプライマリへ戻します。この場合も(SERVER3 が非同期モードへ設定されているため)、FORCE~ オプションを利用した強制フェールオーバーを実行する必要があります。

USE master
ALTER AVAILABILITY GROUP AG1 FORCE_FAILOVER_ALLOW_DATA_LOSS

00123

2.強制フェールオーバーが完了したら、SERVER1 で[オブジェクト エクスプローラーの詳細]を最新の情報に更新します。

00124

強制フェールオーバーを実行したので、また「同期されていません」と表示されていることを確認できます。

3.同期を再開するために、SERVER2 および SERVER3 に対して、RESUME を実行します。

00125

4.RESUME が完了したら、SERVER1 で[オブジェクト エクスプローラーの詳細]を最新の情報に更新します。

00126

SERVER2 は「同期済み」、SERVER3 は「同期中」と表示されて、この Step を始める前の状態へ戻ったことを確認します。

以上のように、非同期モードのセカンダリの場合には、強制フェールオーバーRESUME を利用することで、役割変更を行うことができます。この手順は、後述の Step の障害発生時の復旧手順でも利用できるので、覚えておくことをお勧めします。

また、非同期モードでの単純な手動フェールオーバーのみを試す場合は、この Step の冒頭で説明した「いったん同期モードへ変更してから手動フェールオーバーを実行する」ことで、簡単に役割変更を試すこともできます。

これらの手順は、データベース ミラーリング機能を利用する場合もほとんど同じなので(可用性グループ機能は、データベース ミラーリングの場合と同じように操作できるものが多くあるので)、データベース ミラーリング機能を利用する場合にも、考え方や用語、基本的な操作方法などが役立ちます。

次の Step では、障害発生をシミュレートして、障害からの復旧手順を説明します。

目次へ | 前のページへ | 次のページへ

事例1

MPNロゴ


SQLQualityは執筆とセミナーを通じて技術の啓蒙やエンジニアの育成支援も行っています
最新刊
SQL Server 2012 の教科書
SQL Server 2012 の教科書(ソシム)

弊社オリジナル制作の
SQL Server 2012 自習書も
マイクロソフトのサイトで公開中!
ロングセラー
ASP.NET でいってみよう  SQL Server 2000 でいってみよう
ASP.NET でいってみよう
第7刷 16,500 部発行
SQL Server 2000 でいってみよう
第12刷 28,500 部発行


セミナー風景
セミナー風景

弊社執筆の
SQL Server 2012 自習書
マイクロソフトのサイトで公開中
全30冊
ダウンロードはこちら
弊社執筆の
SQL Server 2008 R2 自習書
マイクロソフトのサイトで公開中
全30冊
目次はこちら
松本美穂のコラム
(公開活動などのお知らせ)

第38回: SQL Server 2014 CTP2 の公開
第37回: SQL Server 2014 CTP1 の自習書をご覧ください
第36回: SQL Server 2014 CTP1 のクラスター化列ストア インデックスを試す
第35回: SQL Server 2014 CTP1 のインメモリ OLTP の基本操作を試す
第34回: GeoFlow for Excel 2013 のプレビュー版を試す
第33回:iPad と iPhone からの SQL Server 2012 Reporting Servicesのレポート閲覧
第32回:PASS Summit 2012 参加レポート
第31回:SQL Server 2012 Reporting Services 自習書のお知らせ
第30回:SQL Server 2012(RTM 版)の新機能 自習書をご覧ください
第29回:書籍「SQL Server 2012の教科書 開発編」のお知らせ
第26回:SQL Server 2012 の Power View 機能のご紹介
第25回:SQL Server 2012 の Data Quality Services
第24回:SQL Server 2012 自習書のご案内と初セミナー報告
第23回:Denali CTP1 が公開されました
第22回 チューニングに王道あらず
第21回 Microsoft TechEd 2010 終了しました
第20回 Microsoft TechEd Japan 2010 今年も登壇します
第19回 SQL Server 2008 R2 RTM の 日本語版が公開されました
第18回 「SQL Azure 入門」自習書のご案内
第17回 SQL Server 2008 自習書の追加ドキュメントのお知らせ
第16回 SQL Server 2008 R2 自習書とプレビュー セミナーのお知らせ
第15回 SQL Server 2008 R2 Reporting Services と新刊のお知らせ
第14回 TechEd 2009 のご報告と SQL Server 2008 R2 について
第13回 SQL Server 2008 R2 の CTP 版が公開されました
第12回 MVP Summit 2009 in Seattle へ参加

技術コミュニティでも活動中

Microsoft MVP for SQL Server

松本崇博 Blog(SQL Server Tips)
松本美穂ブログ(SQL Serverノート)