サブスクライバのレプリケーション状態の設定
サブスクライバ・レプリケーション・エージェントの状態は、そのマスター・データベースによって記述されます。障害が発生したサブスクライバ・データベースをリカバリする場合は、レプリケーション・スキームで通信するマスター・データベースに対するサブスクライバ・データベースのレプリケーション状態を再設定する必要があります。
サブスクライバ・データベースの状態は、コマンドラインまたはプログラムから再設定できます。
-
コマンドラインから、
ttRepAdmin
-state
を使用して、いずれかのサブスクライバ・データベースのレプリケーション状態を再設定するようにマスター・データベースに指示します。 -
ttIsqlから、
ttRepSubscriberStateSet
組込みプロシージャをコールして、いずれかまたはすべてのサブスクライバ・データベースのレプリケーション状態を再設定するようにマスター・データベースに指示します。
「レプリケーション・エージェントの状態の表示」を参照してください。
マスター・データベースは、サブスクライバ・データベースをstart
、pause
またはstop
のいずれかの状態に設定できます。データベースの状態は、表11-1に示すとおり、TTREP.REPPEERS
表のSTATE
列に整数値として示されます。
表11-1 データベースの状態
状態 | 説明 |
---|---|
|
レプリケーション更新が収集され、できるかぎり早くサブスクライバ・データベースに送信されます。サブスクライバ・データベースのレプリケーションが動作していない場合、更新は、送信可能になるまでトランザクション・ログ・ファイルに保存されます。 |
|
レプリケーション更新は、送信を試行されずにログに保存されます。状態が |
|
レプリケーション更新は、サブスクライバ・データベースに送信されずに破棄されます。サブスクライバ・データベースを 警告: このサブスクライバの再起動を計画している場合、停止と再起動の間、更新は格納されません。このため、サブスクライバを再起動すると、サブスクライバには、マスターからの更新はすべて含まれません。再起動を計画している場合、サブスクライバを停止するかわりに、一時停止します。 |
|
しきい値(ログ・データ)を超えているため、サブスクライバへのレプリケーションは失敗したとみなされます。この状態は、システムによって設定され、システムが状態を |
マスター・データベースがそのサブスクライバの1つをstart
状態に設定すると、そのサブスクライバに対する更新がマスターのログに保存されます。サブスクライバがstop
状態の場合、サブスクライバに対する更新は破棄されます。
サブスクライバがpause
状態の場合、サブスクライバに対する更新はマスターのログに保存されますが、サブスクライバ・データベースには送信されません。マスターがサブスクライバをpause
からstart
に変更すると、マスターのログに保存された更新のバックログがサブスクライバに送信されます。(これには例外があります。データベースのフェイルオーバーおよびリカバリの管理を参照してください。)マスター・データベースは、状態が示されたサブスクライバに接続を確立できない場合、成功するまで接続の確立を定期的に試行します。
コマンドラインからttRepAdmin
を使用してサブスクライバの状態を設定するには:この例では、masterds
マスター・データベースにsubscriberds
サブスクライバ・データベースの状態をstop
に設定するように指示します。
ttRepAdmin -dsn masterds -receiver -name subscriberds -state stop
ノート:
異なるホストに同じ名前のサブスクライバが複数ある場合は、ttRepAdmin
ユーティリティの-host
オプションで変更対象のサブスクライバのホストを識別します。
マスター・データベースで、ttRepSubscriberStateSet
組込みプロシージャをコールして、repscheme
レプリケーション・スキームのサブスクライバ・データベース(subscriberds ON system1
)の状態をstop
に設定します。
CALL ttRepSubscriberStateSet('repscheme', 'repl', 'subscriberds', 'system1', 2);
マスターのすべてのサブスクライバを特定の状態に設定する場合は、ttRepSubscriberStateSet
のみを使用できます。ttRepAdmin
ユーティリティに同等の機能はありません。