ホチキス先生

プログラマーと呼ばれたい

PASSJブログ ホーム 連絡をする RSS ATOM Login
  221 投稿数 :: 45 ストーリー :: 217 コメント :: 31 トラックバック

過去の記事

カテゴリ

イメージギャラリ

カルトゾーン

まつもとよしお

SQL Server 2005にはデータベースの高可用性を実現するために、フェールオーバー・クラスタリングとデータベース・ミラーリングという2つの仕組みを使うことができる。

フェールオーバー・クラスタリングはSQL Server 2000でも利用できたが、SQL Server 2005ではさらに拡張され、8ノードまでのクラスタ構成が可能になったこと、Analysis Services 、 Reporting Services 、Integration Services などの他コンポーネントのクラスタ化もサポートされたこと、そして何よりもStandard Editionでクラスタ化がサポートされたことなどの特徴がある。フェールオーバー・クラスタリングでは複数のサーバーをまとめてひとつのクラスタを構成し、それらのサーバーが一つの物理ディスクを共有して仮想的なデータベース・サーバを構成して運用する形になる。サーバーに障害が発生したとき、動的にディスクを他のサーバに切り替え、サービスを継続して運用することができる。フェールオーバー・クラスタリング構成は、必要な可用性のレベルが極めて高いシステムに運用されることになるだろう。

これに対してデータベース・ミラーリングは単純である。通常はプリンシパル・サーバと呼ぶデータベースで運用されるが、別のサーバにミラー・サーバを構成しておき、常に2つのサーバが同期するように構成される。ミラー・サーバは通常運用時にはスタンバイ状態であって、プリンシパル・サーバに障害がおきたときにミラー・サーバが役割を交替して運用を継続する仕組みだ。

データベース・ミラーリングの構成は、プリンシパル・サーバとミラー・サーバの2台で行うものと、プリンシパル・サーバとミラー・サーバにミラーリング監視サーバを加えた3台で行うものがある。またミラーリングの動作モードとして「高パフォーマンス・モード」と「高い安全性モード」とがある。「高い安全性モード」では、ユーザーから発行されたトランザクションはプリンシパル・サーバで実行されるとともにミラー・サーバでも実行される。そしてミラー・サーバでの実行が確認された時点でトランザクション完了となるので、ミラー・サーバの状態は常にプリンシパル・サーバの状態と同じであることが保証される。この「高い安全性モード」は「高可用性モード」と書かれることもあり、ミラーリング監視サーバを含めた3台構成で行う必要があり、自動フェールオーバーができる。

「高パフォーマンスモード」ではトランザクションの実行の同期よりもパフォーマンスが優先されるので、プリンシパル・サーバに障害がおきたとき、ミラー・サーバに送られなかったトランザクションは失われる場合がある。この「高パフォーマンスモード」はサーバ2台構成で実現できるが、プリンシパル・サーバの障害が自動的に判定できないので、プリンシパル・サーバに障害がおきたときは、強制的にミラー・サーバをプリンシパル・サーバに昇格させる「サービスの強制」が必要である。「サービスの強制」は「強制サービスフェールオーバー」とも呼ばれる。

MicrosoftのSQL Server 2005についての文書を読むと、至るところに「高パフォーマンスモードではデータが失われる可能性があります」という文言が見られるが、これはプリンシパル・サーバに障害がおきたときに、その時点でプリンシパル・サーバで実行されたがミラー・サーバに送られていないトランザクションは失われる、ということである。したがって、例えば本校で運用するような業務サーバは、一瞬でも止まってはならない、といったようなクリティカルな運用ではなく、サーバ障害時に失われたデータを再入力することも可能である場合は、「高パフォーマンスモード」でも十分であると考える。

投稿日時 : 2007年6月6日 14:08

Feedback

# re: SQL Server 2005のデータベースミラーリング 2007/06/06 15:12 ue
こんにちは。

>例えば本校で運用するような業務サーバは、一瞬でも止まってはならない、といったようなクリティカルな運用ではなく、サーバ障害時に失われたデータを再入力することも可能である場合は、「高パフォーマンスモード」でも十分であると考える。

私の感覚では、どれを選んでも良さそうな場合は「自動フェールオーバーを伴う高い安全性モード」を選択します。
「高パフォーマンスモード」は、パフォーマンスの不足が発生しそうな場合に "仕方なく" 選択するものではないかな、と思っています。

# re: SQL Server 2005のデータベースミラーリング 2007/06/06 17:15 ホチキス先生
なるほど。Standard EditionでSAFETY = OFFが利用できないことからも、「自動フェールオーバーを伴う高い安全性モード」が推奨されているように思えます。

# re: SQL Server 2005のデータベースミラーリング 2007/06/06 21:45 河端善博
安全性モードの場合は、もちろん、ミラーサーバー、ネットワーク機器などすべてが完全に動いている必要があることもご注意ください。
プリンシパルが正常に動作していても、その他にエラーが発生するとやはり、エラーとなる。
また、障害発生は、イベントをとれるはずなので、オリジナルプログラムでの対応もある程度可能。
SQL Server 2008 では、データベースミラーリングはさらに強化される予定です。

# re: SQL Server 2005のデータベースミラーリング 2007/06/07 9:23 はせがわ
#おじゃまします。
>フェールオーバー・クラスタリング構成は、必要な可用性のレベルが極めて高いシステムに運用されることになるだろう。

結局なにを守りたいのかということで、選択もしくは複数の技術を使うのでは?単純にフェールオーバにかかる時間で評価すれば、MSCSよりもミラーリングの方が短時間で切り替え可能ですから。

先日、MSCSとミラーリング(ドメインユーザで設定)の環境でDCを止めてフェールオーバするかと試したら、MSCSだとローカルの再起動もしないし、フェールオーバもしなかったのですが、ミラーリングだと、正常に切り替わりました。サービスの再起動が無いから当然なんでしょうね。

コメント

タイトル:
名前:
Url:
コメント: