松本美穂と松本崇博が執筆した SQL Server 2012 自習書シリーズの「新機能編 No.2 AlwaysOn による可用性の向上」の HTML 版です。 日本マイクロソフトさんの Web サイトで Word または PDF 形式でダウンロードできますが、今回、HTML 版として公開する許可をいただきましたので、ここに掲載いたします。[2014年12月26日]
この Step では、次の構成で可用性グループを設定します。
SERVER1、SERVER2、SERVER3 の 3台で可用性グループを構成します(SERVER1 をプライマリとして、SERVER2 は同期モードのセカンダリ、SERVER3 は非同期モードのセカンダリとして作成します)。すべてのサーバーは同じ Active Directory ドメイン(example.com)へ参加させ、WSFC(Windows Server フェールオーバー クラスター)のノードとして設定しています。各ノードには、それぞれのローカル ドライブへ SQL Server 2012 Enterprise エディションのデータベース エンジンをインストールしています(SQL Server クラスターとしてはインストールしていません)。
データベースを格納するためのフォルダーは「C:\AGtest」という名前で各ノード上に作成し、初期同期に利用される共有フォルダーは「C:\AGtemp」という名前で SERVER1 上に作成しています。以降では、前述の前提条件も確認しながら、実際に可用性グループを設定してみましょう。
1.まずは、可用性グループを構成する各サーバー(SERVER1、SERVER2、SERVER3)の前提条件を確認しておきます。
・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 サービスのプロパティを開いて、[ログオン]タブから行います。
[このアカウント]を選択して、[参照]ボタンをクリックすれば、任意のドメイン ユーザーを選択することができます(画面は sqlservice という名前のユーザーを選択)。[パスワード]には、そのユーザーへ設定したパスワードを入力して、[OK]ボタンをクリックします。以上でサービス アカウントの変更が完了です(SQL Server サービスを再起動することで、変更したアカウントが有効化されます)。
以上の操作を、可用性グループを構成する全てのサーバー上(SERVER1、SERVER2、SERVER3)で行います。可用性グループでは、全てのサーバー上で同一の Active Directory ドメイン ユーザーを利用している必要があります。
3.次に、データベースを格納するフォルダーに対して、SQL Server のサービス アカウントへ NTFS アクセス許可(変更権限)を付与します。これを設定するには、Windows エクスプローラーから次のように操作します。
ここでは、「C:\AGtest」という名前のフォルダーのプロパティを開いて、[セキュリティ]タブでサービス アカウント(画面はsqlservice)を追加して、このアカウントに対して変更権限を付与しています。後述の手順で、このフォルダーに対してデータベース(.mdf/.ldf ファイル)を作成します。
4.次に、データベースを格納するフォルダーを、すべてのサーバー上に同じパスで作成しておきます。
可用性グループを構成するには、すべてのサーバー上で、同じパスのフォルダーを作成しておく必要があります(ここでは C:\AGtest フォルダーを SERVER1 と SERVER2、SERVER3 上に作成)。これを行う理由は、後述の可用性グループ設定ウィザードでは、内部的にバックアップと復元機能を利用して初期同期(初回のデータベース複製)を行っているため、同じパスのフォルダーがないと、復元に失敗してしまうためです。なお、初期同期を手動で行う場合には、この作業は不要です。
5.次に、バックアップ データを保管するための共有フォルダーを作成しておき、SQL Server のサービス アカウントに対して共有アクセス許可と NTFS アクセス許可(変更権限)を付与しておきます。共有フォルダーを作成するには、次のようにフォルダーのプロパティを開いて、[共有]タブから行います。
この共有フォルダーは、設定ウィザードでの初期同期の際に利用されます。
6.次に、可用性グループを設定するためのデータベースを作成します。[スタート]メニューから Management Studio を起動して、プライマリとして設定するサーバー(SERVER1)へ接続します。
7.接続後、ツールバーの[新しいクエリ]ボタンをクリックして、クエリ エディターを起動して、次のようにデータベースを作成するステートメント(CREATE DATBASE)を記述/実行します。
このステートメントでは、AGTestDB という名前でデータベースを作成し、データ ファイル(.mdf)とログ ファイル(.ldf)は「C:\AGtest」フォルダーへ格納しています。データベースの作成後は、その中へ「t1」という名前のテーブルを作成して、データを1件(1)を INSERT しています。
8.次に、対象データベースの復旧モデルが「完全」であることを確認します。
復旧モデルを確認/変更するには、次のようにデータベース(AGTestDB)のプロパテを開いて、[オプション]ページの[復旧モデル]から行います。
9.次に、対象データベースの完全バックアップを実行します。次のように BACKUP DATABASE ステートメントを記述して、完全バックアップを実行します。
可用性グループを設定するには、事前に最低 1回の完全バックアップを実行しておく必要があります。
10.次に、SQL Server 構成マネージャー ツールを利用して、AlwaysOn 可用性グループを有効化します。
AlwaysOn 可用性グループを有効化するには、次のように「SQL Server サービス」のプロパティを開いて、[AlwaysOn 高可用性]タブで「AlwaysOn 可用性グループを有効にする」をチェックします。
なお、WSFC(Windows Server フェールオーバー クラスター)のノードでない場合には、このオプションはグレーアウトされていて、設定することができません。
設定後は、SQL Server サービスを再起動する必要があります。再起動を行うには、次のように「SQL Server サービス」を右クリックして、[再起動]をクリックします。
この設定は、可用性グループを構成する全てのサーバー上(SERVER1、SERVER2、SERVER3)で行っておく必要があります。
可用性グループに対しては、いくかの Windows の修正プログラムが提供されています。詳しくは、オンライン ブックの以下の場所に記載されていますが、ここでは代表的なものを紹介します。
AlwaysOn 可用性グループの前提条件、制限事項、および推奨事項
http://msdn.microsoft.com/ja-jp/library/ff878487
KB 2494036(http://support.microsoft.com/kb/2494036) クォーラムの投票権(Vote)を持たないノード(NodeWeight=0 へ設定したノード)を作成できるようにする修正プログラム。DR(Disaster Recovery:災害復旧)目的のリモート サイトへ配置したノードに対して投票権を与えないようにするときに利用(詳しくは Step 2.11 の複数サブネットでの構成例のところで説明)
KB 2616514(http://support.microsoft.com/kb/2616514) クラスター ノード間での不要なレジストリ通知を送信するのを防ぐための修正プログラム
KB 2531907(http://support.microsoft.com/kb/2531907) クラスターの構成テスト時に、WSFC クラスター内の一部のノードから利用できないディスクに対して誤って SCSI Device Vital Product Data(VPD)ストレージ テストを実行し、不合格になってしまった場合に対処するための修正プログラム
KB 2687741(http://support.microsoft.com/kb/2687741) ローカル レプリカへのフェールオーバーのパフォーマンスを向上させるための修正プログラム
KB 976097(http://support.microsoft.com/kb/976097) 可用性グループと SQL Server クラスター(FCI:フェールオーバー クラスター インスタンス)を組み合わせて利用する場合に、一部の WSFC ノードでしか利用できない非対称ストレージ共有ディスクを「フェールオーバー クラスター マネージャー」ツールから使用できるようにする修正プログラム(執筆時点では Windows Server 2008 R2 用のファイルは未提供)
KB 980915(http://support.microsoft.com/kb/980915) IPsec を利用している環境で、接続の遅延が発生する可能性を防ぐための修正プログラム
KB 2578113(http://support.microsoft.com/kb/2578113) IPv6 を利用している環境で、IP アドレスの WSFC フェールオーバーに 30秒かかってしまう問題に対処するための修正プログラム
KB 2582281(http://support.microsoft.com/kb/2582281) WSFC クラスターとアプリケーション間にルーターがない場合に、フェールオーバーが遅くなる問題に対処するための修正プログラム(執筆時点では Windows Server 2008 R2 用のファイルは未提供)
以上で、前提条件の確認/設定が完了です。
次に、可用性グループを作成します(ウィザードが用意されているので、簡単に作成することができます)。ここでは、SERVER1 をプライマリとして設定し、SERVER2 は同期モードのセカンダリ、SERVER3 は非同期モードのセカンダリとして、複製データベース(レプリカ)を作成するように設定します。
1.可用性グループ(可用性グループ)を作成するには、次のように Management Studio で[AlwaysOn 高可用性]フォルダーを右クリックして、[新しい可用性グループ ウィザード]をクリックします。
これにより、[新しい可用性グループ]ウィザードが起動するので、[次へ]ボタンをクリックします。
2.次の[可用性グループ名の指定]ページでは、[可用性グループ名]へ任意の名前を入力(AG1 など)して、[次へ]ボタンをクリックします。
3.次の[データベースの選択]ページでは、対象としたいデータベースを選択(前の手順で作成した AGTestDB を選択)して、[次へ]ボタンをクリックします。
4.次の[レプリカの指定]ページでは、[レプリカの追加]ボタンをクリックして、追加したいセカンダリへ接続します。セカンダリは、1つずつ追加する必要があるので、まずは「SERVER2」を追加します。
5.追加後、もう一度[レプリカの追加]ボタンをクリックして、「SERVER3」を追加します。
6.次に、SERVER1 と SERVER2 の[自動フェールオーバー]をチェックします。
これにより、[同期コミット]も自動的にチェックされて、SERVER1 と SERVER2 を自動フェールオーバーが可能な同期モードへ設定することができます。SERVER3 に関しては、[同期コミット]のチェックを外しておくことで、非同期モードへ設定することができます。
次に、[読み取り可能なセカンダリ]で「はい」を選択します。
これで、セカンダリに対しても読み取りアクセスができるようになります。
7.次に、[エンドポイント]タブを開きます。
このタブでは、可用性グループの内部的な通信で利用されるエンドポイントの設定を確認/変更することができます。既定では、hadr_endpoint という名前のエンドポイントが TCP 5022 ポート番号を利用するように作成され、暗号化がオンに設定されています。
8.次に、[リスナー]タブを開きます。このタブでは、リスナーを作成することができます(リスナーは、仮想サーバー名/仮想 IP アドレスになるもので、クライアントからの接続時に利用されるサーバー名(SQL Server の名前)になります)。
[可用性グループ リスナーの作成]を選択して、[リスナーの DNS 名]へ任意の名前(AG1_Listener など)、[ポート]へは任意のポート番号(SQL Server の既定のポート番号は 1433)、[ネットワーク モード]で「静的 IP」を選択して、[追加]ボタンをクリックします。
9.[IP アドレスの追加]ダイアログが表示されたら、任意の静的な IP アドレス(画面は 192.168.1.112)を入力して、[OK]ボタンをクリックします。
[レプリカの指定]ページへ戻ったら、[次へ]ボタンをクリックして、次のページへ進みます。
10.次の[最初のデータの同期を選択]ページでは、「完全」を選択して、[すべてのレプリカからアクセス可能な共有ネットワーク場所を指定]で[参照]ボタンをクリックし、事前に作成した共有フォルダー(\\SERVER1\AGtemp)を選択して、[OK]ボタンをクリックします。
[すべてのレプリカからアクセス可能な共有ネットワーク場所を指定]に、選択した共有フォルダーへのパス(\\SERVER1\AGtemp)が入力されたことを確認して、[次へ]ボタンをクリックします。
11.次の[検証]ページでは、可用性グループを構成できるかどうかの検証が行われます。
すべての[結果]が「成功」と表示されていることを確認して、[次へ]ボタンをクリックします。
次の[概要]ページでは、内容を確認して、[完了]ボタンをクリックします。
これにより、可用性グループの構築が始まります。
12.すべての構築が完了すると、次のように結果が表示されます。
すべての[結果]が「成功」となっている場合は、可用性グループの構築が成功です。
13.可用性グループの構築が完了したら、[オブジェクト エクスプローラー]の[可用性グループ]を展開して、作成した 可用性グループ(AG1)が表示されることを確認します。
14.次に、[表示]メニューの[オブジェクト エクスプローラーの詳細]をクリックして、「オブジェクト エクスプローラーの詳細」ウィンドウを表示します。
15.次に、オブジェクト エクスプローラーで[可用性レプリカ]フォルダーをクリックします。これにより、次のようにセカンダリとの接続状態や同期の状態(同期済みかどうかなど)を確認することができます。
16.次に、作成した 可用性グループ(AG1)を右クリックして、[プロパティ]をクリックします。
このダイアログでは、同期モードや自動フェールオーバーの設定などを確認/変更することが可能です。
可用性グループでは、ダッシュボード機能が提供されているので、現在の状態をグラフィカルに監視することも可能です。
1.ダッシュボードを利用するには、作成した 可用性グループ(AG1)を右クリックして、[ダッシュボードの表示]をクリックします。
2.ダッシュボードは、次のように表示されます。
可用性グループに問題がある場合には、次のように[問題点]にリンクが表示されて、詳細を確認することができます。
第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 へ参加