可用性の強化
レプリケーションを使用してデータをスタンバイ サーバーにレプリケートすると、計画済みおよび計画外のシステム停止が発生した場合の可用性を強化できます。スタンバイ サーバーで必要なデータがプライマリ サーバーで必要なデータのサブセットである場合は、レプリケーションを使用してウォーム スタンバイを利用できるようにしてください。次のことも考慮してください。
スケーラビリティや可用性を強化するためにアプリケーションで複数のサイトのデータが必要な場合は、「可用性とスケーラビリティの両方の向上」を参照してください。
アプリケーションでスタンバイ サーバーに必要とされるデータがデータベース全体である場合は、レプリケーションではなくデータベース ミラーリングを使用します。データベース全体を同期させる必要がある場合は、データベース ミラーリングの方が効率的です。クエリにセカンダリ サーバーを使用する必要もありません。詳細については、「データベース ミラーリングの管理」を参照してください。
次の図は、プライマリ サーバーと 1 つのスタンバイ サーバーを表しています。プライマリ サーバーのデータのサブセットをセカンダリ サーバーで利用できます。
注 |
---|
レプリケーションは、あるサーバーから別のスタンバイ サーバーにフェールオーバーするためのメカニズムとしては利用できません。特定のサーバーにアクセスするアプリケーションでは、最初のサーバーが利用できなくなった場合に別のサーバーを使用するようにプログラミングする必要があります。 |
Adventure Works Cycles の例
Adventure Works Cycles は、データベースの概念とシナリオを説明するために使用する架空の製造会社です。詳細については、「AdventureWorks2008R2 サンプル データベース」を参照してください。
Adventure Works Cycles では、生産ラインの不具合に関するデータを収集するために、同社の製造施設全体に数多くのサーバーを配置しています。これらのサーバーの可用性は、レプリケーションを使用して確保されています。計画済みおよび計画外のシステム停止の際には、用意したコードによって、クエリがウォーム スタンバイ サーバーにリダイレクトされます。
このシナリオの一般的な要件
レプリケーションを使って可用性を高めるアプリケーションには一般的に以下のような要件があり、適切なレプリケーション ソリューションで対処する必要があります。
システムでトランザクションの一貫性を保つ必要があります。
システムの待機時間が短く、あるサーバーで行われた更新が速やかに他のサーバーに反映される必要があります。
多数のトランザクションのレプリケーションを処理できる、高いスループットが必要です。
レプリケーション処理のオーバーヘッドをできるだけ少なくする必要があります。
セカンダリ サーバーで必要なデータは、プライマリ サーバーで利用可能なデータのサブセットである可能性があります (上記 1 つ目の図を参照)。
このシナリオで使用するレプリケーションの種類
Microsoft SQL Server では、出版業界にたとえてレプリケーション システムのコンポーネントを表しています。コンポーネントには、パブリッシャ (出版社)、サブスクライバ (購読者)、パブリケーション (出版物) とアーティクル (記事)、およびサブスクリプション (定期購読物) があります。
上記の図では、プライマリ サーバーがパブリッシャです。パブリケーションには、プライマリ サーバーの一部またはすべてのデータが含まれます。各データ テーブルはアーティクルです (アーティクルはストアド プロシージャなどの他のデータベース オブジェクトの場合もあります)。スタンバイ サーバーはパブリケーションのサブスクライバで、サブスクリプションとしてスキーマとデータを受信します。システムのコンポーネントの詳細については、「レプリケーションのパブリッシング モデルの概要」を参照してください。
SQL Server では、さまざまなアプリケーション要件に対して各種のレプリケーション (スナップショット レプリケーション、トランザクション レプリケーション、およびマージ レプリケーション) を用意しています。このシナリオはトランザクション レプリケーションで最適に実装され、前のセクションで概説した要件によく適合します。トランザクション レプリケーションの詳細については、「トランザクション レプリケーションの概要」および「トランザクション レプリケーションの動作方法」を参照してください。
トランザクション レプリケーションは、以下に示すこのシナリオの主な要件に対応するように作られています。
トランザクションの一貫性
短い待機時間
高いスループット
最小限のオーバーヘッド
このシナリオで考慮する必要がある主なオプションは、フィルタ選択です。トランザクション レプリケーションでは、サブスクライバのテーブルにアプリケーションで必要なデータのみが含まれるように、列や行をフィルタ選択することができます。詳細については、「パブリッシュされたデータのフィルター選択」を参照してください。
このシナリオの実装手順
このシナリオを実装するには、最初にパブリケーションとサブスクリプションを作成してから、各サブスクリプションを初期化してください。各手順の詳細については、以下のリンクをクリックしてください。
サブスクリプションの初期化が終わり、パブリッシャとサブスクライバ間でデータ フローが発生したら、共通の管理および監視作業の詳細について以下のトピックを参照してください。