ヘッダーをスキップ
Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド
リリース7.0
E05169-03
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

キャッシュ・グループのレプリケート

キャッシュ・グループは、キャッシュ・グループまたは標準のTimesTen表にレプリケートできます。キャッシュ・グループをレプリケートする場合は、そのキャッシュ・グループ内のすべての表をレプリケートする必要があります。キャッシュ・グループ内のすべての表をレプリケートせずに、一部の表のみをレプリケートすることはできません。


注意: 高可用性を実現するためにキャッシュ・グループのレプリケーションを実行する場合は、アクティブ・スタンバイ・ペアのレプリケーション構成を使用することをお薦めします。アクティブ・スタンバイ・ペアのレプリケーションを使用すると、障害が発生した場合にリカバリを迅速に実行できます。詳細は、「キャッシュ・グループが構成されたアクティブ・スタンバイ・ペア」を参照してください。

キャッシュ・グループは、次のいずれかの方法でレプリケートできます。

例は、「キャッシュ・グループ・レプリケーション・スキーム」を参照してください。

この項では、標準レプリケーションを使用したキャッシュ・グループのレプリケートについて、次の項目を説明します。

レプリケーション・スキームに特定のキャッシュ・グループを含める方法の詳細は、「レプリケーション・スキームの定義」「データ・ストア要素の定義」を参照してください。

キャッシュ・グループが含まれているデータ・ストアで障害が発生した場合のリカバリ方法については、「障害が発生したデータ・ストアのリカバリ」を参照してください。

アクティブ・スタンバイ・ペアのレプリケーションを使用してレプリケーション・キャッシュ・グループを設定、管理およびリカバリする方法の詳細は、「アクティブ・スタンバイ・ペアの管理」を参照してください。キャッシュ・グループのレプリケートには、可能なかぎりアクティブ・スタンバイ・ペアのレプリケーションを使用する必要があります。データ・ストアの初期設定および障害発生時のリカバリを簡略化するためです。

ttRepAdminによるキャッシュ・グループのレプリケーションの設定

キャッシュ・グループを複製するには、-duplicateオプションを指定してttRepAdminユーティリティを使用し、キャッシュ・グループが含まれているデータ・ストアを複製します。-duplicateオプションには、-keepCGおよび-noKeepCGの2つオプションがあります。-keepCGオプションを使用すると、キャッシュ・グループの複製時にキャッシュ・グループの定義が保持されます。-noKeepCGオプションを使用すると、キャッシュ・グループの定義は保持されません。この場合、複製時にキャッシュ・グループ表が標準のTimesTen表に変換されます。どちらのオプションも、キャッシュ・グループを含むアクティブ・スタンバイ・ペアのレプリケーション構成をローリング・アウトする際に有効です。

ttRepAdmin -duplicate -keepCGは、キャッシュ・グループ間のレプリケーションの設定、またキャッシュ・グループが含まれているマスター・データ・ストアで障害が発生した場合に適用されるフェイルオーバーで使用します。

ttRepAdmin -duplicate -noKeepCGは、ロード・バランシングのためにキャッシュ・グループと標準のTimesTen表間のレプリケーションを設定する場合に使用します。

次の項では、ttRepAdmin -duplicate-keepCGおよび-noKeepCGオプションの使用例を示します。

AUTOREFRESHが設定された双方向ホット・スタンバイREADONLYキャッシュ・グループ: -keepCGオプション

この使用例では、自動リフレッシュREADONLYキャッシュ・グループ、およびキャッシュ・グループに属していないTimesTen表がマスター・データ・ストアに含まれています。-keepCGオプションを使用すると、自動リフレッシュ読取り専用キャッシュ・グループの定義を保持したサブスクライバ・データ・ストアを作成できます。

このキャッシュ・グループは、Oracleから直接的に自動リフレッシュするように設定できます。マスター・データ・ストア上のキャッシュ・グループではOracleから更新を直接受信しますが、サブスクライバ上のキャッシュ・グループではAUTOREFRESH STATEが自動的にPAUSEDに設定され、更新をマスターから受信するようになります。マスター・データ・ストアで障害が発生すると、サブスクライバ上のAUTOREFRESH STATEをONに設定して、マスター・データ・ストアとして使用することができます(この場合、データは失われません)。その後、元のマスターを新しいマスターから複製するか、またはレプリケーション・スキームがRETURN TWOSAFEで構成されている場合は、マスター・キャッチアップ・プロセスで両方のマスターを自動的に再同期させて、元のマスターをリカバリすることもできます。

マスター・データ・ストアとサブスクライバ・データ・ストア間の双方向レプリケーション・スキームには、キャッシュ・グループに属していないTimesTen表も含める必要があります。

図3.4を参照してください。

図3.4 双方向ホット・スタンバイREADONLY AUTOREFRESHキャッシュ・グループ
双方向ホット・スタンバイREADONLY AUTOREFRESHキャッシュ・グループ[説明]

AUTOREFRESHが設定された同一のREADONLYキャッシュ・グループが含まれている双方向レプリケーションのデータ・ストアのペアを設定するには、次の手順を実行します。

  1. マスター・データ・ストアを作成します。
  2. ttCacheUidPwdSetをコールして、キャッシュ・エージェント・ユーザーのIDおよびパスワードを設定します。ttCacheStartをコールするか、またはttAdmin -cacheStartコマンドを使用して、マスター・データ・ストアのキャッシュ・エージェントを起動します。
  3. CREATE CACHE GROUPコマンドを使用して、AUTOREFRESH STATEがPAUSED(デフォルト)のREADONLYキャッシュ・グループをマスター・データ・ストアに作成します。
  4. CREATE REPLICATION文を使用して、マスター・データ・ストアにレプリケーション・スキームを作成します。
  5. LOAD CACHE GROUP文を使用して、マスター・データ・ストアにキャッシュ・グループをロードします。これによって、AUTOREFRESH STATEがONになります。
  6. ttRepStartをコールするか、またはttAdmin -repStartコマンドを使用して、マスター・データ・ストアのレプリケーション・エージェントを起動します。
  7. -keepCGオプションを指定してttRepAdmin -duplicateコマンドを使用し、サブスクライバ・データ・ストアを作成します。-keepCGオプションを使用すると、サブスクライバ・データ・ストア用の自動リフレッシュ・オブジェクトがOracleデータベースに設定されます。キャッシュ・グループは自動リフレッシュであるため、キャッシュ管理ユーザーIDおよびパスワードを入力する必要があります。サブスクライバ・データ・ストアのAUTOREFRESH STATEは、自動的にPAUSEDに設定されます。
  8. サブスクライバ・データ・ストアのキャッシュ・エージェントを起動します。
  9. サブスクライバ・データ・ストアのレプリケーション・エージェントを起動します。

マスター・データ・ストアの障害からリカバリするには、次の手順を実行します。

  1. マスター・データ・ストアのキャッシュ・エージェントが停止していない場合は、ttCacheStopをコールするか、またはttAdmin -cacheStopコマンドを使用して停止します。
  2. マスター・データ・ストアのレプリケーション・エージェントが停止していない場合は、ttRepStopをコールするか、またはttAdmin -repStopコマンドを使用して停止します。
  3. サブスクライバ・データ・ストアでALTER CACHE GROUP文を使用して、キャッシュ・グループのAUTOREFRESH STATEをONに設定します。
  4. 障害が発生したマスター・データ・ストアを、次の2つのいずれかの方法でリストアします。
    • レプリケーション・スキームがRETURN TWOSAFEで構成されている場合は、障害が発生したマスター・データ・ストアに再接続します。マスター・キャッチアップ・プロセスによって2つのデータ・ストアは自動的に同期され、障害が発生したマスター・データ・ストアのAUTOREFRESH STATEはPAUSEDに設定されます。これで、障害が発生したマスター・データ・ストアがホット・スタンバイ・サブスクライバ・データ・ストアとして動作するようになります。
    • レプリケーション・スキームがRETURN TWOSAFEで構成されていない場合は、ttRepAdmin -duplicate -keepCGコマンドを使用して、現在のマスター・データ・ストアから、障害が発生したマスター・データ・ストアを複製します(2つのデータ・ストアを設定する方法については、前述の手順7を参照してください)。
  5. リカバリしたデータ・ストアのキャッシュ・エージェントを起動します。
  6. リカバリしたデータ・ストアのレプリケーション・エージェントを起動します。

  7. 注意: 読取り専用のAUTOREFRESHキャッシュ・グループを使用したアクティブ・スタンバイ・ペアのローリング・アウト時に-keepCGオプションを使用する方法については、「アクティブ・スタンバイ・ペアの設定」を参照してください。

双方向ホット・スタンバイWRITETHROUGHキャッシュ・グループ: -keepCGオプション

この使用例では、マスター・データ・ストアにASYNCHRONOUS WRITETHROUGHキャッシュ・グループまたはSYNCHRONOUS WRITETHROUGHキャッシュ・グループが含まれています。-keepCGオプションを使用すると、WRITETHROUGHキャッシュ・グループの定義を保持したサブスクライバ・データ・ストアを作成できます。図3.5を参照してください。

図3.5 双方向ホット・スタンバイWRITETHROUGHキャッシュ・グループ
双方向ホット・スタンバイWRITETHROUGHキャッシュ・グループ[説明]

同じWRITETHROUGHキャッシュ・グループが含まれている双方向ホット・スタンバイ・データ・ストアのペアを設定するには、次の手順を実行します。

  1. マスター・データ・ストアを作成します。
  2. WRITETHROUGHキャッシュ・グループがASYNCHRONOUSである場合は、キャッシュ管理ユーザーIDおよびパスワードを登録します。
  3. マスター・データ・ストア、およびサブスクライバ・データ・ストアが作成されるノードにWRITETHROUGHキャッシュ・グループを作成します。
  4. マスター・データ・ストアのレプリケーション・エージェントを起動します。
  5. -keepCGオプションを指定してttRepAdmin -duplicateを使用し、サブスクライバ・データ・ストアを作成します。-keepCGオプションを使用すると、サブスクライバ・データ・ストア用のASYNCHRONOUS WRITETHROUGH(AWT)オブジェクトがOracleデータベースに設定されます。キャッシュ・グループがAUTOREFRESHまたはAWTの場合は、キャッシュ管理ユーザーIDおよびパスワードを入力する必要があります。
  6. サブスクライバ・データ・ストアのレプリケーション・エージェントを起動します。

キャッシュ・グループがASYNCHRONOUS WRITETHROUGHの場合は、マスター・データ・ストアで障害が発生した後、サブスクライバ・データ・ストアとOracleデータベースが異なるレプリケーション状態になることがあります。アプリケーションで、トランザクションの一部を再実行して、それらを同じ状態にすることが必要になる場合があります。

マスター・データ・ストア障害からリカバリするには、マスター・データ・ストアで手順5および6を実行します。


注意: データ・ストアには、AUTOREFRESHキャッシュ・グループとWRITETHROUGHキャッシュ・グループの両方を含めることができます。この項で説明した手順は、WRITETHROUGHキャッシュ・グループ間のレプリケーションを設定するものであり、AUTOREFRESHキャッシュ・グループ間のレプリケーションを設定するものではありません。詳細は、「AUTOREFRESHが設定された双方向ホット・スタンバイREADONLYキャッシュ・グループ: -keepCGオプション」を参照してください。


注意: ASYNCHRONOUS WRITETHROUGHキャッシュ・グループを使用したアクティブ・スタンバイ・ペアのローリング・アウト時に-keepCGオプションを使用する方法については、「アクティブ・スタンバイ・ペアの設定」を参照してください。

ロード・バランシングAUTOREFRESHキャッシュ・グループ: -noKeepCGオプション

この使用例では、Oracleデータベースからの変更を受信するAUTOREFRESHキャッシュ・グループがマスター・データ・ストアに含まれています。マスター・データ・ストアは、読取り専用アクセス用のサブスクライバ・データ・ストアにレプリケートされます。サブスクライバ・データ・ストアには、キャッシュ・グループに属していないTimesTen表が含まれます。自動リフレッシュは、マスター・データ・ストアでのみ実行されます。サブスクライバ・データ・ストアはOracleデータベースと通信しないため、Oracleクライアントをインストールする必要はありません。図3.6を参照してください。

図3.6 ロード・バランシングAUTOREFRESHキャッシュ・グループ
ロード・バランシングAUTOREFRESHキャッシュ・グループ[説明]

ロード・バランシングAUTOREFRESHキャッシュ・グループに対するレプリケーションを設定するには、次の手順を実行します。

  1. マスター・データ・ストアを作成します。
  2. マスター・データ・ストアのキャッシュ・エージェントを起動します。
  3. マスター・データ・ストアでAUTOREFRESHキャッシュ・グループを作成します。
  4. レプリケーション・スキームを作成します。
  5. マスター・データ・ストアのレプリケーション・エージェントを起動します。
  6. -noKeepCGオプションを指定してttRepAdmin -duplicateを使用し、サブスクライバ・データ・ストアを作成します。
  7. サブスクライバ・データ・ストアのレプリケーション・エージェントを起動します。

CREATE CACHE GROUPによるキャッシュ・グループのレプリケーションの設定

キャッシュ・グループ間にレプリケーションを設定するもう1つの方法として、CREATE CACHE GROUP文で両方のキャッシュ・グループを作成してから、レプリケーション・スキームを設定する方法があります。両方のキャッシュ・グループで同じグループ・タイプを指定する必要があります。たとえば、READONLYキャッシュ・グループは、別のREADONLYキャッシュ・グループにのみレプリケートできます。また、CREATE CACHE GROUP文で指定するキャッシュ・グループ属性も同じである必要があります。ただし、AUTOREFRESH、READONLY、AGINGおよびPROPAGATE属性は例外です(「キャッシュ・グループ間の単方向レプリケーション」および「キャッシュ・グループ間の双方向レプリケーション」を参照)。

キャッシュ・グループ間の単方向レプリケーション

CREATE CACHE GROUP文を使用して、単方向にレプリケートされるキャッシュ・グループをデータ・ストアごとに独立して作成する場合は、一部のキャッシュ・グループ属性の構成に制限があります。

キャッシュ・グループをレプリケートする単方向レプリケーション・スキームの例は、「キャッシュ・グループ・レプリケーション・スキーム」を参照してください。

AUTOREFRESH構成の制限

キャッシュ・グループがREADONLYの場合、キャッシュ・グループのロード時にAUTOREFRESHが自動的にONに設定されるため、サブスクライバ・キャッシュ・グループのAUTOREFRESH STATEは、CREATE CACHE GROUP文で明示的にOFFまたはPAUSEDに設定する必要があります。

キャッシュ・グループがUSERMANAGED(デフォルト)で、マスター・データ・ストアのAUTOREFRESH STATEがONに設定されている場合、サブスクライバ・キャッシュ・グループのAUTOREFRESH STATEはOFFに設定し、サブスクライバ・キャッシュ・グループ内のすべての表はREADONLYとして構成する必要があります。

キャッシュ・グループがUSERMANAGEDで、サブスクライバ・キャッシュ・グループがPROPAGATEで構成されている場合、マスターとサブスクライバの両方のキャッシュ・グループを自動リフレッシュすることはできません。キャッシュ・グループにAUTOREFRESHは構成しないでください。AUTOREFRESHを構成した場合は、両方のAUTOREFRESH STATEをOFFに設定する必要があります。

AGING構成の制限

時間ベースのエージングが構成されている場合は、LIFETIMEの設定をマスター・キャッシュ・グループとサブスクライバ・キャッシュ・グループで同じにする必要があります。また、AGINGは、1つのキャッシュ・グループでONに設定されている場合、両方のキャッシュ・グループでONに設定する必要があります。

WHERE句の制限

WHERE句は、マスター・キャッシュ・グループとサブスクライバ・キャッシュ・グループの両方で同じである必要があります。

キャッシュ・グループ間の双方向レプリケーション

キャッシュ・グループを双方向レプリケーション・スキームでレプリケートする場合、READONLYキャッシュ・グループでは、両方のキャッシュ・グループに対してAUTOREFRESHを指定できます。WRITETHROUGHキャッシュ・グループでは、いずれかのキャッシュ・グループに対してのみAUTOREFRESHを指定できます。USERMANAGEDキャッシュ・グループではAUTOREFRESHを使用できません。

詳細は次のとおりです。