TimesTen SQLによるレプリケーションの構成では、レプリケーションをプログラム的な方法で構成できます。この構成は、C、C++またはJavaコードに埋め込むことができます。レプリケーションをローカルで構成したり、クライアント/サーバーを使用してリモート・システムから構成できます。
また、サポートされているSQL文ではカバーされていない処理に対応する場合は、ttRepAdmin
ユーティリティを使用する必要があります。 ttRepAdmin
を使用すると、レプリケーションの状態の変更、データ・ストアの複製、レプリケーション構成の一覧表示およびレプリケーション状態の表示を実行できます。
CREATE REPLICATION文は、次の処理を実行します。
関連するデータ・ストアにレプリケーション・スキームを定義します。
実行するデータ・ストアのレプリケーション・システム表に、指定した構成を組み込みます。
通常は、1つ以上のレプリケーションELEMENTの指定、および0(ゼロ)以上のSTOREの指定が含まれています。
必要な権限
ADMIN
説明
レプリケーション要素は、TimesTenのデータ・ストア間で同期化されるエンティティです。レプリケーション要素は、表全体またはデータ・ストアのいずれかです。データ・ストアには、ほとんどの型の表とキャッシュ・グループを含めることができます。 指定した表とキャッシュ・グループのみ、または指定した表とキャッシュ・グループ以外のすべての表を含めることができます。 一時表またはビューを含めることはできません。このことは、マテリアライズド・ビューと非マテリアライズド・ビューでも同様です。
レプリケーション・スキームは、レプリケーション要素および要素のコピーを管理するデータ・ストアのセットです。
キャッシュ・グループのレプリケーションでは、次の点に注意します。
データ・ストア間でキャッシュ・グループをレプリケートする場合は、両方のキャッシュ・グループが同等であることが必要です。ただし、AUTOREFRESHおよびPROPAGATEの設定を除きます。
AUTOREFRESHが設定されているキャッシュ・グループをレプリケートする場合、サブスクライバのキャッシュ・グループは、自動リフレッシュのSTATEをOFFに設定する必要があります。 双方向レプリケーション・スキームでは、キャッシュ・グループのうちの1つの自動リフレッシュのSTATEをOFFにする必要があります。
マスター・キャッシュ・グループにPROPAGATEが指定されている場合、サブスクライバのキャッシュ・グループは自動リフレッシュのSTATEをOFFにする必要があります。
レプリケーションを構成するSQLの詳細は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』を参照してください。
SQL構文
CREATE REPLICATION [Owner.]ReplicationSchemeName { ELEMENT ElementName { DATASTORE | { TABLE [Owner.]TableName [CheckConflicts]} | SEQUENCE [Owner.]SequenceName} { MASTER | PROPAGATOR } FullStoreName [TRANSMIT { NONDURABLE | DURABLE }] { SUBSCRIBER FullStoreName [,...] [ReturnServiceAttribute] } [, ...] } [...] [{INCLUDE | EXCLUDE} {TABLE [[Owner.]TableName[,...]] | CACHE GROUP [[Owner.]CacheGroupName[,...]] | SEQUENCE [[Owner.]SequenceName[,...]} [,...]] [ STORE FullStoreName [StoreAttribute [... ]]] [...] [ NetworkOperation[...]]
CheckConflicts
の構文については、「CHECK CONFLICTS」を参照してください。
ReturnServiceAttribute
の構文は、次のとおりです。
{ RETURN RECEIPT [BY REQUEST] | RETURN TWOSAFE [BY REQUEST] | NO RETURN }
StoreAttribute
の構文は、次のとおりです。
[ DISABLE RETURN {SUBSCRIBER | ALL} NumFailures ] [ RETURN SERVICES {ON | OFF} WHEN [REPLICATION] STOPPED ] [ DURABLE COMMIT {ON | OFF}] [ RESUME RETURN MilliSeconds ] [ LOCAL COMMIT ACTION {NO ACTION | COMMIT} ] [ RETURN WAIT TIME Seconds ] [ COMPRESS TRAFFIC {ON | OFF} [ PORT PortNumber ] [ TIMEOUT Seconds ] [ FAILTHRESHOLD Value ] [ CONFLICT REPORTING SUSPEND AT Value ] [ CONFLICT REPORTING RESUME AT Value ] [ TABLE DEFINITION CHECKING {RELAXED|EXACT}]
NetworkOperation
の構文は、次のとおりです。
ROUTE MASTER FullStoreName SUBSCRIBER FullStoreName { { MASTERIP MasterHost | SUBSCRIBERIP SubscriberHost } PRIORITY Priority } [...]
パラメータ
CREATE REPLICATION文には、次のパラメータがあります。
パラメータ | 説明 |
---|---|
[ Owner .] ReplicationSchemeName |
新しいレプリケーション・スキームに割り当てる名前です。レプリケーション・スキームは、他のすべてのデータ・ストア・オブジェクトとは別の一意の名前である必要があります。 |
CheckConflicts |
双方向にレプリケートされたデータ・ストアへの同時書込みで、レプリケーションの競合をチェックします。 「CHECK CONFLICTS」を参照してください。 |
COMPRESS TRAFFIC {ON | OFF} |
レプリケートされた通信量を圧縮して、ネットワークの帯域幅の量を削減します。 ON は、STORE で定義されたデータ・ストアに対してレプリケートされた通信量をすべて圧縮するように指定します。 OFF (デフォルト)は、通信量を圧縮しないように指定します。 詳細は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』のレプリケートされた通信量の圧縮に関する説明を参照してください。 |
CONFLICT REPORTING SUSPEND AT Value |
競合解消のレポートを一時停止します。
この句は、表レベルのレプリケーションに使用します。 |
CONFLICT REPORTING RESUME AT Value |
競合解消のレポートを再開します。
この句は、表レベルのレプリケーションに使用します。 |
DATASTORE |
データ・ストア全体をELEMENT として定義します。 この種類のELEMENT は、同一または異なるレプリケーション・スキームでTABLE 型のELEMENT が構成されていないマスター・データ・ストアに対してのみ定義できます。 詳細は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』のレプリケーション要素の定義に関する説明を参照してください。 |
{INCLUDE|EXCLUDE}
|
INCLUDE は、指定された表、順序またはキャッシュ・グループのみをDATASTORE 要素に含めます。INCLUDE 句は、オブジェクト型(表、順序またはキャッシュ・グループ)ごとに1つ使用します。
|
DISABLE RETURN {SUBSCRIBER|ALL} NumFailures |
NumFailures で指定されているタイムアウト回数を経過した後、RETURNサービスのブロッキングを無効にするようにRETURNサービス障害ポリシーを設定します。 SUBSCRIBER を選択すると、レプリケートされた更新を、指定されているタイムアウト期間内に確認できなかったサブスクライバのみにこのポリシーが適用されます。ALLを選択すると、いずれかのサブスクライバから応答がなかった場合、すべてのサブスクライバにこのポリシーが適用されます。 この障害ポリシーは、RETURN RECEIPT またはRETURN TWOSAFE サービスのいずれかで指定できます。
詳細は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』のRETURNサービスのタイムアウト・エラーおよびレプリケーション状態の変更の管理に関する説明を参照してください。 |
DURABLE COMMIT {ON|OFF} |
DISABLE RETURN によりRETURNサービスのブロッキングが無効になった場合、データ・ストアのDurableCommits 設定を上書きし、永続コミットを有効にします。 |
ELEMENT ElementName |
TimesTenがデータ・ストア間で同期を取るエンティティです。 レプリケーション要素として、TimesTenでは、データ・ストア全体(DATASTORE )および表全体(TABLE )がサポートされています。
詳細は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』のレプリケーション要素の定義に関する説明を参照してください。 |
FAILTHRESHOLD Value |
サブスクライバ・データ・ストアのために累積できるログ・ファイルの数。この値を超えると、サブスクライバはFailedの状態に設定されます。値0は、制限がないことを示します。この設定がデフォルトです。
詳細は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』のログ障害しきい値の設定に関する説明を参照してください。 |
FullStoreName |
次のいずれかとして指定されるデータ・ストアです。
たとえば、データ・ストアのパスが この名前は、DSNの記述の
|
LOCAL COMMIT ACTION {NO ACTION|COMMIT} |
タイムアウト・イベントのRETURN TWOSAFEトランザクションで実行されるデフォルトのアクションを指定します。
注意: この属性は、
この設定は、 |
MASTER FullStoreName |
アプリケーションで特定のELEMENT が更新されるデータ・ストア。 MASTER データ・ストアによって、更新がSUBSCRIBER データ・ストアに送信されます。FullStoreName は、DSNの記述のDataStore 属性で指定されたデータ・ストアであることが必要です。 |
NO RETURN |
RETURNサービスを使用しないように指定します。この設定がデフォルトです。
RETURNサービスの使用の詳細は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』のRETURNサービスの使用に関する説明を参照してください。 |
PORT PortNumber |
データ・ストアのレプリケーション・エージェントが接続をリスニングするTCP/IPポート番号。指定しない場合は、レプリケーション・エージェントによってポート番号が自動的に割り当てられます。 |
PROPAGATOR FullStoreName |
レプリケートされた更新を受け取り、他のデータ・ストアに渡すデータ・ストア。FullStoreName は、DSNの記述のDataStore 属性で指定されたデータ・ストアであることが必要です。 |
RESUME RETURN MilliSeconds |
DISABLE RETURN によってRETURNサービスのブロッキングが無効になった場合、この属性によって、RETURNサービスのブロッキングを再度有効にするタイミングに関するポリシーを設定します。RETURNサービスのブロッキングは、障害が発生したサブスクライバが、MilliSeconds で指定された時間よりも短い間隔でレプリケートされた更新を確認するとすぐに有効になります。
|
RETURN RECEIPT [BY REQUEST] |
RETURN RECEIPTサービスを有効にします。これによって、マスター・データ・ストアに対してトランザクションをコミットするアプリケーションは、すべてのサブスクライバがトランザクションを受信するまでブロックされます。
|
RETURN SERVICES {ON|OFF} WHEN [REPLICATION] STOPPED |
レプリケーション・エージェントが停止または一時停止の状態の場合に、RETURNサービスのブロッキングが変更なし、または無効のいずれかになるように、RETURNサービス障害ポリシーを設定します。
詳細は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』のRETURNサービスのタイムアウト・エラーおよびレプリケーション状態の変更の管理に関する説明を参照してください。 |
RETURN TWOSAFE [BY REQUEST] |
RETURN TWOSAFEサービスを有効にします。これによって、マスター・データ・ストアに対してトランザクションをコミットするアプリケーションは、すべてのサブスクライバがトランザクションをコミットするまでブロックされます。
注意: このサービスは、要素がDATASTOREと定義される場合の双方向レプリケーション・スキームでのみ使用できます。
|
RETURN WAIT TIME Seconds |
RETURNサービスの応答を待機する時間(秒)を指定します。デフォルト値は10秒です。 値0はタイムアウトがないことを意味します。 returnWaitパラメータを設定してアプリケーションからttRepSyncSet プロシージャをコールすることで、このタイムアウト設定を無効にすることができます。 |
SEQUENCE [ Owner .] SequenceName |
[ Owner .] SequenceName によってELEMENT として指定された順序を定義します。詳細は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』のレプリケーション要素の定義に関する説明を参照してください。 |
STORE FullStoreName |
指定されたデータ・ストアの属性を定義します。 データ・ストア属性には、PORT 、TIMEOUT およびFAILTHRESHOLD が含まれています。FullStoreName は、DSNの記述のDataStore 属性で指定されたデータ・ストアであることが必要です。 |
SUBSCRIBER FullStoreName |
MASTER データ・ストアから更新を受け取るデータ・ストアです。FullStoreName は、DSNの記述のDataStore 属性で指定されたデータ・ストアであることが必要です。 |
TABLE [ Owner .] TableName |
[ Owner .] TableName によってELEMENT として指定された表を定義します。詳細は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』のレプリケーション要素の定義に関する説明を参照してください。 |
TIMEOUT Seconds |
メッセージを再送信する前に、データ・ストアが別のデータ・ストアからの応答を待機する時間。デフォルト値は120秒です。 |
TRANSMIT {DURABLE | NONDURABLE} |
コミットされたトランザクション群をサブスクライバに転送する前に、マスターのログをディスクにフラッシュするかどうかを指定します。
注意: 注意: アクティブ・スタンバイ・ペアに対して 詳細は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』のデータ・ストア要素に対する送信永続性の設定に関する説明およびTRANSMIT NONDURABLEによるマスター・データ・ストア全体のレプリケーションに関する説明を参照してください。 |
TABLE DEFINITION CHECKING {EXACT|RELAXED} |
サブスクライバで実行される表定義チェックの種類を指定します。
デフォルトは |
ROUTE MASTER FullStoreName SUBSCRIBER FullStoreName |
NetworkOperation 句を示します。指定されている場合、各サブスクライバ・ストアへのすべてのアウトバウンド接続にマスター・ストアが使用するネットワーク・インタフェースを制御できます。
複数回指定できます。
|
MASTERIP MasterHost | SUBSCRIBERIP SubscriberHost |
MasterHost およびSubscriberHost は、マスターおよびサブスクライバ・ストアのネットワーク・インタフェースのIPアドレスです。 IPV6のドット表記または正規形式で指定するか、あるいはコロン表記で指定します。
句は複数回指定できます。 |
PRIORITY Priority |
1から99の整数で表される変数。IPアドレスの優先順位を示します。整数値が小さいほど、優先度は高くなります。同じ優先度を持つアドレスが複数指定されている場合は、エラーが返されます。 ピア接続の確立に使用する複数のIPアドレスの順序を制御します。
|
構文
CHECK CONFLICTSの構文は、次のとおりです。
{NO CHECK | CHECK CONFLICTS BY ROW TIMESTAMP COLUMN ColumnName [ UPDATE BY { SYSTEM | USER } ] [ ON EXCEPTION { ROLLBACK [ WORK ] | NO ACTION } ] [ {REPORT TO 'FileName' [ FORMAT { XML | STANDARD } ] | NO REPORT } ] }
注意: CHECK CONFLICT句は、TABLE型のELEMENTに対してのみ使用できます。 |
パラメータ
CREATE REPLICATIONまたはALTER REPLICATION文のCHECK CONFLICTS句には、次のパラメータがあります。
パラメータ | 説明 |
---|---|
CHECK CONFLICTS BY ROW TIMESTAMP |
すべての更新競合と一意性競合の検出を指定します。 競合はON EXCEPTION パラメータで指定された方法で解消されます。
DELETE処理と |
COLUMN ColumnName |
レプリケートされた表の列を使用してタイムスタンプを比較します。 表はELEMENT の記述のTableName で指定されます。
|
NO CHECK |
指定された要素に対する競合解消を行わないように指定します。 |
UPDATE BY {SYSTEM | USER} |
タイムスタンプ値をTimesTen(SYSTEM )またはアプリケーション(USER )のどちらで管理するかを指定します。 マスター・データ・ストアおよびサブスクライバ・データ・ストアのレプリケートされた表は、同じUPDATE BY 指定を使用する必要があります。 詳細は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』のシステム・タイムスタンプ列のメンテナンスに関する説明およびユーザー・タイムスタンプ列のメンテナンスに関する説明を参照してください。 デフォルト値は、UPDATE BY SYSTEM です。 |
ON EXCEPTION {ROLLBACK[WORK |NO ACTION} |
検出された競合の解消方法を指定します。 ROW TIMESTAMP 競合の検出には、次の解消オプションがあります。
デフォルト値は、 |
REPORT TO ' FileName ' |
タイムスタンプ比較に失敗した更新を記録するファイルを指定します。 FileName は、1,000文字以下のSQL文字列です(SQL文字列リテラルは一重引用符で囲まれた、空白を含むすべての文字列です)。複数の表で失敗した更新を記録するために、同一のファイルを使用できます。 |
[FORMAT {XML|STANDARD}] |
オプションで、要素の競合レポートの形式を指定します。 デフォルトの形式はSTANDARD です。 |
NO REPORT |
失敗したタイムスタンプの比較を記録しないように指定します。 |
説明
同じホスト上のすべてのデータ・ストア名は、各TimesTenインスタンスの各レプリケーション・スキームについて一意である必要があります。
レプリケーション要素の更新(通常のアプリケーション・トランザクションによる)は、MASTERデータ・ストアを使用してのみ可能です。 PROPAGATORおよびSUBSCRIBERデータ・ストアは読取り専用です。
同じ表を更新する複数のデータ・ストアを許可するレプリケーション・スキームを定義する場合に、行の更新時の競合を回避する方法の推奨事項は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』の競合解消と障害リカバリに関する説明を参照してください。
SELFは、レプリケーション・スキームに関連するデータ・ストアがすべてローカルにあることを前提としています。このため、本番環境では、分散されたレプリケーション・スキームに対してSELFを使用しないでください。本番環境では、各データ・ストアのホスト名をスクリプトで明示することによって、関連する各データ・ストアで使用できます。
指定したSTOREの属性は一度だけ指定するか、または何も指定しません。
単一のレプリケーション・スキームのデータ・ストアのPORTを指定すると、すべてのレプリケーション・スキームに対して指定されます。その他すべてのデータ・ストア属性は、コマンドで指定したレプリケーション・スキームによって異なります。
レプリケーション・スキームでは、DataStoreName
は、常にTimesTenデータ・ストアのチェックポイント・ファイル名の接頭辞になります。チェックポイント処理によってディスクに保存される、接尾辞.ds0
と.ds1
のファイルがチェックポイント・ファイルです。
デフォルト値NOT INLINE VARCHARが指定されている行がレプリケートされる場合、受信者側のノードのデフォルト値が送信者側のノードのデフォルト値と異なる場合にのみ、受信者はデフォルト値を指すかわりに、各行に対してこの値のコピーを作成します。
レプリケートされた表でタイムスタンプ比較を使用するには、NULL値可能なBINARY(8)型の列を指定して、タイムスタンプ値を保持する必要があります。タイムスタンプ列は、表の作成時に定義します。 ALTER TABLE文でタイムスタンプ列を追加することはできません。 また、タイムスタンプ列を主キーまたは索引に含めることはできません。
XMLのレポート形式を指定した場合、2つのXMLドキュメントが生成されます。
FileName
.xml
: このファイルには、レポート用のDTDおよびレポートのルート・ノードが含まれます。このファイルには、ドキュメント定義とINCLUDEディレクティブが含まれます。
FileName
.include
: このファイルはFileName
.xml
に含まれており、実際の競合がすべて含まれます。
FileName
.include
ファイルは切捨て可能です。 FileName
.xml
ファイルの切捨ては行わないでください。
XML形式に関する詳細と各競合の例は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』のXMLファイルへの競合のレポートに関する説明を参照してください。
要素のレポート形式を指定した後でその要素を削除しても、対応するレポート・ファイルは削除されません。
競合解消のレポートを一時停止する最高水位標のしきい値を指定するには、CONFLICT REPORTING SUSPEND AT句を使用します。1秒当たりの競合数が指定した最高水位標のしきい値を超えると、競合解消のレポート(構成済で、レポート・ファイルによってレポートされる場合)およびSNMPが一時的に停止され、一時停止を知らせるSNMPトラップが発行されます。
競合解消のレポートを再開する最低水位標のしきい値を指定するには、CONFLICT REPORTING RESUME AT句を使用します。競合の割合が最低水位標のしきい値を下回ると、競合解消のレポートが再開されます。競合解消の再開を知らせるSNMPトラップが発行されます。このトラップでは、競合解消の一時停止中にレポートされなかった競合の数が通知されます。
レプリケーション・エージェントによって競合のレポートが一時停止されている状態または一時停止されていない状態は、ローカル・レプリケーション・エージェントとピア・エージェントが停止および再起動された後は維持されません。
動的読取り専用キャッシュ・グループを非同期でレプリケートする場合にCREATE REPLICATION文を使用しないでください。 CREATE ACTIVE STANDBY PAIR文を使用してください。
例
repl.tab
の内容をmasterds
から2つのサブスクライバsubscriber1ds
およびsubscriber2ds
にレプリケートします。
CREATE REPLICATION repl.twosubscribers ELEMENT e TABLE repl.tab MASTER masterds ON "server1" SUBSCRIBER subscriber1ds ON "server2", subscriber2ds ON "server3";
masterds
データ・ストア全体をサブスクライバsubscriber1ds
にレプリケートします。 FAILTHRESHOLDを指定すると、subscriber1ds
が失敗したとみなされる前に、最大10のログ・ファイルをmasterds
に蓄積します。
CREATE REPLICATION repl.wholestore ELEMENT e DATASTORE MASTER masterds ON "server1" SUBSCRIBER subscriber1ds ON "server2" STORE masterds FAILTHRESHOLD 10;
westds
およびeastds
データ・ストア全体を双方向にレプリケートして、RETURN TWOSAFEサービスを有効にします。
CREATE REPLICATION repl.biwholestore ELEMENT e1 DATASTORE MASTER westds ON "westcoast" SUBSCRIBER eastds ON "eastcoast" RETURN TWOSAFE ELEMENT e2 DATASTORE MASTER eastds ON "eastcoast" SUBSCRIBER westds ON "westcoast" RETURN TWOSAFE;
subscriber1ds
サブスクライバへの選択トランザクション更新に対して、RETURN RECEIPTサービスを有効にします。
CREATE REPLICATION repl.twosubscribers ELEMENT e TABLE repl.tab MASTER masterds ON "server1" SUBSCRIBER subscriber1ds ON "server2" RETURN RECEIPT BY REQUEST SUBSCRIBER subscriber2ds ON "server3";
west
データ・ストアのcustomerswest
表の内容をROUNDUP
データ・ストアにレプリケートし、同様に、east
データ・ストアのcustomerseast
表をROUNDUP
データ・ストアにレプリケートします。すべてのトランザクションに対してRETURN RECEIPTサービスを有効にします。
CREATE REPLICATION r ELEMENT west TABLE customerswest MASTER west ON "serverwest" SUBSCRIBER roundup ON "serverroundup" RETURN RECEIPT ELEMENT east TABLE customerseast MASTER east ON "servereast" SUBSCRIBER roundup ON "serverroundup" RETURN RECEIPT;
centralds
データ・ストアのrepl.tab
表の内容をpropds
データ・ストアにレプリケートします。これにより、backup1ds
およびbackup2ds
データ・ストアに変更が伝播されます。
CREATE REPLICATION repl.propagator ELEMENT a TABLE repl.tab MASTER centralds ON "finance" SUBSCRIBER proprds ON "nethandler" ELEMENT b TABLE repl.tab PROPAGATOR proprds ON "nethandler" SUBSCRIBER backup1ds ON "backupsystem1" bakcup2ds ON "backupsystem2";
eastds
とwestds
データ・ストアの間で、repl.accounts
表の内容を双方向でレプリケートします。 各データ・ストアは、repl.accounts
表のマスターとサブスクライバの両方として設定されます。
repl.accounts
表がeastds
とwestds
データ・ストアのいずれかで更新されるため、ここにはタイムスタンプ列(tstamp
)が含まれます。CHECK CONFLICTS句により、2つのデータ・ストア間で発生した更新競合を検出するための自動タイムスタンプ比較が開始されます。比較が失敗すると、古いタイムスタンプを持つ更新が含まれるトランザクションの全体がロールバック(破棄)されます。
CREATE REPLICATION repl.r1 ELEMENT elem_accounts_1 TABLE repl.accounts CHECK CONFLICTS BY ROW TIMESTAMP COLUMN tstamp UPDATE BY SYSTEM ON EXCEPTION ROLLBACK MASTER westds ON "westcoast" SUBSCRIBER eastds ON "eastcoast" ELEMENT elem_accounts_2 TABLE repl.accounts CHECK CONFLICTS BY ROW TIMESTAMP COLUMN tstamp UPDATE BY SYSTEM ON EXCEPTION ROLLBACK MASTER eastds ON "eastcoast" SUBSCRIBER westds ON "westcoast";
RETURN TWOSAFEサービスを使用して、repl.accounts
表の内容をactiveds
データ・ストアからbackupds
データ・ストアにレプリケートします。activeds
ではTCP/IPポート40000、backupds
ではTCP/IPポート40001を使用します。 activeds
でのトランザクションでは、可能な場合に常にコミットする必要があります。そのため、LOCAL COMMIT ACTIONを使用してレプリケーションのタイムアウト後もトランザクションがコミットされるように、また、レプリケーションが停止するとRETURN TWOSAFEサービスが無効になるようにレプリケーションを構成します。 backupds
データ・ストアへの接続が中断された場合にアプリケーションでの大幅な遅延を回避するには、5つのトランザクションがタイムアウトすると無効になるようにRETURNサービスを構成します。また、RETURNサービスは、backupds
データ・ストアのレプリケーション・エージェントが100ミリ秒未満で応答した場合に再度有効になるようにも構成します。 最後に、データ・ストア間の帯域幅は制限されているため、データをactiveds
データ・ストアからレプリケートする場合にそのデータが圧縮されるようにレプリケーションを構成します。
CREATE REPLICATION repl.r ELEMENT elem_accounts_1 TABLE repl.accounts MASTER activeds ON "active" SUBSCRIBER backupds ON "backup" RETURN TWOSAFE ELEMENT elem_accounts_2 TABLE repl.accounts MASTER activeds ON "active" SUBSCRIBER backupds ON "backup" RETURN TWOSAFE STORE activeds ON "active" PORT 40000 LOCAL COMMIT ACTION COMMIT RETURN SERVICES OFF WHEN REPLICATION STOPPED DISABLE RETURN SUBSCRIBER 5 RESUME RETURN 100 COMPRESS TRAFFIC ON STORE backupds ON "backup" PORT 40001;
表レベルのレプリケーションで競合のレポートを一時停止する句と競合のレポートを再開する句の例を示します。これらの句は、データ・ストア・レプリケーションではなく、表レベルのレプリケーションに対して使用します。 repschemes
コマンドを発行して、レプリケーション・スキームが作成されていることを表示します。
Command> CREATE TABLE repl.accounts (tstamp BINARY (8) NOT NULL PRIMARY KEY, tstamp1 BINARY (8)); Command> CREATE REPLICATION repl.r2 > ELEMENT elem_accounts_1 TABLE repl.accounts > CHECK CONFLICTS BY ROW TIMESTAMP > COLUMN tstamp1 > UPDATE BY SYSTEM > ON EXCEPTION ROLLBACK WORK > MASTER westds ON "west1" > SUBSCRIBER eastds ON "east1" > ELEMENT elem_accounts_2 TABLE repl.accounts > CHECK CONFLICTS BY ROW TIMESTAMP > COLUMN tstamp1 > UPDATE BY SYSTEM > ON EXCEPTION ROLLBACK WORK > MASTER eastds ON "east1" > SUBSCRIBER westds ON "west1" > STORE westds > CONFLICT REPORTING SUSPEND AT 20 > CONFLICT REPORTING RESUME AT 10; Command> REPSCHEMES; Replication Scheme REPL.R2: Element: ELEM_ACCOUNTS_1 Type: Table REPL.ACCOUNTS Conflict Check Column: TSTAMP1 Conflict Exception Action: Rollback Work Conflict Timestamp Update: System Conflict Report File: (none) Master Store: WESTDS on WEST1 Transmit Durable Subscriber Store: EASTDS on EAST1 Element: ELEM_ACCOUNTS_2 Type: Table REPL.ACCOUNTS Conflict Check Column: TSTAMP1 Conflict Exception Action: Rollback Work Conflict Timestamp Update: System Conflict Report File: (none) Master Store: EASTDS on EAST1 Transmit Durable Subscriber Store: WESTDS on WEST1 Store: EASTDS on EAST1 Port: (auto) Log Fail Threshold: (none) Retry Timeout: 120 seconds Compress Traffic: Disabled Store: WESTDS on WEST1 Port: (auto) Log Fail Threshold: (none) Retry Timeout: 120 seconds Compress Traffic: Disabled Conflict Reporting Suspend: 20 Conflict Reporting Resume: 10 1 replication scheme found.
2つのMASTERIP句とSUBSCRIBERIP句を使用したNetworkOperation
句の例を示します。
CREATE REPLICATION r ELEMENT e DATASTORE MASTER rep1 SUBSCRIBER rep2 RETURN RECEIPT MASTERIP "1.1.1.1" PRIORITY 1 SUBSCRIBERIP "2.2.2.2" PRIORITY 1 MASTERIP "3.3.3.3" PRIORITY 2 SUBSCRIBERIP "4.4.4.4" PRIORITY 2;
NetworkOperation
句の例を示します。送信側にはデフォルトのインタフェースを使用しますが、受信側には特定のネットワークを使用します。
CREATE REPLICATION r ELEMENT e DATASTORE MASTER rep1 SUBSCRIBER rep2 ROUTE MASTER rep1 ON "machine1" SUBSCRIBER rep2 ON "machine2" SUBSCRIBERIP "rep2nic2" PRIORITY 1;
複数のサブスクライバを使用するNetworkOperation
句の使用例を示します。
CREATE REPLICATION r ELEMENT e DATASTORE MASTER rep1 SUBSCRIBER rep2,rep3 ROUTE MASTER rep1 ON "machine1" SUBSCRIBER rep2 ON "machine2" MASTERIP "1.1.1.1" PRIORITY 1 SUBSCRIBERIP "2.2.2.2" PRIORITY 1 ROUTE MASTER Rep1 ON "machine1" SUBSCRIBER Rep3 ON "machine2" MASTERIP "3.3.3.3" PRIORITY 2 SUBSCRIBERIP "4.4.4.4";
関連項目