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.3 可用性グループの設定方法

◆ 可用性グループの設定方法

この Step では、次の構成で可用性グループを設定します。

00015

SERVER1SERVER2SERVER3 3台で可用性グループを構成します(SERVER1 プライマリとして、SERVER2 同期モードセカンダリSERVER3 非同期モードセカンダリとして作成します)。すべてのサーバーは同じ Active Directory ドメイン(example.com)へ参加させ、WSFC(Windows Server フェールオーバー クラスター)のノードとして設定しています。各ノードには、それぞれのローカル ドライブへ SQL Server 2012 Enterprise エディションのデータベース エンジンをインストールしています(SQL Server クラスターとしてはインストールしていません)。

データベースを格納するためのフォルダーは「C:\AGtest」という名前で各ノード上に作成し、初期同期に利用される共有フォルダーは「C:\AGtemp」という名前で SERVER1 上に作成しています。以降では、前述の前提条件も確認しながら、実際に可用性グループを設定してみましょう。

◆ 前提条件の確認

1.まずは、可用性グループを構成する各サーバー(SERVER1SERVER2SERVER3)の前提条件を確認しておきます。

Windows Server 2008 R2 SP1(Service Pack 1)を適用していること
同じ Active Directory ドメイン(ここでは example.com)へ参加していること
WSFC(Windows Server フェールオーバー クラスター)のノードであること

2.次に、SQL Server のサービス アカウントActive Directory ドメイン ユーザーへ設定して、すべてのノードで同じアカウントを利用していることを確認/設定します。

SQL Server 2012 では、インストール時の既定のサービス アカウントが「NT Service\MSSQLSERVER」に設定されているので、このアカウントを利用している場合は、可用性グループを構成できません。

サービス アカウントを確認/変更するには、次のように「SQL Server 構成マージャー」ツールを利用して、SQL Server サービスのプロパティを開いて、[ログオン]タブから行います。

00016

このアカウント]を選択して、[参照]ボタンをクリックすれば、任意のドメイン ユーザーを選択することができます(画面は sqlservice という名前のユーザーを選択)。[パスワード]には、そのユーザーへ設定したパスワードを入力して、[OK]ボタンをクリックします。以上でサービス アカウントの変更が完了です(SQL Server サービスを再起動することで、変更したアカウントが有効化されます)。

以上の操作を、可用性グループを構成する全てのサーバー上(SERVER1SERVER2SERVER3)で行います。可用性グループでは、全てのサーバー上で同一の Active Directory ドメイン ユーザーを利用している必要があります。

3.次に、データベースを格納するフォルダーに対して、SQL Server のサービス アカウントへ NTFS アクセス許可(変更権限)を付与します。これを設定するには、Windows エクスプローラーから次のように操作します。

00017

ここでは、「C:\AGtest」という名前のフォルダーのプロパティを開いて、[セキュリティ]タブでサービス アカウント(画面はsqlservice)を追加して、このアカウントに対して変更権限を付与しています。後述の手順で、このフォルダーに対してデータベース(.mdf/.ldf ファイル)を作成します。

4.次に、データベースを格納するフォルダーを、すべてのサーバー上に同じパスで作成しておきます。

可用性グループを構成するには、すべてのサーバー上で、同じパスのフォルダーを作成しておく必要があります(ここでは C:\AGtest フォルダーを SERVER1 SERVER2SERVER3 上に作成)。これを行う理由は、後述の可用性グループ設定ウィザードでは、内部的にバックアップと復元機能を利用して初期同期(初回のデータベース複製)を行っているため、同じパスのフォルダーがないと、復元に失敗してしまうためです。なお、初期同期を手動で行う場合には、この作業は不要です。

5.次に、バックアップ データを保管するための共有フォルダーを作成しておき、SQL Server のサービス アカウントに対して共有アクセス許可NTFS アクセス許可(変更権限)を付与しておきます。共有フォルダーを作成するには、次のようにフォルダーのプロパティを開いて、[共有]タブから行います。

00018

00019

この共有フォルダーは、設定ウィザードでの初期同期の際に利用されます。

6.次に、可用性グループを設定するためのデータベースを作成します。[スタート]メニューから Management Studio を起動して、プライマリとして設定するサーバー(SERVER1)へ接続します。

00020

7.接続後、ツールバーの[新しいクエリ]ボタンをクリックして、クエリ エディターを起動して、次のようにデータベースを作成するステートメント(CREATE DATBASE)を記述/実行します。

-- データベースAGTestDB作成
CREATE DATABASE AGTestDB
 ON PRIMARY ( NAME 'AGTestDB'FILENAME 'C:\AGtest\AGTestDB.mdf' )
  LOG ON    ( NAME 'AGTestDB_log'FILENAME 'C:\AGtest\AGTestDB.ldf' )
go
-- テーブルt1作成
USE AGTestDB
CREATE TABLE t1 (a int)
INSERT INTO t1 VALUES(1)
SELECT FROM t1
go

00021

このステートメントでは、AGTestDB という名前でデータベースを作成し、データ ファイル(.mdf)とログ ファイル(.ldf)は「C:\AGtest」フォルダーへ格納しています。データベースの作成後は、その中へ「t1」という名前のテーブルを作成して、データを1件(1)を INSERT しています。

8.次に、対象データベースの復旧モデルが「完全」であることを確認します。

復旧モデルを確認/変更するには、次のようにデータベース(AGTestDB)のプロパテを開いて、[オプション]ページの[復旧モデル]から行います。

00022

9.次に、対象データベースの完全バックアップを実行します。次のように BACKUP DATABASE ステートメントを記述して、完全バックアップを実行します。

-- DB 完全バックアップ実行
BACKUP DATABASE AGTestDB
 TO DISK='C:\AGtemp\AGTestDB.bak'

00023

可用性グループを設定するには、事前に最低 1回の完全バックアップを実行しておく必要があります。

10.次に、SQL Server 構成マネージャツールを利用して、AlwaysOn 可用性グループを有効化します。

AlwaysOn 可用性グループを有効化するには、次のように「SQL Server サービス」のプロパティを開いて、[AlwaysOn 高可用性]タブで「AlwaysOn 可用性グループを有効にする」をチェックします。

00024

なお、WSFC(Windows Server フェールオーバー クラスター)のノードでない場合には、このオプションはグレーアウトされていて、設定することができません。

設定後は、SQL Server サービスを再起動する必要があります。再起動を行うには、次のように「SQL Server サービス」を右クリックして、[再起動]をクリックします。

00025

この設定は、可用性グループを構成する全てのサーバー上SERVER1SERVER2SERVER3)で行っておく必要があります。

◆ 構成に応じた修正プログラムの適用

可用性グループに対しては、いくかの Windows の修正プログラムが提供されています。詳しくは、オンライン ブックの以下の場所に記載されていますが、ここでは代表的なものを紹介します。

AlwaysOn 可用性グループの前提条件、制限事項、および推奨事項
http://msdn.microsoft.com/ja-jp/library/ff878487

KB 2494036http://support.microsoft.com/kb/2494036) クォーラムの投票権(Vote)を持たないノード(NodeWeight=0 へ設定したノード)を作成できるようにする修正プログラム。DR(Disaster Recovery:災害復旧)目的のリモート サイトへ配置したノードに対して投票権を与えないようにするときに利用(詳しくは Step 2.11 の複数サブネットでの構成例のところで説明)

00026

KB 2616514http://support.microsoft.com/kb/2616514) クラスター ノード間での不要なレジストリ通知を送信するのを防ぐための修正プログラム

KB 2531907http://support.microsoft.com/kb/2531907) クラスターの構成テスト時に、WSFC クラスター内の一部のノードから利用できないディスクに対して誤って SCSI Device Vital Product Data(VPD)ストレージ テストを実行し、不合格になってしまった場合に対処するための修正プログラム

KB 2687741http://support.microsoft.com/kb/2687741) ローカル レプリカへのフェールオーバーのパフォーマンスを向上させるための修正プログラム

KB 976097http://support.microsoft.com/kb/976097) 可用性グループと SQL Server クラスター(FCI:フェールオーバー クラスター インスタンス)を組み合わせて利用する場合に、一部の WSFC ノードでしか利用できない非対称ストレージ共有ディスクを「フェールオーバー クラスター マネージャー」ツールから使用できるようにする修正プログラム(執筆時点では Windows Server 2008 R2 用のファイルは未提供)

KB 980915http://support.microsoft.com/kb/980915) IPsec を利用している環境で、接続の遅延が発生する可能性を防ぐための修正プログラム

KB 2578113http://support.microsoft.com/kb/2578113) IPv6 を利用している環境で、IP アドレスの WSFC フェールオーバーに 30秒かかってしまう問題に対処するための修正プログラム

KB 2582281http://support.microsoft.com/kb/2582281) WSFC クラスターとアプリケーション間にルーターがない場合に、フェールオーバーが遅くなる問題に対処するための修正プログラム(執筆時点では Windows Server 2008 R2 用のファイルは未提供)

以上で、前提条件の確認/設定が完了です。

◆ 可用性グループの設定(新しい可用性グループ ウィザードの実行)

次に、可用性グループを作成します(ウィザードが用意されているので、簡単に作成することができます)。ここでは、SERVER1 プライマリとして設定し、SERVER2 同期モードセカンダリSERVER3 非同期モードセカンダリとして、複製データベース(レプリカ)を作成するように設定します。

1.可用性グループ(可用性グループ)を作成するには、次のように Management Studio で[AlwaysOn 高可用性]フォルダーを右クリックして、[新しい可用性グループ ウィザード]をクリックします。

00027

これにより、[新しい可用性グループ]ウィザードが起動するので、[次へ]ボタンをクリックします。

2.次の[可用性グループ名の指定]ページでは、[可用性グループ名]へ任意の名前を入力(AG1 など)して、[次へ]ボタンをクリックします。

00028

3.次の[データベースの選択]ページでは、対象としたいデータベースを選択(前の手順で作成した AGTestDB を選択)して、[次へ]ボタンをクリックします。

00029

4.次の[レプリカの指定]ページでは、[レプリカの追加]ボタンをクリックして、追加したいセカンダリへ接続します。セカンダリは、1つずつ追加する必要があるので、まずは「SERVER2」を追加します。

00030

5.追加後、もう一度[レプリカの追加]ボタンをクリックして、「SERVER3」を追加します。

00031

6.次に、SERVER1 SERVER2 の[自動フェールオーバー]をチェックします。

00032

これにより、[同期コミット]も自動的にチェックされて、SERVER1 SERVER2 自動フェールオーバーが可能な同期モードへ設定することができます。SERVER3 に関しては、[同期コミット]のチェックを外しておくことで、非同期モードへ設定することができます。

Note: 自動フェールオーバーへ設定できるセカンダリは 1台まで、同期モードは 2台まで
可用性グループでは、「自動フェールオーバー」(同期モード)へ設定できるセカンダリの台数は 1台まで、同期モードへ設定できるセカンダリの台数は 2台まで(1台を自動フェールオーバー、もう1台を手動フェールオーバーに設定するか、2台とも手動フェールオーバーへ設定)という制限があります。また、セカンダリの台数は全部で 4台までという制限があるので、セカンダリが 4台の場合は、2台までが同期モードへ設定でき、残りの 2台は非同期モードへ設定することになります。次の画面は、4台のセカンダリを追加している場合の設定例です。
00033

次に、[読み取り可能なセカンダリ]で「はい」を選択します。

00034

これで、セカンダリに対しても読み取りアクセスができるようになります。

7.次に、[エンドポイント]タブを開きます。

00035

このタブでは、可用性グループの内部的な通信で利用されるエンドポイントの設定を確認/変更することができます。既定では、hadr_endpoint という名前のエンドポイントが TCP 5022 ポート番号を利用するように作成され、暗号化がオンに設定されています。

8.次に、[リスナー]タブを開きます。このタブでは、リスナーを作成することができます(リスナーは、仮想サーバー名仮想 IP アドレスになるもので、クライアントからの接続時に利用されるサーバー名(SQL Server の名前)になります)。

00036

可用性グループ リスナーの作成]を選択して、[リスナーの DNS 名]へ任意の名前(AG1_Listener など)、[ポート]へは任意のポート番号(SQL Server の既定のポート番号は 1433)、[ネットワーク モード]で「静的 IP」を選択して、[追加]ボタンをクリックします。

9.IP アドレスの追加]ダイアログが表示されたら、任意の静的な IP アドレス(画面は 192.168.1.112)を入力して、[OK]ボタンをクリックします。

00037

レプリカの指定]ページへ戻ったら、[次へ]ボタンをクリックして、次のページへ進みます。

10.次の[最初のデータの同期を選択]ページでは、「完全」を選択して、[すべてのレプリカからアクセス可能な共有ネットワーク場所を指定]で[参照]ボタンをクリックし、事前に作成した共有フォルダー\\SERVER1\AGtemp)を選択して、[OK]ボタンをクリックします。

00038

00039

すべてのレプリカからアクセス可能な共有ネットワーク場所を指定]に、選択した共有フォルダーへのパス(\\SERVER1\AGtemp)が入力されたことを確認して、[次へ]ボタンをクリックします。

11.次の[検証]ページでは、可用性グループを構成できるかどうかの検証が行われます。

00040

すべての[結果]が「成功」と表示されていることを確認して、[次へ]ボタンをクリックします。

Note: データベースを格納するフォルダーを作成していない場合のエラー
データベースを格納するフォルダーを、プライマリ上と全く同じパスで、セカンダリ上に作成していない場合は、次のように検証エラーが発生します。
00041
前述したように、初期同期(初回のデータベース複製時)には、内部的にバックアップと復元機能が利用されているため、プライマリとセカンダリ上で同じパスのフォルダーがない場合には、復元が失敗してしまうため、事前に検証エラーを発生してくれています。

次の[概要]ページでは、内容を確認して、[完了]ボタンをクリックします。

00042

これにより、可用性グループの構築が始まります。

12.すべての構築が完了すると、次のように結果が表示されます。

00043

すべての[結果]が「成功」となっている場合は、可用性グループの構築が成功です。

Note: 「WSFC クォーラム投票の構成を検証しています」で警告が表示される場合
3台以上のノードで可用性グループを構成する場合に、3台目以降のノードに投票権がある場合(NodeWeight が に設定されている場合。既定値は 1)は、次のように「WSFC クォーラム投票の構成を検証しています」で警告が表示されます。
00044
DR(Disaster Recovery:災害復旧)を考慮しない、ローカル環境のみの可用性グループ(同じサブネット内で可用性グループ)の構成で、3台または 5台のノード(奇数のノード数)で、WSFC のクォーラム設定が「ノード マジョリティ」の場合には、この警告を無視して大丈夫です。
DR を考慮したリモート サイトへ別ノードを配置する場合(複数サブネットで可用性グループを構成する場合)には、リモート サイトへ配置したノードのクォーラムの投票権を取っておくNodeWeight を へ設定する)ことを推奨します。こうすることで、リモート サイトのノードの障害が、プライマリ サイト(メインのノードを配置している場所)へ影響を与えることを防ぐことができます。NodeWeight を へ設定するには、前出の Windows の修正プログラム「KB 2494036」を適用しておく必要があります(NodeWeight の設定方法は、「Step 2.11 複数サブネットの場合の構成例」で説明します)。また、3台のノードでこの構成を構築する場合(ローカルが 2台、リモートが 1台)の場合には、リモート ノードの投票権を 0 にすることで、ローカルの 2個の投票権のみとなってしまい、これでは障害対策にならない(1台のノードの障害でクラスターが停止してしまう)ので、クォーラム構成を「ノードおよびファイル共有マジョリティ」へ変更するなどの対処も必要になります(これについても Step 2.11 で説明します)。
00045
Note: スクリプト生成機能。CREATE AVAILABILITY GROUP ステートメント
ウィザードの[概要]ページでは、次のように右下の[スクリプト]ボタンをクリックして、ウィザードで設定した項目をスクリプト化することも可能です。
00046
00047

13.可用性グループの構築が完了したら、[オブジェクト エクスプローラー]の[可用性グループ]を展開して、作成した 可用性グループ(AG1)が表示されることを確認します。

00048

14.次に、[表示]メニューの[オブジェクト エクスプローラーの詳細]をクリックして、「オブジェクト エクスプローラーの詳細」ウィンドウを表示します。

00049

15.次に、オブジェクト エクスプローラーで[可用性レプリカ]フォルダーをクリックします。これにより、次のようにセカンダリとの接続状態同期の状態(同期済みかどうかなど)を確認することができます。

00050

16.次に、作成した 可用性グループ(AG1)を右クリックして、[プロパティ]をクリックします。

00051

このダイアログでは、同期モードや自動フェールオーバーの設定などを確認/変更することが可能です。

◆ ダッシュボードで監視

可用性グループでは、ダッシュボード機能が提供されているので、現在の状態をグラフィカルに監視することも可能です。

1.ダッシュボードを利用するには、作成した 可用性グループ(AG1)を右クリックして、[ダッシュボードの表示]をクリックします。

00052

2.ダッシュボードは、次のように表示されます。

00053

可用性グループに問題がある場合には、次のように[問題点]にリンクが表示されて、詳細を確認することができます。

00054

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

事例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ノート)