データベースの分散スキームの設定または変更(dbDistribute)
dbDistribute
コマンドは、データベースの分散マップでデータベースの要素を追加、削除、除外および置換した後、要素間にデータを分散または再分散できます。変更を適用しデータを再配布するには、常に-apply
を使用する必要があります。これは、同じコマンドまたは別のコマンドのいずれかで実行できます。
ttGridAdmin dbDistribute name [-list] [-add all | hostname[.instancename]] [-remove hostname[.instancename] [-replaceWith hostname[.instancename]]] [-evict hostname[.instancename] [-replaceWith hostname[.instancename]]] [-apply|-reset|-resync]
dbDistribute
を使用する前に、操作を実行するすべてのインスタンスに要素がロードされるまで待機します。dbStatus
コマンドを使用すると、これを確認できます。
詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の「データベースの分散マップの定義」を参照してください。
オプション
dbDistribute
コマンドには、次のオプションがあります。
オプション | 説明 |
---|---|
|
データ分散変更の対象となるデータベースの名前。 |
- |
分散マップに要素を追加します。グリッドにある既存のすべての要素か、指定したインスタンスにある要素のいずれかです。(インスタンスが停止しているために要素が作成されなかった場合、 用途ごとに1つのインスタンスを指定しますが、 追加が適用されると、データはグリッド全体に均等に分散されます。 ノート:
また、このオプションと、 |
|
このオプションは、古いホスト・システムを新しいものと置き換えるなど、要素を削除し、必要に応じて置換する場合に使用します。また、次の「ノート」も参照してください。 用途ごとに1つのインスタンスを指定しますが、 通常は、
ノート: 『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の「データベース内のデータの再分散」も参照してください。 |
|
このオプションは、レプリカ・セットのすべての要素( 重要: 用途ごとに1つのインスタンスを指定しますが、
ノート:
詳細は、次の「ノート」も参照してください。 詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の「データベース内のデータの再分散」を参照してください。 |
|
必要に応じて、指定した置換に同じデータを含めるには、これを
|
|
データベースの現在および保留中の分散マップを表示します(それぞれ「Holds Data」および「Will Hold Data」)。 |
|
データベースに新しい分散を適用します。このオプションを単独で使用して、以前のコマンドから設定を適用したり、同じコマンドラインにその設定を指定できます。 |
|
まだ適用されていないすべての分散設定を破棄します。このオプションは他のオプションと組み合せることはできません。 ノート: 分散( |
|
このオプションは他の 関連情報については、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の「データ分散エラーからのリカバリ」を参照してください。 ノート: |
例
この例では、分散マップにグリッド内のすべての要素を追加し、要素間でデータを分散します。
% ttGridAdmin dbDistribute database1 -add all -apply Distribution map updated
その後、-list
オプションを使用して、グリッド内の要素(データを保持できる要素)の分散マップを表示できます。
% ttGridAdmin dbDistribute database11 -list Distribution Map version: 1 RS Host Instance Holds Data Will Hold Data Removed Evicted -- ----------- --------- ---------- -------------- ------- ------- 1 mysys3host griddata1 Y Y N N 1 mysys4host griddata2 Y Y N N 2 mysys5host griddata3 Y Y N N 2 mysys6host griddata4 Y Y N N
ここで、レプリカ・セット1の両方の要素を削除します。-list
の出力を再度参照すると、その2つの要素がグリッドから削除され、そのためにデータを保持できないことが示されています。
% ttGridAdmin dbDistribute database1 -remove mysys3host.griddata1 Element mysys3host.griddata1 is removed Distribution map change enqueued % ttGridAdmin dbDistribute database1 -remove mysys4host.griddata2 Element mysys4host.griddata2 is removed Distribution map change enqueued % ttGridAdmin dbDistribute database1 -apply Distribution map updated % ttGridAdmin dbDistribute database1 -list Distribution Map version: 3 RS Host Instance Holds Data Will Hold Data Removed Evicted ---- ----------- --------- ---------- -------------- ------- ------- NULL mysys3host griddata1 N N Y N NULL mysys4host griddata2 N N Y N 1 mysys5host griddata3 Y Y N N 1 mysys6host griddata4 Y Y N N
次に、2つの要素(同じレプリカ・セットのもの)を除外する新しい例を示します。-list
の出力を参照すると、2つの要素がグリッドから除外され、そのためにデータを保持できないことが示されています。
% ttGridAdmin dbDistribute database1 -evict mysys3host.griddata1 -evict mysys4host.griddata2 -apply Distribution map updated % ttGridAdmin dbDistribute database1 -list Distribution Map version: 2 RS Host Instance Holds Data Will Hold Data Removed Evicted ---- ---------- --------- ---------- -------------- ------- ------- NULL mysys3host griddata1 N N N Y NULL mysys4host griddata2 N N N Y 1 mysys5host griddata3 Y Y N N 1 mysys6host griddata4 Y Y N N
この例では、-resync
オプションを指定してデータ分散操作が正常に完了します。
% ttGridAdmin dbDistribute database1 -apply ...
(処理が失敗したか、中断された。)
% ttGridAdmin dbDistribute database1 -resync Distributiom map updated
この例では、-resync
オプションを指定してデータ分散操作がロールバックします。
% ttGridAdmin dbDistribute database1 -apply ...
(処理が失敗したか、中断された。)
% ttGridAdmin dbDistribute database1 -resync Distributiom map Rolled Back
ノート
-
-list
および-resync
は、分散の進行中に使用できます。分散が進行中の場合、他の操作は失敗します。 -
要素を指定するには、そのインスタンスを
hostname
[.
instancename
]
として表現します。ホスト名は必須です。インスタンス名は、ホストにインスタンスが複数ある場合にのみ必須です。(「グリッド・オブジェクトとオブジェクト・ネーミング」を参照してください。) -
各レプリカ・セットに存在する要素を確認する必要がある場合は、
-replicaSet
オプションを指定したdbStatus
コマンドを使用します。 -
要素が分散から削除または除外された後にできることは、
dbDestroy -instance
でそれを削除することのみとなります。これを可能なかぎり早く実行して、その要素が使用していたディスク領域を再利用できるようにすることをお薦めします。インスタンスを後で再度使用する場合は、dbCreate -instance
で要素を再作成して、分散に追加する必要があります。 -
k=2
で、レプリカ・セットのいずれかの要素にリカバリ不能な障害がある場合は、-remove
および-replaceWith
を使用して、レプリカ・セットが再度完全に動作するようにします。アクティブなレプリカが使用可能なときは、-evict
を使用しないでください。 -
レプリカ・セットのすべての要素が停止している場合は、グローバル操作を実行できません。レプリカ・セットのいずれかの要素をリカバリできない場合、レプリカ・セットからその要素を除外すると、グローバル操作を再度実行できるようになります。ただし、データは完全に失われます。
-
-replaceWith
ではなく-add
を使用して、除外されたレプリカ・セットの要素を置き換えることもできますが、いずれにしても、除外されたレプリカ・セットのデータは失われます。また、-add
を指定した場合はデータの再分散が発生しますが、-replaceWith
(-evict
または-remove
のいずれかで使用)を指定した場合は発生しません。詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の「レプリカ・セットに永続的な障害が発生した要素がある場合のリカバリ」を参照してください。 -
障害モードの詳細および考慮事項は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の「障害からのリカバリ」を参照してください。