Replication


Summary / Reference

レプリケーション
転送元データベースから、転送先へデータ複製します。若干のデータ遅延が発生するため、同時刻で同じデータは保てません。レプリケーションには以下の種類があります。

種類 概要
スナップショット 転送元サーバーの現在のデータ全体のスナップショットに置き換えます。
トランザクション 変更されたデータのみを配布します。トランザクションの順序が維持され、競合も発生しません。
マージ 複数のサイトがそれぞれで変更した情報をマージします。競合の発生の可能性があり、トランザクションの順序は維持されません。

分散トランザクション
2 フェーズコミットプロトコルを使用して、すべてのサイトで常に同一のデータを持つことを保証します。ただし、構成しているサイトのうち、一つでも障害が発生すると、全体に影響を及ぼします。また、ネットワーク経由で処理を行うため、全体的に遅延が発生します。分散トランザクションでは MS DTC サービスが起動している必要があります。

パブリッシャ
ソースデータベースを保持しています。すべての変更内容をディストリビュータに送ります。

ディストリビュータ
メタデータ、ヒストリデータ、トランザクションをディストリビューションデータベースに格納します。レプリケーションにおいては、さまざまな機能を提供しますが、スナップショットレプリケーションや、トランザクションレプリケーションについては、重要な役割を果たします。通常、パブリッシャと同一のサーバーに設定します。不可分散を行いたいときに、ほかのサーバーに用意します。

サブスクライバ
データのコピーを保持し、変更を受け取ります。設定によっては、更新後のデータをパブリッシャに戻し、ほかのサブスクライバへ更新データをレプリケーションすることができます。

 

 

パブリケーション
サブスクリプションの基本単位で、一つ以上のアーティクルを含んでいます。パブリケーション内のアーティクルは同時に同期されるので整合性が保たれます。

アーティクル
テーブル、ストアドプロシージャ、ビュー、ユーザー定義関数などの全体、またはフィルタされた部分です。

プッシュサブスクリプション
パブリッシャでで定義され、サブスクライバを管理します。

プルサブスクリプション
サブスクライバで作成され、サブスクライバがパブリッシャ上のデータを要求します。

 

Agent

レプリケーションを実行する際のサービスのようなものです。レプリケーションの種類によって、役割分担をしています。

エージェント 概要
スナップショット フルコピー用プログラム。発行するテーブルのスキーマと初期データファイルを用意します。その後、ストアドプロシージャを作成し、ディストリビューションデータベースに同期に関する情報を記録します。
ディストリビューション ディストリビューションデータベースに保持されているスナップショット、およびトランザクションをサブスクライバへ移動します。
ログリーダー トランザクションレプリケーション専用で、トランザクションログのどこからどこまでを送ればよいのか判断します。レプリケーションマークのついたトランザクションを、パブリッシャ上のトランザクションログから、ディストリビューションデータベースへコピーします。
マージ マージレプリケーション専用で、サブスクライバに初期スナップショットを提供し、その後増分データを移動し一致させます。
キューリーダー キューからメッセージを受け取り、適切なパブリケーションに適用します。

 

Distributed Transaction

分散トランザクションは以下の設定が必須です。

  1. リンクサーバー
  2. SET XACT_ABORT ON
    BEGIN DISTRIBUTED TRAN
    ・・・
    COMMIT TRAN
  3. MSDTC サービス