Archive for 11月, 2010
Denali で 2 ノードクラスターを構築
Denali で 2 ノードクラスターを構築する手順をまとめてみたいと思います。
WSFC は構築をしてあり、MSDTC のリソースは作成済みです。
■1 ノード目のインストール
事前準備は終わっていますのでセットアップを起動してクラスターのインストールを行います。
Denali のクラスターのインストールは一台ずつ実施をします。
まずは最初のノードのインストールから。
- セットアップを起動すると .NET Framework 3.5 のインストールを確認されますので、[OK] をクリックしてインストールを行います。
# .NET Framework 4.0 も合わせてインストールがされるようです。 - [Installation] から [New SQL Server failover Cluster installation] をクリックします。
- [OK] をクリックします。
- [Next] をクリックします。
CTP1 では、Enterprise Evaluation を使用してクラスターを構築します。 - [I accept the license terms.] を有効にして、[Next] をクリックします。
- [Install] をクリックします。
- セットアップルールの検証が開始されます。問題が無ければ [Next] をクリックします。
以下の画面では、[Microsoft Cluster Serivce (MSCS) Cluste rverification warnings] が発生しています。
この警告ですが、WSFC のクラスタの検証レポートで警告が発生していたために発生しています。私がインストールする場合、インストール時にログオンしているドメインアカウントには最低限の権限 (Domain Users) しか与えていないので、コンピューターアカウントの作成に関してのチェックで警告となります。
インストール時にログオンしているユーザーにはコンピューターアカウント作成のための権限は委任していませんが、初期状態の 10 台までの作成で対応ができますので、警告は無視ししています。クラスターの検証レポートが以下の状態であれば、SQL Server のインストール検証では警告は発生しません。
また、SQL Server で使用するディスクに関してもインストーラーを実行するノードに移動をしておきます。
[使用可能記憶域] に属している状態ではインストールには使えませんので注意が必要です。
インストーラーを実行しているノードで使用可能な共有ディスクがない場合はエラーになります。 - インストールする機能を選択し、[Next] をクリックします。
今回は、SQL Server のデータベースエンジン関連に必要な最低限の機能をインストールしています。 - インスタンスの情報を入力して、[Next] をクリックします。
今回は名前付きインスタンスを使用しています。 - [Next] をクリックします。
- SQL Server クラスターのグループ名を設定し、[Next] をクリックします。
グループ名はコンボボックスになっているのでグループ名を変更することが可能です。
共有ディスクが [使用可能記憶域] に属している場合は、[Next] をクリックすることができませんので一度ほかのグループに移動をしておく必要があります。 - チェックボックスで使用するディスクを選択し、[Next] をクリックします。
- ネットワークを設定して [Next] をクリックします。
今回は、DHCP のままでインストールをしてみたいと思います。 - クラスターで使用するセキュリティ設定を選択して、[Next] をクリックします。
今回は、[User service SIDs] を選択しています。 - サービスアカウントと照合順序を設定して、[Next] をクリックします。
- セキュリティ設定、データディレクトリ、FILESTREAM の設定をして、[Next] をクリックします。
- エラー報告をして [Next] をクリックします。
- [Next] をクリックします。
- [Install] をクリックしてインストールを開始します。
- [Close] をクリックしてインストールを完了します。
これで 1 ノード目のインストールは完了です。
■2 ノード目のインストール
続いて 2 ノード目のインストールを行います。
- 2 ノード目でセットアップを実行します。
- [OK] をクリックします。
- [Installation] から、[Add node to a SQL Server failover cluster] をクリックします。
- [OK] をクリックします。
- [Next] をクリックします。
- [I accept the license terms.] を有効にして、[Next] をクリックします。
- [Install] をクリックします。
- [Next] をクリックします。
- ノードを追加するインスタンスを選択して、[Next] をクリックします。
- [Next] をクリックします。
- サービスアカウントのパスワードを入力して、[Next] をクリックします。
- [Next] をクリックします。
- [Next] をクリックします。
- [Install] をクリックして、インストールを開始します。
- [Close] をクリックしてインストールを完了します。
以上でクラスターのインストールは完了です。
クラスターインスタンスのインストールは今までのバージョンと変わらないですね。
Denali では高可用性構成として [HADR] という構成があります。
この構成に関しては次の投稿でまとめてみたいと思います。
SQL Live Monitor と PAL Tool を使用したモニタリングとレポーティング
今日は、CodePlex で提供されている [SQL Live Monitor] と [Performance Analysis of Logs (PAL) Tool] を使用した、SQL Server のモニタリングとレポーティングについてまとめてみたいと思います。
■SQL Live Monitor
SQL Live Monitor を使用すると、SQL Server の現状の稼働状況を確認することができます。
[SQL Server] の欄に情報を取得する SQL Server 名 (既定のインスタンスの場合はサーバー名、名前付きインスタンスの場合はサーバー名インスタンス名) を入力して、[Start] をクリックすることで情報が取得できます。
パフォーマンスチューニングをするにあたって、いくつかの項目は手動で情報を取得する必要がありますが現状の状態を把握するのにはとても便利なツールだと思います。
データキャッシュ / プロシージャキャッシュのメモリ使用状況は Page Life Expectancy といった定番の情報をリアルタイムに見やすく確認することが可能です。
Cache Hit Ratio 系は SQL Server のサービスが最後に起動してからの情報なのであまり参考にならない可能性がありますが…。
矢印でデータの流れがわかるようになっており、[>->->] であれば、左の項目から右の項目に、[<-<-<-] であれば右の項目から左の項目に対してデータが流れていることになります。
たとえば、[Checkpoints/Sec] ですが、チェックポイントが発生するとダーティーページがデータファイルに対してフラッシュされます。
そのため、[SQL Memory] から [Disk Storage] に対してデータが流れることになります。この矢印の方向を理解しておくと SQL Server のデータの流れが分かるかと思います。
情報はパフォーマンスモニタから取得されており、以下のような項目を取得し、画面に表示を行っています。
DiskIdleTime = LogicalDisk% Idle Time TransactionsSec = DatabasesTransactions/sec CPUPercent = Processor% Processor Time CompilesSec = SQL StatisticsSQL Compilations/sec TargetMemory = Memory ManagerTarget Server Memory (KB) BufferCacheSize = Buffer ManagerDatabase pages LocksPerSecond = LocksLock Requests/sec UserConnections = General StatisticsUser Connections ProcedureCacheSize = Plan CacheCache PagesSQL Plans MemPagesSec = MemoryPages/sec ProcQueueLength = SystemProcessor Queue Length WorkTables = Access MethodsWorktables Created/sec msdtc = Exec StatisticsDistributed QueryExecs in progress |
手動でパフォーマンス監視をしたいときはこの項目をベースに必要となる項目を追加していくと楽かもしれないですね。
Live Monitor でリンクになっている箇所は情報をブレークダウンすることができます。
SQL Live Monitor は現在の使用状況を確認するだけでなく、ログを取得する機能を持っています。
[Option] ボタンを押すことで、ログ取得の設定をすることが可能です。
デフォルトではログ取得は有効になっていないのですが、
[Log Data for offline analysis (CSV)]
[Log Blocked Process Details (CSV)]
[Log Data for PAL Analysis]
を有効にすることで、ログを取得することが可能になります。ログですが、SQL Live Monitor を実行したフォルダに取得されます。
# Blocked Process はうまく取得できなかったのですが…。
[PAL Analysis] は PAL Tool で解析をするための取得データになり、このデータはパフォーマンスモニタを使用して取得されています。
設定を有効にすると、[mscounters] というユーザー定義のデータコレクタ セットが作成され、このコレクタ セットで PAL Tool で解析するためのパフォーマンス情報が取得されます。
この PAL Tool 用のデータですが以下の情報が取得されています。
Network Interface(*)Bytes Total/sec SystemProcessor Queue Length Processor(*)% Processor Time PhysicalDisk(*)% Idle Time LogicalDisk(*)% Idle Time MemoryFree System Page Table Entries SystemContext Switches/sec Process(*)Private Bytes MemorySystem Cache Resident Bytes Paging File(*)% Usage Process(sqlservr)% Privileged Time SQL StatisticsBatch Requests/sec Access MethodsForwarded Records/sec Buffer ManagerBuffer cache hit ratio General StatisticsLogins/sec LatchesLatch Waits/sec Memory ManagerMemory Grants Pending SQL StatisticsSQL Compilations/sec Locks(_Total)Lock Requests/sec |
このログを使用して PAL Tool でレポートを作成することが可能となります。
■Performance Analysis of Logs (PAL) Tool
PAL Tool はパフォーマンスモニタで取得した情報を解析しレポートを作成することができるツールになります。
# PowerShell 2.0 と .NET Framework 3.5 の Chart Control が必要になります。
Live Monitor では、PAL Tool の [Microsoft SQL Server 2005/2008] のテンプレートに合わせた情報を取得していますので、取得したデータをすぐに PAL Tool にかけてレポートを作成することが可能です。
レポートの作り方は簡単で、[Counter Log] から Live Monitor で取得したパフォーマンスモニタのログデータを選択し、
[Threshold File] から、[SQL Server 2005/2008] をテンプレートとして設定をし、
[Execute] から [Finish] をクリックすることでレポートを作成することが可能です。
そうすると裏で PowerShell が実行されレポートが作成されます。
PAL Tool の実行が完了するとこのようなレポートが生成されます。
# デフォルトだと PAL Tool を実行したユーザーの [ドキュメントPAL Reports] に出力されます。
CPU の使用率の警告やメモリの空きの警告など基本的な情報を出力してくれるほかに SQL Server 固有のレポートが生成されます。
たとえば、Page Life Expectancy は 300 以上を推移しているのが良好な状態というのが定番になっていますが、そのレポートに関しても作成がされています。
# 300 を超えていない場合は赤くなって警告のレポートが作成されます。
こちらは CPU の使用率のグラフになるのですが、80%~100% は注意が必要な範囲 (Critical) なので赤くなっているのが確認できます。
以下のグラフでは瞬間的に Clitical の領域に達していることが確認できます。
ただし、別のグラフ (Processor の Queue) では Warning / Critical には達していませんので瞬間的な CPU の負荷であって、CPU のスペックの限界までは達していない (処理能力には余裕がある) 状態であると考察することができます。
Live Monitor で取得したデータを基に SQL Server の状態と、サーバーの基本的な状態をレポートとして確認をできますので、複数のグラフを見比べサーバーの状態を確認することが可能となります。
パフォーマンス チューニングではベースラインとして現状を確認することが重要になりますので、これらのツールを組み合わせると一からベースライン情報の取得を考えなくてもよいので楽になるかと思います。
グラフをどう読み解いていくかが難しいところではあるのですが、最初の一歩としては Warning / Critical となっている箇所を注視して、他のグラフと重ね合わせていくとよいのかな~と。
Microsoft SQL Server code-named ‘Denali’ CTP1 の提供開始
本日 [Microsoft SQL Server code-named ‘Denali’ CTP1] の提供が開始されました。
Code Name Denali ですが、次期 SQL Server の CTP 版になります。
# SQL Server 2011 になるのかなと。
SSMS が VIsutal Studio 2010 ベース (.NET Framework 4.0 もインストールされます) に変更されています。
SSMS が刷新され、レポートが Word 形式でもエクスポートできるようになりました。
PDF のレポートに関してもフォントが埋め込まれるようになったみたいですね。
Availability Groups という機能が増えているようなのですが、これは WSFC の必要があるようですね。
日本語の照合順序に関しては、[Japanese_XJIS_100] が最新のようですね。
まだ、ヘルプが見れないので新規にどのような機能が入ったのかは調べられていないのですがクラスタに関しては今週中に構築してみたいと思います。
Microsoft SQL Server code-named 'Denali' CTP1 の提供開始
本日 [Microsoft SQL Server code-named ‘Denali’ CTP1] の提供が開始されました。
Code Name Denali ですが、次期 SQL Server の CTP 版になります。
# SQL Server 2011 になるのかなと。
SSMS が VIsutal Studio 2010 ベース (.NET Framework 4.0 もインストールされます) に変更されています。
SSMS が刷新され、レポートが Word 形式でもエクスポートできるようになりました。
PDF のレポートに関してもフォントが埋め込まれるようになったみたいですね。
Availability Groups という機能が増えているようなのですが、これは WSFC の必要があるようですね。
日本語の照合順序に関しては、[Japanese_XJIS_100] が最新のようですね。
まだ、ヘルプが見れないので新規にどのような機能が入ったのかは調べられていないのですがクラスタに関しては今週中に構築してみたいと思います。
SSMS を RemoteApp で使ってみる
SQL Server の管理をするために使用する SQL Server Management Studio (SSMS) ですが、サーバーにはインストールをしているケースが多いと思いますが、保守用のクライアントには入っていないことがあるかもしれないです。
そんな時に便利なのが RemoteApp。
正確に言うと以下の更新プログラムをインストールすることで使用できるようになる、アプリケーションのコンソールリダイレクト機能を使用します。
# Windows 7 / 2008 / 2008 R2 は更新プログラムをインストールしないでも使用できます。
RemoteApp? を有効にするための WindowsR XP SP3 用の更新プログラム
RemoteApp? を有効にするための WindowsR Vista SP1 以降用の更新プログラム
残念ながら Windows Server 2003 用はないのですよね…。
これが使用できるのは、Windows XP SP3 / Windows Vista SP1 以降 / Windows 7 / Windows Server 2008 / Windows Server 2008 R2 上で実行されているプログラムをクライアントで使用したいときに限定がされます。
XP / Vista の初期で使用されている、RDP 6.x 系でも使用できます。
最新の RDP 7.0 を使用したい場合は以下の更新プログラムをインストールします。
Windows XP 用の更新プログラム (KB969084)
Windows Vista 用の更新プログラム (KB969084)
有効にするための方法はいろいろとあるのですが一番単純なのは、起動したいアプリケーションがインストールされているサーバー (今回は SQL Server をインストールしているサーバー) で以下のレジストリを 1 にすることだと思います。
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionTerminal ServerTsAppAllowList]
[fDisabledAllowList] (REG_DWORD)
デフォルトは [0] になっていますのでこれを [1] に変更します。
# 再起動は不要です。
これでサーバーで起動できるアプリケーションをリモートデスクトップ経由でリダイレクトできるようになります。
サーバーのアプリケーションを利用したい端末で以下の内容を記載した [.rdp] という拡張子のファイルを作成します。
IP アドレスを記載している部分は接続したいサーバーの IP アドレスに変更してください。
# 最後の行は改行されてしまっていますが一行で記載します。
full address:s:192.168.0.1 |
リモートデスクトップを使用していますので、サーバー側でリモートデスクトップを有効にする必要もあります。
# 3389 はリモートデスクトップのポートですので。
上の画像では、NLA (ネットワーク レベル認証) で設定をしていますが、NLA でない設定でも問題はありません。
後は作成した RDP ファイルを実行して、リモートデスクトップ接続をすれば RemoteApp で SSMS を起動することが可能です。
SSMS が起動してきているのですが、[(リモート)] となっているのが確認できます。
これはリモートデスクトップ経由でアプリケーションが実行されていることになります。
タスクマネージャーから確認をしても同様に (リモート) となっています。
リモートデスクトップで接続ができる環境にインストールされているプログラムを透過的に利用したい場合は結構便利だと思います。
私は、XP の環境で Hyper-V マネージャーを使用したい場合にもこの方法を使用して使っていたりします。
# UAC が働くので、一度ダイアログが表示されてしまいますが。
Resource データベースについて
先日、
@IT などを運営されている
アイティメディア株式会社様
の会議スペースをお借りして開催された、SQL Server の勉強会に参加をしてきました。
その勉強会の中で SQL Server の [Resource] データベースについて質問を受けたので、このデータベースについて少し書いてみたいと思います。
Resource データベースに関しては、Books Online で以下のように記載されています。
Resource データベースは、読み取り専用のデータベースで、SQL Server に含まれるすべてのシステム オブジェクトがこれに格納されます。 |
各データベースのシステムビューやシステムストアドプロシージャーなどで使用されている、[sys.xxxx] 関連の情報は [Resource] データベースの内容を透過的に参照している形になります。
# Resource データベースは SSMS (SQL Server Management Studio) には表示されません。
普段何気なく使用している、[sys.master_files] のようなシステムビューですが、これは [ビュー] と名前がついている用に実体ではなく、実表を参照しているものになります。
ではこの実体はどこに格納されているかというと実体は [master] データベースに保存されています。
試しに [sys.master_files] のビュー定義を確認してみたいと思います。
確認するためには、[SELECT OBJECT_DEFINITION(OBJECT_ID(‘sys.master_files’))] というように OBJECT_DEFINITION を使います。
CREATE VIEW sys.master_files AS |
ビューの元になるデータは [master.sys.sysbrickfiles] というテーブルになっています。
Resource データベースはこのようなシステムビューやシステムストアドプロシージャを格納し、master 上に格納されている情報を透過的に見せるために使用されています。
# 今回のベース表になっている、[master.sys.sysbrickfiles] は直接参照できないので。
この Resource データベースですが、以下の 2 つのファイルから構成されています。
- mssqlsystemresource.mdf
- mssqlsystemresource.ldf
通常、システムデータベースは
[C:Program FilesMicrosoft SQL ServerMSSQL10_50.<インスタンス ID>MSSQLDATA]
というディレクトリに格納されるのですが、リソースデータベースのファイルは、
[C:Program FilesMicrosoft SQL ServerMSSQL10_50.<インスタンス ID>MSSQLBinn]
に格納がされます。
インスタンスのプログラム扱いでファイルが格納されていますね。
この Resource データベースですが、バージョンがあり [SELECT SERVERPROPERTY(‘ResourceVersion’)] というクエリを実行することでバージョンを確認することができます。
このバージョンですが、SQL Server のバージョンと一致するようで、
- SQL Server 2008 R2 RTM : [10.50.1600]
- SQL Server 2008 R2 CU4 : [10.50.1746]
となります。
修正プログラムをインストールすると、Resource データベースのバージョンも更新されます。
Resouce データベースには実データではなく実データを見せるための定義が格納されているので、Books Online で
SQL Server では、Resource データベースをバックアップできません。 |
と書かれているのは、実データは含まれず定義のみが格納されており適切なバージョンの SQL Server をインストールすれば最適な状態になるからだと思います。
Resource データベースは SSMS に表示がされないので通常はどのような情報が格納されているのか見ることはできないのですが、実はデータベースのファイルをコピーしてアタッチすることで内容を確認することができます。
# mssqlsystemresource.mdf / ldf は読み取り専用で SQL Server 上で認識されているのでオンラインでもコピー可能です。
このエラーですが、[mssqlsystemresource] というデータベース名でアタッチをしようとしたために発生しています。
# Resource データベースですが内部的には、[mssqlsystemresource] で認識されているためだと思います。
[次の名前でアタッチ] のデータベースの名前を変更することで Resource データベースをアタッチすることが可能です。
今回は、Resource というデータベース名でアタッチしています。
アタッチをすることで Resource データベースの内容を直接確認することが可能になります。
通常、[sys.xxxxx] はシステム ビューやシステム ストアド プロシージャーとして認識されているのですが、アタッチした Resource データベースではユーザービュー / ユーザー ストアド プロシージャーとして認識がされます。
# システムビューやシステム ストアド プロシージャーとしても認識はされるのですが。
システム ビュー / システム ストアド プロシージャーの状態では、スクリプト化ができないため [OBJECT_DEFINITION] を介して定義を確認していました。
ユーザーオブジェクトになっていればスクリプト化が可能なため、[sys.xxxx] といったものも簡単に内容を確認できます。
Resource データベースは SQL Server 2005 になってから搭載されたものなのですが、通常使用している中ではあまり意識はしないので、どんなデータが入っているのかイメージがしにくいのですよね…。
# 私は、sys. 系の定義が入っているだけだと考えているのですが。