サブスクライバのレプリケーション状態の設定

サブスクライバ・レプリケーション・エージェントの状態は、そのマスター・データベースによって記述されます。障害が発生したサブスクライバ・データベースをリカバリする場合は、レプリケーション・スキームで通信するマスター・データベースに対するサブスクライバ・データベースのレプリケーション状態を再設定する必要があります。

サブスクライバ・データベースの状態は、コマンドラインまたはプログラムから再設定できます。

  • コマンドラインから、ttRepAdmin -stateを使用して、いずれかのサブスクライバ・データベースのレプリケーション状態を再設定するようにマスター・データベースに指示します。

  • ttIsqlから、ttRepSubscriberStateSet組込みプロシージャをコールして、いずれかまたはすべてのサブスクライバ・データベースのレプリケーション状態を再設定するようにマスター・データベースに指示します。

「レプリケーション・エージェントの状態の表示」を参照してください。

マスター・データベースは、サブスクライバ・データベースをstartpauseまたはstopのいずれかの状態に設定できます。データベースの状態は、表11-1に示すとおり、TTREP.REPPEERS表のSTATE列に整数値として示されます。

表11-1 データベースの状態

状態 説明

start

STATE値: 0

レプリケーション更新が収集され、できるかぎり早くサブスクライバ・データベースに送信されます。サブスクライバ・データベースのレプリケーションが動作していない場合、更新は、送信可能になるまでトランザクション・ログ・ファイルに保存されます。

pause

STATE値: 1

レプリケーション更新は、送信を試行されずにログに保存されます。状態がstartに変更されると、送信が開始します。

stop

STATE値: 2

レプリケーション更新は、サブスクライバ・データベースに送信されずに破棄されます。サブスクライバ・データベースをstop状態にすると、マスターのトランザクション・ログに保留されている更新がすべて破棄されます。

警告: このサブスクライバの再起動を計画している場合、停止と再起動の間、更新は格納されません。このため、サブスクライバを再起動すると、サブスクライバには、マスターからの更新はすべて含まれません。再起動を計画している場合、サブスクライバを停止するかわりに、一時停止します。

failed

STATE値: 4

しきい値(ログ・データ)を超えているため、サブスクライバへのレプリケーションは失敗したとみなされます。この状態は、システムによって設定され、システムが状態をstopに設定する前の遷移状態です。failed状態のデータベースに接続するアプリケーションは警告を受信します。「一般的なフェイルオーバーおよびリカバリの手順」を参照してください。

マスター・データベースがそのサブスクライバの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ユーティリティに同等の機能はありません。