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

前へ
前へ
次へ
次へ
 

レプリケーション・スキームの例

この項で説明する例では、様々なレプリケーション・スキームの設定方法を示します。これらの例は、わかりやすくするために簡略化されています。これらの例は、より複雑なレプリケーション・スキームを作成するための出発点として使用できます。

次のスキームについて説明します。

単一サブスクライバ・スキーム

例3.3のスキームは、「クイック・スタート」で説明されている単一のマスターおよびサブスクライバの単方向レプリケーション・スキームに基づいています。ただし、この例では、2つのデータ・ストアが別々のホストsystem1およびsystem2に配置されています。また、RETURN RECEIPTサービスを使用して、マスター・データ・ストアのrepl.tab表に対してコミットしたすべてのトランザクションがサブスクライバで受信されることを確認します(「RETURN RECEIPTレプリケーション」を参照)。

図3.7 単方向レプリケーション(単一表)
単方向レプリケーション(単一表)[説明]
例3.15

CREATE REPLICATION repl.repscheme

  ELEMENT e TABLE repl.tab

      MASTER masterds ON "system1"

      SUBSCRIBER subscriberds ON "system2"

         RETURN RECEIPT;

例3.16に示すスキームでは、server2上のsubscriberdsというサブスクライバ・データ・ストアに内容全体(tab1からtab7まで)をレプリケートするMASTERDSというマスター・データ・ストアを設定します。

図3.8 単方向レプリケーション(データ・ストア全体)
単方向レプリケーション(データ・ストア全体)[説明]
例3.16

CREATE REPLICATION repl.repscheme

   ELEMENT e DATASTORE

       MASTER masterds ON "server1"

      SUBSCRIBER subscriberds ON "server2";

複数サブスクライバ・スキーム

最大128のサブスクライバ・データ・ストアを含むレプリケーション・スキームを作成できます。

図3.9に、2つのサブスクライバ・データ・ストアにレプリケートされる表(repl.tab)を持つマスター・データ・ストアを示します。

図3.9 複数のサブスクライバへのレプリケート
複数のサブスクライバへのレプリケート[説明]
例3.17

この例では、server2にあるsubscriber1dsおよびserver3にあるsubscriber2dsという2つのサブスクライバ・データ・ストアにrepl.tab表をレプリケートするマスター・データ・ストアmasterdsを設定します。レプリケーション・スキームの名前はrepl.twosubscribersです。レプリケーション要素の名前はeです。

CREATE REPLICATION repl.twosubscribers

ELEMENT e TABLE repl.tab

  MASTER masterds ON "server1"

  SUBSCRIBER subscriber1ds ON "server2",

             subscriber2ds ON "server3";

例3.18

この例では、例3.17の基本的な例を使用し、それにRETURN RECEIPT属性およびSTOREパラメータを追加します。RETURN RECEIPTで、両方のデータ・ストアに対するRETURN RECEIPTサービスを有効にします。STOREパラメータで、FAILTHRESHOLD値を10に設定し、サブスクライバで障害が発生したとみなされるまでmasterdsに累積可能な、サブスクライバに対するログ・ファイルの最大数を指定します。

CREATE REPLICATION repl.twosubscribers

ELEMENT e TABLE repl.tab

  MASTER masterds ON "server1"

  SUBSCRIBER subscriber1ds ON "server2",

             subscriber2ds ON "server3"

  RETURN RECEIPT

STORE masterds FAILTHRESHOLD 10;

例3.19

この例では、subscriber2dsに対してのみRETURN RECEIPTを有効にする方法を示します(subsciber1ds定義の末尾のカンマは不要です)。

CREATE REPLICATION repl.twosubscribers

ELEMENT e TABLE repl.tab

  MASTER masterds ON "server1"

  SUBSCRIBER subscriber1ds ON "server2"

  SUBSCRIBER subscriber2ds ON "server3" RETURN RECEIPT

STORE masterds FAILTHRESHOLD 10;

例3.20

この例では、RETURN RECEIPT BY REQUESTをsubscriber1dsに、RETURN RECEIPTをsubscriber2dsに適用する方法を示します。このスキームでは、subscriber1dsにアクセスするアプリケーションでttRepSyncSetプロシージャを使用してトランザクションのRETURNサービスを有効にする必要があります。一方、subscriber2dsでは、すべてのトランザクションにRETURNサービスが無条件に提供されます。

CREATE REPLICATION repl.twosubscribers

ELEMENT e TABLE repl.tab

  MASTER masterds ON "server1"

  SUBSCRIBER subscriberds1 ON "server2" RETURN RECEIPT BY REQUEST

  SUBSCRIBER subscriber2ds ON "server3" RETURN RECEIPT

STORE masterds FAILTHRESHOLD 10;

選択レプリケーション・スキーム

例3.21の選択レプリケーション・スキームでは、4つの表にレプリケートするマスター・データ・ストアcentraldsを設定します。tab1およびtab2はサブスクライバbackup1dsにレプリケートされ、tab3およびtab4backup2dsにレプリケートされます。マスター・データ・ストアはfinanceサーバーにあります。両方のサブスクライバがサーバーbackupsystemに配置されています。

図3.10 選択レプリケーション
選択レプリケーション[説明]
例3.21

CREATE REPLICATION repl.twobackups

ELEMENT a TABLE tab1

  MASTER centralds ON "finance"

  SUBSCRIBER backup1ds ON "backupsystem"

ELEMENT b TABLE tab2

  MASTER centralds ON "finance"

  SUBSCRIBER backup1ds ON "backupsystem"

ELEMENT d TABLE tab3

  MASTER centralds ON "finance"

  SUBSCRIBER backup2ds ON "backupsystem"

ELEMENT d TABLE tab4

  MASTER centralds ON "finance"

  SUBSCRIBER backup2ds ON "backupsystem";

伝播スキーム

例3.22に、マスター・データ・ストアからプロパゲータへの単方向レプリケーション・スキームを示します。プロパゲータは、2つのサブスクライバに変更を転送します。ELEMENT aでは、repl.tab表がfinanceマシンのcentraldsデータ・ストアで更新され、nethandlerマシンのpropdsプロパゲータ・データ・ストアにレプリケートされます。ELEMENT bでは、propdsで受信したrepl.tab表への変更が、マシンbackupsystem1およびbackupsystem2の2つのサブスクライバbackup1dsおよびbackup2dsにそれぞれレプリケートされます。

例3.23の設定もほぼ同じですが、使用するレプリケーション・スキームは1つではなく2つです。

repl.tab表のレプリケーションは、同じスキームでは別々の要素名(aおよびb)で記述する必要がありますが、個別のスキームを使用すると、同じ要素名(a)で記述できます。

図3.11 伝播
伝播[説明]
例3.22

CREATE REPLICATION repl.propagator

ELEMENT a TABLE repl.tab

  MASTER centralds ON "finance"

  SUBSCRIBER propds ON "nethandler"

ELEMENT b TABLE repl.tab

  PROPAGATOR propds ON "nethandler"

  SUBSCRIBER backup1ds ON "backupsystem1",

             backup2ds ON "backupsystem2";

例3.23

CREATE REPLICATION repl.propagator

ELEMENT a TABLE repl.tab

  MASTER centralds ON "finance"

  SUBSCRIBER propds ON "nethandler";

CREATE REPLICATION repl.propagator2

ELEMENT a TABLE repl.tab

  PROPAGATOR propds ON "nethandler"

  SUBSCRIBER backup1ds ON "backupsystem1",

             backup2ds ON "backupsystem2";

双方向の分割ワークロード・スキーム

図3.12に、2つのデータ・ストア(westcoastホストのwestdsおよびeastcoastホストのeastds)に対する分割ワークロードの双方向レプリケーション・スキームを示します。顧客は2つの表で表されます。西地区の顧客のデータはwaccounts、東地区の顧客のデータはeaccountsに収められます。westdsデータ・ストアは、waccounts表を更新してeastdsデータ・ストアにレプリケートします。eaccounts表は、eastdsデータ・ストアによって所有され、westdsデータ・ストアにレプリケートされます。RETURN RECEIPT属性は、RETURN RECEIPTサービスを有効にして、いずれのマスター表のトランザクションもそれらのサブスクライバによって受信されることを保証します。

例3.25は同じ構成ですが、r1r2という別々のレプリケーション・スキームを使用しています。

図3.12 分割ワークロード・レプリケーション
分割ワークロード・レプリケーション[説明]
例3.24

CREATE REPLICATION repl.r1

ELEMENT elem_waccounts TABLE repl.waccounts

   MASTER westds ON "westcoast"

   SUBSCRIBER eastds ON "eastcoast" RETURN RECEIPT

ELEMENT elem_eaccounts TABLE repl.eaccounts

   MASTER eastds ON "eastcoast"

   SUBSCRIBER westds ON "westcoast" RETURN RECEIPT;

例3.25   

CREATE REPLICATION repl.r1

ELEMENT elem_waccounts TABLE repl.waccounts

   MASTER westds ON "westcoast"

   SUBSCRIBER eastds ON "eastcoast" RETURN RECEIPT;

CREATE REPLICATION repl.r2

ELEMENT elem_eaccounts TABLE repl.eaccounts

   MASTER eastds ON "eastcoast"

   SUBSCRIBER westds ON "westcoast" RETURN RECEIPT;

双方向の一般ワークロード・スキーム

例3.13に、eastdsまたはwestdsのいずれかのデータ・ストアでaccounts表を更新できる一般ワークロードの双方向レプリケーション・スキームを示します。各データ・ストアは、accounts表に対してマスターおよびサブスクライバの両方になります。

要素をこの手法でレプリケートする場合、アプリケーションでは、各データ・ストアへの書込みを調整して、同じデータに同時に更新が行われないようにする必要があります。更新競合を管理するために、BINARY(8)型のタイムスタンプ列(例3.27tstamp列など)を表に含め、例8.2のレプリケーション・スキームを使用してタイムスタンプ比較を有効にできます。

更新競合の管理方法の詳細は、「レプリケーション競合の検出および解消」を参照してください。

図3.13 分散ワークロード・レプリケーション
分散ワークロード・レプリケーション[説明]
例3.26

CREATE REPLICATION repl.r1

ELEMENT elem_accounts_1 TABLE repl.accounts

   MASTER westds ON "westcoast"

   SUBSCRIBER eastds ON "eastcoast"

ELEMENT elem_accounts_2 TABLE repl.accounts

   MASTER eastds ON "eastcoast"

   SUBSCRIBER westds ON "westcoast";

例3.27

CREATE TABLE repl.accounts (custname VARCHAR2(30) NOT NULL,

                             address VARCHAR2(80),

                             curbalance DEC(15,2),

                             tstamp BINARY(8),

                             PRIMARY KEY (custname));

キャッシュ・グループ・レプリケーション・スキーム

図3.14に、Oracleを実行しているデータベース・サーバーおよびTimesTenを実行している2つのアプリケーション・サーバー(server1およびserver2)を示します。例3.29TargetCustomersキャッシュ・グループは、server1で稼働しているmasterdsデータ・ストアからserver2で稼動しているsubscriberdsデータ・ストアの例3.30TargetCustomersキャッシュ・グループに単方向でレプリケートされます。


注意: この例では、レプリケーション・スキームの定義がキャッシュ・グループの定義の前に示されていますが、レプリケーション・スキームを適用する前に、これらのキャッシュ・グループをそれぞれのデータ・ストアに作成する必要があります。

図3.14 キャッシュ・グループのレプリケート
キャッシュ・グループのレプリケート[説明]
例3.28

この例では、読取り専用キャッシュ・グループTargetCustomersを別の読取り専用キャッシュ・グループにレプリケートするスキームを示します。

CREATE REPLICATION repl.reptargetcustomers

ELEMENT root TABLE repl.customer

   MASTER masterds ON "server1"

   SUBSCRIBER subscriberds ON "server2"

ELEMENT childorders TABLE repl.orders

   MASTER masterds ON "server1"

   SUBSCRIBER subscriberds ON "server2"

ELEMENT childorderdetails TABLE repl.orderdetails

   MASTER masterds ON "server1"

   SUBSCRIBER SUBSCRIBERDS ON "SERVER2"

ELEMENT childinterests TABLE repl.interests

   MASTER masterds ON "server1"

   SUBSCRIBER subscriberds ON "server2";

例3.29

この例では、AUTOREFRESH STATE ONを指定したキャッシュ・グループのレプリケーションを示します。

CREATE READONLY CACHE GROUP TargetCustomers

AUTOREFRESH INTERVAL 240 MINUTES

FROM

customer(custid NUMBER NOT NULL,

       name CHAR(100) NOT NULL,

       addr CHAR(100),

       zip NUMBER,

       region CHAR(10),

       PRIMARY KEY (custid)),

orders(orderid NUMBER NOT NULL,

       custid NUMBER NOT NULL,

       PRIMARY KEY (orderid),

       FOREIGN KEY (custid) REFERENCES customer(custid)),

orderdetails(orderid NUMBER NOT NULL,

       itemid NUMBER NOT NULL,

       quantity NUMBER NOT NULL,

       PRIMARY KEY (orderid, itemid),

       FOREIGN KEY (orderid) REFERENCES orders(orderid)),

INTERESTS(custid NUMBER NOT NULL,

       interest NUMBER NOT NULL,

       PRIMARY KEY (custid, interest),

       FOREIGN KEY (custid) REFERENCES customer(custid));

例3.30

この例では、AUTOREFRESH STATE OFFを指定したキャッシュ・グループのレプリケーションを示します。

CREATE READONLY CACHE GROUP TargetCustomers

AUTOREFRESH STATE OFF

FROM

customer(custid NUMBER NOT NULL,

       name CHAR(100) NOT NULL,

       addr CHAR(100),

       zip NUMBER,

       region CHAR(10),

       PRIMARY KEY (custid)),

orders(orderid NUMBER NOT NULL,

       custid NUMBER NOT NULL,

       PRIMARY KEY (orderid),

       FOREIGN KEY (custid) REFERENCES customer(custid)),

orderdetails(orderid NUMBER NOT NULL,

       itemid NUMBER NOT NULL,

       quantity NUMBER NOT NULL,

       PRIMARY KEY (orderid, itemid),

       FOREIGN KEY (orderid) REFERENCES orders(orderid)),

interests(custid NUMBER NOT NULL,

       interest NUMBER NOT NULL,

       PRIMARY KEY (custid, interest),

       FOREIGN KEY (custid) REFERENCES customer(custid));

アクティブ・スタンバイ・ペア

図3.15に、アクティブ・スタンバイ・ペアを示します。

図3.15 アクティブ・スタンバイ構成
アクティブ・スタンバイ構成[説明]

アクティブ・スタンバイ・ペアでは、2つのデータ・ストアがマスターとして定義されます。1つは、アクティブ・マスター・データ・ストアで、もう1つはスタンバイ・マスター・データ・ストアです。アクティブ・マスター・データ・ストアは直接更新されます。スタンバイ・マスター・データ・ストアは、アクティブ・マスター・データ・ストアから更新を受信し、変更を最大で62の読取り専用サブスクライバ・データ・ストアに伝播します。

例3.31では、rep1rep2がマスター・データ・ストアとして指定され、rep3rep4がサブスクライバ・データ・ストアとして指定されています。レプリケーション・モードは、RETURN RECEIPTです。


注意: アクティブ・スタンバイ・ペアを作成するには、CREATE ACTIVE STANDBY PAIR文を使用します。アクティブ・スタンバイ・ペアの設定方法の詳細は、「アクティブ・スタンバイ・ペアの設定」を参照してください。

例3.31

CREATE ACTIVE STANDBY PAIR rep1 on "node1", rep2 on "node2"

  RETURN RECEIPT

  SUBSCRIBER rep3 ON "node3", rep4 ON "node4";