レプリカ・セットに永続的な障害が発生した要素がある場合のリカバリ

永続的な障害が発生したために、レプリカ・セット内の要素またはレプリカ・セット全体がリカバリ不可能な場合は、障害が発生した要素を削除するか、障害が発生したレプリカ・セットを除去する必要があります。

ホストに永続的な障害が発生した場合またはレプリカ・セット内のすべての要素に障害が発生した場合に、永続的な障害が発生することがあります。

  • レプリカ・セット内のすべての要素に永続的な障害が発生した場合は、レプリカ・セット全体を除去する必要があります。これにより、そのレプリカ・セット内の要素のデータは完全に失われます。

    k = 1の場合、1つの要素の永続的な障害はレプリカ・セットの障害です。k >= 2の場合は、レプリカ・セット内のすべての要素に障害が発生した場合にのみ、レプリカ・セットに障害が発生したとみなされます。k >= 2で、レプリカ・セットに永続的な障害が発生した場合は、レプリカ・セットのすべての要素を同時に除去する必要があります。

    レプリカ・セットを除去すると、グリッドの分散からそのレプリカ・セットが削除されます。ただし、障害が発生したレプリカ・セットがデータベース内の唯一のレプリカ・セットである場合は、レプリカ・セットを除去できません。この場合、チェックポイント・ファイル、トランザクション・ログ・ファイルまたはデーモン・ログ・ファイル(可能な場合)をすべて保存してから、データベースを破棄して再作成します。

    レプリカ・セットが停止した場合:

    • Durabilityが0である場合、データベースは読取り専用モードになります。

    • Durabilityが1である場合、障害が発生したレプリカ・セットを含むすべてのトランザクションは、障害が発生したレプリカ・セットが除去されるまでブロックされます。ただし、障害が発生したレプリカ・セットを含まないすべてのトランザクションは、何も問題がないかのように動作を継続します。

  • k >= 2で、レプリカ・セットの1つの要素のみに障害が発生した場合、障害が発生した要素を新しい要素で置換できるまで、アクティブな要素の1つがデータに対するすべてのリクエストを引き継ぎます。このため、障害が発生してもデータは失われません。レプリカ・セット内で選択されたアクティブな要素が、受信トランザクションを処理します。単純に、障害が発生した要素を削除し、レプリカ・セット内のアクティブな要素から複製された新しい要素で置換できます。選択されたアクティブな要素は、新しい要素の複製の基礎を提供します。「別の要素での要素の置換」を参照してください。

ノート:

TimesTen Scaleoutが認識していない問題があり、レプリカ・セットを除去する必要があるとわかっている場合は、必要に応じてレプリカ・セットを除去および置換できます。

ttGridAdmin dbDistribute -evictコマンドを使用して、グリッドの分散マップからレプリカ・セットを除去できます。レプリカ・セットの除去をリクエストする前に、要素を追加または削除するために保留中のリクエストがすべて適用されていることを確認してください。

レプリカ・セットを除去する場合は、次のオプションがあります。

  • レプリカ・セットを置換せずに即時除去します。

    このレプリカ・セットのデータ・インスタンスおよびホストに障害が発生していない場合は、同じデータ・インスタンスを使用してレプリカ・セットを再作成できます。グリッド上に他のデータベースがあり、ホストに問題がない場合は、これが推奨されるオプションです。

    この場合、次の手順を実行する必要があります。

    1. データ・インスタンスおよびホストが稼働した状態で、障害が発生したレプリカ・セットの要素を除去します。

      レプリカ・セットを除去すると、このレプリカ・セット内のデータは失われますが、データベース内の他のレプリカ・セットは引き続き機能します。これで、グリッド内のレプリカ・セットが1つ減りました。

    2. 除去された要素を保持していたのと同じデータ・インスタンス上の分散マップに新しい要素を追加する場合は、除去されたレプリカ・セット内の要素のすべてのチェックポイントおよびトランザクション・ログを消去します。

    3. データ・インスタンスおよびホストが稼働した状態で、除去されたレプリカ・セットの要素を破棄します。

    4. 必要に応じて、除去されたレプリカ・セットを、同じデータ・インスタンスおよびホスト(まだ有効な場合)または新しいデータ・インスタンスおよびホストのいずれかにある新しいレプリカ・セットで置換できます。新しい要素を分散マップに追加します。これにより、グリッドが必要な構成にリストアされます。

  • レプリカ・セットを除去し、ただちに新しいレプリカ・セットに置き換えて、グリッドを予期されている構成に戻します。

    1. 障害が発生したレプリカ・セットのデータ・インスタンスおよびホストと置換するための新しいデータ・インスタンスおよびホストを作成します。

    2. 障害が発生したレプリカ・セットの要素を除去し、新規レプリカ・セットに置き換えます。レプリカ・セットを除去すると、このレプリカ・セット内のデータは失われますが、データベース内の他のレプリカ・セットは引き続き機能します。

      ttGridAdmin dbDistribute -evict -replaceWithコマンドを使用して、レプリカ・セットを除去して新しいレプリカ・セットで置き換えます。これにより、新しいデータ・インスタンスおよびホストで各要素が新規作成されます。新しいレプリカ・セットの要素が分散マップに追加されます。ただし、他のレプリカ・セットの残りのデータが、新しいレプリカを含めて再分散されることはありません。そのため、データを挿入するまで新しいレプリカ・セットは空のままです。

    3. 除去されたレプリカ・セットの要素を破棄します。

次の各項では、レプリカ・セットに1個または2個の要素がある場合に、障害が発生したレプリカ・セットを除去する方法を示しています。

K = 1の場合の永続的な障害が発生したレプリカ・セット内の要素の除去

図13-4の例は、kが1に設定され、host1.instance1host2.instance1およびhost3.instance1という3つのデータ・インスタンスを含むように構成されている、TimesTenデータベースを示しています。host2.instance1データ・インスタンス上の要素には、永続的なハードウェア障害による障害が発生しています。

図13-4 K = 1のグリッド・データベース

図13-4の説明が続きます
「図13-4 K = 1のグリッド・データベース」の説明

次の各項では、除去オプションを示しています。

別のときに置換できるようにするための要素の除去

障害が発生した要素をリカバリできない場合は、レプリカ・セットを除去できます。

次に例を示します。

  1. ttGridAdmin dbDistribute -evictコマンドを使用して、host2.instance1データ・インスタンス上の要素のレプリカ・セットを除去します。

  2. ttGridAdmin dbDestroy -instanceコマンドを使用して、除去されたレプリカ・セット内のこの要素のみのチェックポイントおよびトランザクション・ログを破棄します。

    ノート:

    または、要素が存在するデータ・インスタンスまたはホストの信頼性が低い場合は、「レプリカ・セット内の障害が発生した要素の削除および置換」の手順を参照してください。

% ttGridAdmin dbDistribute database1 -evict host2.instance1 -apply
Element host2.instance1 evicted 
Distribution map updated

% ttGridAdmin dbDestroy database1 -instance host2.instance1
Database database1 instance host2 destroy started

% ttGridAdmin dbStatus database1 -all
Database database1 summary status as of Thu Feb 22 16:44:15 PST 2018
 
created,loaded-complete,open
Completely created elements: 2 (of 3)
Completely loaded elements: 2 (of 3)
 
Open elements: 2 (of 3) 
 
Database database1 element level status as of Thu Feb 22 16:44:15 PST 2018
 
Host  Instance  Elem Status    Date/Time of Event  Message 
----- --------- ---- --------- ------------------- ------- 
host1 instance1    1 opened    2018-02-22 16:42:14         
host2 instance1    2 destroyed 2018-02-22 16:44:01         
host3 instance1    3 opened    2018-02-22 16:42:14         
 
Database database1 Replica Set status as of Thu Feb 22 16:44:15 PST 2018
 
RS DS Elem Host  Instance  Status Date/Time of Event  Message 
-- -- ---- ----- --------- ------ ------------------- ------- 
 1  1    1 host1 instance1 opened 2018-02-22 16:42:14         
 2  1    3 host3 instance1 opened 2018-02-22 16:42:14         
 
Database database1 Data Space Group status as of Thu Feb 22 16:44:15 PST 2018
 
DS RS Elem Host  Instance  Status Date/Time of Event  Message 
-- -- ---- ----- --------- ------ ------------------- ------- 
 1  1    1 host1 instance1 opened 2018-02-22 16:42:14         
    2    3 host3 instance1 opened 2018-02-22 16:42:14

この例では、データ・インスタンスおよびホストがまだ有効であるため、レプリカ・セットの新しい要素を作成します。その後、新しい要素を分散マップに追加します。

  1. レプリカ・セットが除去される前に、以前の要素が存在していた同じデータ・インスタンスで、ttGridAdmin dbCreate -instanceコマンドを使用して新しい要素を作成します。
  2. ttGridAdmin dbDistribute -addコマンドを使用して、分散マップに新しい要素を追加します。
% ttGridAdmin dbCreate database1 -instance host2
Database database1 creation started
% ttGridAdmin dbDistribute database1 -add host2 -apply 
Element host2 is added 
Distribution map updated
% ttGridAdmin dbStatus database1 -all
Database database1 summary status as of Thu Feb 22 16:53:17 PST 2018
 
created,loaded-complete,open
Completely created elements: 3 (of 3)
Completely loaded elements: 3 (of 3)
 
Open elements: 3 (of 3)
 
Database database1 element level status as of Thu Feb 22 16:53:17 PST 2018
 
Host  Instance  Elem Status Date/Time of Event  Message
----- --------- ---- ------ ------------------- -------
host1 instance1    1 opened 2018-02-22 16:42:14
host3 instance1    3 opened 2018-02-22 16:42:14
host2 instance1    4 opened 2018-02-22 16:53:14
 
Database database1 Replica Set status as of Thu Feb 22 16:53:17 PST 2018
 
RS DS Elem Host  Instance  Status Date/Time of Event  Message
-- -- ---- ----- --------- ------ ------------------- -------
 1  1    1 host1 instance1 opened 2018-02-22 16:42:14
 2  1    3 host3 instance1 opened 2018-02-22 16:42:14
 3  1    4 host2 instance1 opened 2018-02-22 16:53:14
 
Database database1 Data Space Group status as of Thu Feb 22 16:53:17 PST 2018
 
DS RS Elem Host  Instance  Status Date/Time of Event  Message
-- -- ---- ----- --------- ------ ------------------- -------
 1  1    1 host1 instance1 opened 2018-02-22 16:42:14
    2    3 host3 instance1 opened 2018-02-22 16:42:14
    3    4 host2 instance1 opened 2018-02-22 16:53:14

再分散なしのデータ・インスタンスの除去および置換

開始時と同じ数のレプリカ・セットがある、データベースの初期容量をリカバリするには、ttGridAdmin dbDistribute -evict -replaceWithコマンドを使用して、要素を除去し、置換します。

次に例を示します。

  1. 新しいホスト(host4として識別)、インストール、データ・インスタンスおよび要素を作成します。
  2. ttGridAdmin dbDistribute -evict -replaceWithコマンドを使用して、host2.instance1データ・インスタンス上の障害が発生した要素を含むレプリカ・セットを除去し、除去した要素をhost4.instance1データ・インスタンス上の要素で置換します。

    host1.instance1およびhost3.instance1データ・インスタンス上の要素に存在するデータは、host4.instance1データ・インスタンス上の新しい要素に再分散されません。host4.instance1データ・インスタンス上の要素は空です。

  3. ttGridAdmin dbDestroy -instanceコマンドを使用して、host2.instance1データ・インスタンス上の要素を破棄します。
% ttGridAdmin hostCreate host4 -address myhost.example.com -dataspacegroup 1
Host host4 created in Model
% ttGridAdmin installationCreate -host host4 -location /timesten/host4/installation1
Installation installation1 on Host host4 created in Model
% ttGridAdmin instanceCreate -host host4 -location /timesten/host4 
Instance instance1 on Host host4 created in Model
% ttGridAdmin modelApply
Copying Model.........................................................OK
Exporting Model Version 2.............................................OK
Marking objects 'Pending Deletion'....................................OK
Deleting any Hosts that are no longer in use..........................OK
Verifying Installations...............................................OK
Creating any missing Installations....................................OK
Creating any missing Instances........................................OK
Adding new Objects to Grid State......................................OK
Configuring grid authentication.......................................OK
Pushing new configuration files to each Instance......................OK
Making Model Version 2 current........................................OK
Making Model Version 3 writable.......................................OK
Checking ssh connectivity of new Instances............................OK
Starting new data instances...........................................OK
ttGridAdmin modelApply complete
% ttGridAdmin dbDistribute database1 -evict host2.instance1 
 -replaceWith host4.instance1 -apply
Element host2.instance1 evicted 
Distribution map updated
% ttGridAdmin dbDestroy database1 -instance host2
Database database1 instance host2 destroy started
% ttGridAdmin dbStatus database1 -all
Database database1 summary status as of Thu Feb 22 17:04:21 PST 2018
 
created,loaded-complete,open
Completely created elements: 3 (of 4)
Completely loaded elements: 3 (of 4)
 
Open elements: 3 (of 4)
 
Database database1 element level status as of Thu Feb 22 17:04:21 PST 2018
 
Host  Instance  Elem Status    Date/Time of Event  Message
----- --------- ---- --------- ------------------- -------
host1 instance1    1 opened    2018-02-22 16:42:14
host3 instance1    3 opened    2018-02-22 16:42:14
host2 instance1    4 destroyed 2018-02-22 17:04:11
host4 instance1    5 opened    2018-02-22 17:03:18
 
Database database1 Replica Set status as of Thu Feb 22 17:04:21 PST 2018
 
RS DS Elem Host  Instance  Status Date/Time of Event  Message
-- -- ---- ----- --------- ------ ------------------- -------
 1  1    1 host1 instance1 opened 2018-02-22 16:42:14
 2  1    3 host3 instance1 opened 2018-02-22 16:42:14
 3  1    5 host4 instance1 opened 2018-02-22 17:03:18
 
Database database1 Data Space Group status as of Thu Feb 22 17:04:21 PST 2018
 
DS RS Elem Host  Instance  Status Date/Time of Event  Message
-- -- ---- ----- --------- ------ ------------------- -------
 1  1    1 host1 instance1 opened 2018-02-22 16:42:14
    2    3 host3 instance1 opened 2018-02-22 16:42:14
    3    5 host4 instance1 opened 2018-02-22 17:03:18

K >= 2の場合の永続的な障害が発生したレプリカ・セット内のすべての要素の除去

k >= 2で、レプリカ・セットに永続的な障害が発生した場合は、レプリカ・セットのすべての要素を同時に除去する必要があります。

図13-5に、レプリカ・セット1のどこで障害が発生しているかを示します。

図13-5 障害が発生したレプリカ・セット

図13-5の説明が続きます
「図13-5 障害が発生したレプリカ・セット」の説明

図13-5に示されている例では、レプリカ・セット1に、host3.instance1host4.instance1およびhost5.instance1データ・インスタンスに存在する要素が含まれています。このレプリカ・セットに、修復不可能な障害が発生します。ttGridAdmin dbDistributeコマンドを実行してレプリカ・セットを除去するときに、除去されるレプリカ・セット内のすべての要素のデータ・インスタンスを指定します。

% ttGridAdmin dbDistribute database1 -evict host3.instance1 
 -evict host4.instance1 -evict host5.instance1 -apply
Element host3.instance1 evicted 
Element host4.instance1 evicted 
Element host5.instance1 evicted 
Distribution map updated

データの再分散なしの新しい要素によるレプリカ・セットの置換

レプリカ・セット内のどの要素もリカバリできない場合は、レプリカ・セット内の両方の要素を同時に除去する必要があります。開始時と同じ数のレプリカ・セットがある、データベースの初期容量をリカバリするには、ttGridAdmin dbDistribute -evict -replaceWithコマンドを使用して、障害が発生したレプリカ・セット内の要素を除去し、除去した要素を置換します。

次に例を示します。

  1. host9.instance1およびhost10.instance1データ・インスタンスに新しい要素を作成します。
  2. host3.instance1およびhost4.instance1データ・インスタンス上の障害が発生した要素があるレプリカ・セットを除去して、host9.instance1およびhost10.instance1データ・インスタンスの新しい要素で置換します。

    アクティブなレプリカ・セット内の要素に存在するデータが、host9.instance1およびhost10.instance1データ・インスタンス上の新しい要素を含めて再分散されることはありません。host9.instance1およびhost10.instance1データ・インスタンス上の要素は空です。

  3. ttGridAdmin dbDestroy -instanceコマンドを使用して、host3.instance1およびhost4.instance1データ・インスタンス上の要素を破棄します。

    新しいレプリカ・セットは、host9.instance1およびhost10.instance1データ・インスタンスにある置換された要素からの要素を含むレプリカ・セット1として表示されるようになります。

% ttGridAdmin hostCreate host9 -internalAddress int-host9 -externalAddress
 ext-host9.example.com -like host3 -cascade
Host host9 created in Model
Installation installation1 created in Model
Instance instance1 created in Model
% ttGridAdmin hostCreate host10 -internalAddress int-host10 -externalAddress
 ext-host10.example.com -like host4 -cascade
Host host10 created in Model
Installation installation1 created in Model
Instance instance1 created in Model
% ttGridAdmin dbDistribute database1 -evict host3.instance1
 -replaceWith host9.instance1 -evict host4.instance1 
 -replaceWith host10.instance1 -apply
Element host3.instance1 evicted 
Element host4.instance1 evicted 
Distribution map updated
% ttGridAdmin dbStatus database1 -all 
Database database1 summary status as of Fri Feb 23 10:22:57 PST 2018
 
created,loaded-complete,open
Completely created elements: 8 (of 8)
Completely loaded elements: 6 (of 8) 
Completely created replica sets: 3 (of 3) 
Completely loaded replica sets: 3 (of 3)  
 
Open elements: 6 (of 8) 
 
Database database1 element level status as of Fri Feb 23 10:22:57 PST 2018
 
Host   Instance  Elem Status  Date/Time of Event  Message
------ --------- ---- ------- ------------------- -------
 host3 instance1    1 evicted 2018-02-23 10:22:28
 host4 instance1    2 evicted 2018-02-23 10:22:28
 host5 instance1    3 opened  2018-02-23 07:28:23
 host6 instance1    4 opened  2018-02-23 07:28:23
 host7 instance1    5 opened  2018-02-23 07:28:23
 host8 instance1    6 opened  2018-02-23 07:28:23
host10 instance1    7 opened  2018-02-23 10:22:27
 host9 instance1    8 opened  2018-02-23 10:22:27
 
Database database1 Replica Set status as of Fri Feb 23 10:22:57 PST 2018
 
RS DS Elem Host   Instance  Status Date/Time of Event  Message
-- -- ---- ------ --------- ------ ------------------- -------
 1  1    8 host9  instance1 opened 2018-02-23 10:22:27
    2    7 host10 instance1 opened 2018-02-23 10:22:27
 2  1    3 host5  instance1 opened 2018-02-23 07:28:23
    2    4 host6  instance1 opened 2018-02-23 07:28:23
 3  1    5 host7  instance1 opened 2018-02-23 07:28:23
    2    6 host8  instance1 opened 2018-02-23 07:28:23
 
Database database1 Data Space Group status as of Fri Feb 23 10:22:57 PST 2018
 
DS RS Elem Host   Instance  Status Date/Time of Event  Message
-- -- ---- ------ --------- ------ ------------------- -------
 1  1    8 host9  instance1 opened 2018-02-23 10:22:27
    2    3 host5  instance1 opened 2018-02-23 07:28:23
    3    5 host7  instance1 opened 2018-02-23 07:28:23
 2  1    7 host10 instance1 opened 2018-02-23 10:22:27
    2    4 host6  instance1 opened 2018-02-23 07:28:23
    3    6 host8  instance1 opened 2018-02-23 07:28:23
 
% ttGridAdmin dbDestroy database1 -instance host3 
Database database1 instance host3 destroy started
% ttGridAdmin dbDestroy database1 -instance host4
Database database1 instance host4 destroy started

除去後のデータベースの一貫性の維持

レプリカ・セット全体を除去するとデータが失われるため、データベースが一貫性のない状態になる可能性があります。たとえば、除去されたレプリカ・セットに親レコードが格納されていた場合、別のレプリカ・セットにある他の要素のすべての子行は、対応する外部キーの親なしで表に格納されることになります。

除去後もデータベースの一貫性を維持するには、次のいずれかのステップを実行して、すべての外部キー参照を修正します。

  • 対応する親を持たない子行をすべて削除します。

  • 対応する親を持たないすべての子行の外部キー制約を削除します。