ネットワークの構成
ネットワーク経由でTimesTenデータをレプリケートする場合は、いくつかの問題について考慮する必要があります。
ネットワーク帯域幅要件
TimesTen Classicレプリケーションに必要なネットワーク帯域幅は、レプリケートしているデータの量および頻度によって異なります。
ここでは、データ範囲の上位と下位、およびTimesTenデータベース間でデータをレプリケートするために必要なネットワーク帯域幅を特徴付けるトランザクションのタイプについて説明します。
表4-1は、レプリケート・レコードのサイズを計算するためのガイドラインを示しています。
表4-1 レプリケートされたレコードのサイズ
レコード・タイプ | サイズ |
---|---|
開始トランザクション |
48バイト |
更新 |
116バイト +18バイト(更新された列ごとに) +古い列値のサイズ +新しい列値のサイズ +主キーまたは一意キーのサイズ |
削除 |
104バイト +主キーまたは一意キーのサイズ |
挿入 |
104バイト +主キーまたは一意キーのサイズ +挿入された行のサイズ |
トランザクションはレプリケート対象のデータベース間をバッチで送信されます。マスター・データベースのトランザクション・ログ・バッファにデータがなくなった場合、または現在のバッチがほぼ256KBである場合にバッチが作成されます。「データベース間の更新のコピー」を参照してください。
WAN環境でのレプリケーション
TimesTen ClassicレプリケーションではTCP/IPプロトコルを使用していますが、このプロトコルはWAN環境用には最適化されていません。WANでのレプリケーションのパフォーマンスは、サードパーティのTCPスタック製品を使用して向上できます。
TCPスタックの交換を実行できない場合は、CREATE ACTIVE STANDBY PAIR
文またはCREATE REPLICATION
文にCOMPRESS TRAFFIC
属性を設定して、TCP/IPプロトコルで処理する必要があるネットワーク通信量を削減します。「レプリケートの通信量の圧縮」を参照してください。
パフォーマンスを向上させるためにTCP/IPカーネル・パラメータを変更する方法については、『Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイド』のAIXの前提条件またはLinuxの前提条件を参照してください。
ROUTE句を使用したネットワーク・インタフェースの構成
レプリケーション・スキームでは、データベースが存在するホストの名前を指定する必要があります。そのホスト名は、オペレーティング・システムによって1つ以上のIPアドレスに変換されます。
レプリケーション要素でデータベースのホストを指定する場合は、hostname
コマンドによって返される名前を常に使用する必要があります(レプリケーションでは、それと同じホスト名を使用して、現在のホストがレプリケーション・スキームに含まれていることを確認するためです)。現在のホストが含まれないレプリケーション・スキームは作成できません。
データベース名を指定するときに、オペレーティング・システムのhostname
コマンドが返すホスト名を指定する必要はありますが、ROUTE
句を使用することで、別のインタフェース(デフォルト以外)でトラフィックを送受信するようにレプリケーションを構成できます。
ホストに(IPアドレスが異なる)複数のネットワーク・インタフェースがある場合は、レプリケーションでデフォルトのインタフェースを使用しないかぎり、使用するインタフェースをROUTE
句で指定する必要があります。また、各インタフェースに対して優先順位を指定する必要もあります。レプリケーションでは、まず優先順位が最も高いアドレスを使用して接続が試行され、その接続を確立できなかった場合は、接続が確立されるまで優先順に残りのアドレスが試されます。あるIPアドレスを使用しているときにホストへの接続が失敗すると、ROUTE
句で複数のアドレスが指定されている場合は、別のIPアドレスへの再接続(フォールバック)が試行されます。
ROUTE
句の構文は次のようになります。
ROUTE MASTER FullDatabaseName SUBSCRIBER FullDatabaseName {{MASTERIP MasterHost | SUBSCRIBERIP SubscriberHost} PRIORITY Priority} [...]
ノート:
ROUTE
句のアドレスは、ホスト名またはIPアドレスのいずれかとして指定できます。ただし、あるホスト名に対して複数のIPアドレスが構成されているホストの場合は、意図したIPアドレスのみをレプリケーションで確実に使用するために、IPアドレスを使用してROUTE
句を構成する必要があります。
-
アクティブ・スタンバイ・ペアで
ROUTE
句を使用する場合、各マスター・データベースは他のマスター・データベースのサブスクライバであり、各読取り専用サブスクライバは両方のマスター・データベースのサブスクライバです。これは、両方のディレクトリに1つのルートを指定するには、CREATE ACTIVE STANDBY PAIR
文に2の倍数でROUTE
句が含まれている必要があることを意味します。 -
二重のマスターを定義するクラシック・レプリケーション・スキームで
ROUTE
句を使用する場合、各マスター・データベースはもう1つのマスター・データベースのサブスクライバになります。これは、両方のディレクトリに1つのルートを指定するには、CREATE REPLICATION
文に2の倍数でROUTE
句が含まれている必要があることを意味します。
次の例は、アクティブ・スタンバイ・ペアに対して複数のネットワーク・インタフェースを構成する方法を示しています。
ホストhost1
にはホスト名host1fast
でアクセス可能な2つ目のインタフェースが構成されており、host2
にはIPアドレス192.168.1.100
でアクセス可能な2つ目のインタフェースが構成されている場合、次のようにすると、2つ目のインタフェースをレプリケーション・スキームで使用するように指定できます。
CREATE ACTIVE STANDBY PAIR dsn1, dsn2 ROUTE MASTER dsn1 ON "host1" SUBSCRIBER dsn2 ON "host2" MASTERIP "host1fast" PRIORITY 1 SUBSCRIBERIP "192.168.1.100" PRIORITY 1 ROUTE MASTER dsn2 ON "host2" SUBSCRIBER dsn1 ON "host1" MASTERIP "192.168.1.100" PRIORITY 1 SUBSCRIBERIP "host1fast" PRIORITY 1;
次の例は、クラシック・レプリケーション・スキームに対して複数のネットワーク・インタフェースを構成する方法を示しています。
ホストhost1
にはホスト名host1fast
でアクセス可能な2つ目のインタフェースが構成されており、host2
にはIPアドレス192.168.1.100
でアクセス可能な2つ目のインタフェースが構成されている場合、次のようにすると、2つ目のインタフェースをレプリケーション・スキームで使用するように指定できます。
CREATE REPLICATION repscheme ELEMENT e1 TABLE ttuser.tab MASTER dsn1 ON host1 SUBSCRIBER dsn2 ON host2 ELEMENT e2 TABLE ttuser.tab MASTER dsn2 ON host2 SUBSCRIBER dsn1 ON host1 ROUTE MASTER dsn1 ON host1 SUBSCRIBER dsn2 ON host2 MASTERIP host1fast PRIORITY 1 SUBSCRIBERIP "192.168.1.100" PRIORITY 1 ROUTE MASTER dsn2 ON host2 SUBSCRIBER dsn1 ON host1 MASTERIP "192.168.1.100" PRIORITY 1 SUBSCRIBERIP host1fast PRIORITY 1;
また、インタフェースが複数あるレプリケーション・ホストでは、プライマリ・インタフェースに障害が発生したり、そのインタフェースと受信ホストとの間の接続が切断した場合に備えて、1つ以上のインタフェースをバックアップとして使用するようにレプリケーションを構成できます。ROUTE
句を使用すると、それぞれのマスターおよびサブスクライバに対して複数のインタフェースを指定し、優先順位に従ってレプリケーションで使用することができます。
マスター・ホストのレプリケーションが、優先順位の最も高いMASTERIP
にバインドできなかった場合は、ただちに次の優先順位のMASTERIP
アドレスを使用して接続が試行されます。ただし、サブスクライバへの接続がなんらかの理由で失敗した場合は、次に優先順位の高いMASTERIP
アドレスを試す前に、それぞれのSUBSCRIBERIP
アドレスを優先順に使用して接続が試行されます。
次の例は、アクティブ・スタンバイ・ペアのネットワーク優先度を構成する方法を示しています。
ホストhost1
に2つのネットワーク・インタフェース(IPアドレスは192.168.1.100
と192.168.1.101
)が構成され、ホストhost2
に2つのインタフェース(IPアドレスは192.168.1.200
と192.168.1.201
)が構成されている場合は、まずIPアドレス192.168.1.100
および192.168.200
を使用してトラフィックの送受信を行い、その接続に障害が発生したときはIPアドレス192.168.1.101
または192.168.1.201
を試行するようにレプリケーションを設定できます。
CREATE ACTIVE STANDBY PAIR dsn1, dsn2 ROUTE MASTER dsn1 ON "host1" SUBSCRIBER dsn2 ON "host2" MASTERIP "192.168.1.100" PRIORITY 1 MASTERIP "192.168.1.101" PRIORITY 2 SUBSCRIBERIP "192.168.1.200" PRIORITY 1 SUBSCRIBERIP "192.168.1.201" PRIORITY 2;
次の例は、クラシック・レプリケーション・スキームに対してネットワーク優先度を構成する方法を示しています。
ホストhost1
に2つのネットワーク・インタフェース(IPアドレスは192.168.1.100
と192.168.1.101
)が構成され、ホストhost2
に2つのインタフェース(IPアドレスは192.168.1.200
と192.168.1.201
)が構成されている場合は、まずIPアドレス192.168.1.100
および192.168.200
を使用してトラフィックの送受信を行い、その接続に障害が発生したときはIPアドレス192.168.1.101
または192.168.1.201
を試行するようにレプリケーションを設定できます。
CREATE REPLICATION repscheme ELEMENT e TABLE ttuser.tab MASTER dsn1 ON host1 SUBSCRIBER dsn2 ON host2 ROUTE MASTER dsn1 ON host1 SUBSCRIBER dsn2 ON host2 MASTERIP "192.168.1.100" PRIORITY 1 MASTERIP "192.168.1.101" PRIORITY 2 SUBSCRIBERIP "192.168.1.200" PRIORITY 1 SUBSCRIBERIP "192.168.1.201" PRIORITY 2;
ROUTE句を使用しない場合のネットワーク・インタフェースの構成
ROUTE
句を使用しない場合に各ホストについて正しいホスト名とIPアドレスが使用されるように、レプリケーションを構成できます。
ROUTE句の使用なしでのUNIXまたはLinux上にあるデータベース・ホストの指定
データベース・ホストと、レプリケーションに使用するネットワーク・インタフェースを指定するには、可能な場合は、レプリケーション・スキームのROUTE
句を使用する必要があります。
ROUTE
句を使用しないレプリケーション・スキーム構成がある場合は、複数のネットワーク・インタフェースがあるレプリケーション・ホスト用にオペレーティング・システムおよびDNSファイルを構成できます。
ホストに(IPアドレスが異なる)複数のネットワーク・インタフェースがあり、レプリケーションがROUTE
句で構成されていない場合、TimesTen Classicレプリケーションでは、gethostbyname
コールによって返される順序と同じ順序でIPアドレスへの接続が試行されます。最初のアドレスを使用して接続が試行され、その接続を確立できなかった場合は、接続が確立されるまで順番に残りのアドレスが試行されます。TimesTen Classicレプリケーションでは、ホストへの新しい接続を確立するたびに、この同じ順序が使用されます。あるIPアドレスでホストへの接続が失敗すると、TimesTen Classicレプリケーションでは前述の方法と同じ方法でホストの別のIPアドレスへの再接続(フォールバック)が試行されます。
UNIXまたはLinuxプラットフォームで複数のIPアドレスを使用するようにホストを構成するには、2つの基本的な方法があります: DNSまたは/etc/hosts
ファイルです。
ノート:
ネットワーク・インタフェース・カード(NIC)が複数ある場合は、/etc/host.conf
ファイルでmulti on
を指定してください。指定しないと、gethostbyname
は複数のアドレスを返すことができません。
たとえば、マシンに2つのNICがある場合は、/etc/hosts
ファイルに次の構文を使用します。
127.0.0.1 localhost IP_address_for_NIC_1 official_hostname optional_alias IP_address_for_NIC_2 official_hostname optional_alias
ホスト名official_hostname
は、hostname
コマンドによって返される名前です。
/etc/hosts
ファイルを編集する場合は、次のことに注意してください。
-
/etc/hosts
ファイルを変更するには、root
としてログインする必要があります。 -
1つのIPアドレスにつき使用できるのは1行のみです。
-
各行には複数の別名を含めることができます。
-
同じホスト名に対して複数のIPアドレスがある場合、IPアドレスは連続した行に入力する必要があります。
-
ホスト名は最大30文字です。
たとえば、UNIXまたはLinuxプラットフォームにある/etc/hosts
ファイルの次のエントリは、2つのIPアドレスがあるHost1
というサーバーを示します。
127.0.0.1 localhost 10.10.98.102 Host1 192.168.1.102 Host1
DNSに同じ構成を指定する場合、ドメイン・ゾーン・ファイルに次のように入力します。
Host1 IN A 10.10.98.102 IN A 192.168.1.102
いずれの場合も、レプリケーション・スキームでホスト名としてHost1
を指定するだけで、レプリケーションでは接続の確立時に最初の使用可能なIPアドレスが使用されます。
複数のIPアドレスが使用される環境では、レプリケーション接続を特定のIPアドレスに制限するために、1つのIPアドレスに複数のホスト名を割り当てることもできます。たとえば、/etc/hosts
ファイルに次のように入力できます。
127.0.0.1 localhost 10.10.98.102 Host1 192.168.1.102 Host1 RepHost1
または、DNSゾーン・ファイルに次のように入力できます。
Host1 IN A 10.10.98.102 IN A 192.168.1.102 RepHost1 IN A 192.168.1.102
レプリケーション接続をこのホストのIPアドレス192.168.1.102
に制限する場合は、レプリケーション・スキームにホスト名としてRepHost1
を指定できます。別の方法として、レプリケーション・スキームの構成に使用するCREATE ACTIVE STANDBY PAIR
文またはCREATE REPLICATION
文で、ホスト名として単にIPアドレスを指定する方法をあげることができます。
ノート:
レプリケーション・スキームでのデータベース・ホストの指定は一貫している必要があります。あるデータベースにIPアドレスを使用してホストを指定した後、同じデータベースまたは別のデータベースにそのホスト名は使用しないでください。
TimesTenデーモンおよびサブデーモンのユーザー指定アドレス
デフォルトでは、TimesTenのメイン・デーモン、すべてのサブデーモン、およびすべてのエージェントは、使用可能な任意のアドレスを使用してソケット上でリクエストをリスニングします。
timesten.conf
ファイルを変更してlisten_addr
オプションを設定すると、エージェントとデーモン間の通信用アドレスを指定できます。
『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTenデーモン属性の管理を参照してください。
マシンに2つのNICがあり、NICのアドレスがそれぞれ10.10.10.100
と10.10.11.200
であるとします。ループバック・アドレスは127.0.0.1
です。ループバック・アドレスをレプリケーション・エージェントに適用する場合は次のことに注意してください。
-
timesten.conf
ファイルのlisten_addr
オプションを設定しなかった場合、すべてのプロセスがデーモンおよびエージェントと対話できます。 -
listen_addr
を10.10.10.100
に設定した場合、ローカル・ホストまたは10.10.10
ネットのすべてのプロセスが10.10.10.100
のデーモンおよびエージェントと対話できます。10.10.11
ネット上のプロセスでは、10.10.10.100
のデーモンおよびエージェントと対話できません。 -
listen_addr
を127.0.0.1
に設定した場合、ローカル・ホストのプロセスのみがデーモンおよびエージェントと対話できます。他のホストのプロセスでは、デーモンおよびエージェントと対話できません。
レプリケートされたデータベースのローカル・ホストの識別
通常、TimesTen Classicレプリケーションでは、レプリケーション構成に含まれるホストは、オペレーティング・システムの一般的なホスト名の解決方法で識別できます。
ただし、ホスト名の構成が一般的でない場合、レプリケーション・スキームに指定されたホスト名とローカル・ホストが一致しているかどうかをTimesTenで判別できないことがまれにあります。このような状態でttRepStart
またはttAdmin
-repStart
を使用してレプリケーションを開始しようとすると、エラー8191「This store is not involved in a replication scheme」を受信することになります。
この場合は、ttHostNameSet
組込みプロシージャを使用して、現在のデータベースが、レプリケーション・スキームで指定されているデータベースであることをTimesTenに明示的に示すことができます。『Oracle TimesTen In-Memory Databaseリファレンス』のttHostNameSetを参照してください。