17.10 - 障害AMP回復 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データベース ユーティリティ

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
構成
Publication ID
B035-1102-171K-JPN
Language
日本語 (日本)

障害AMP回復とは、AMPがダウンかオフラインになっている間に、テーブルまたは行(フォールバックおよび基本)全体に対するすべての変更を処理するプロセスのことです。回復中のAMPは、障害AMP回復により、AMPに障害が発生したときにTeradataシステムが処理したデータで更新されます。AMPは、障害時にはオフライン更新モードにあるとみなされます。更新モードは、AMPが論理的にはオフラインになっており、クラスタ内のオンラインAMPとの同期をとるために、テーブルを更新中であることを示しています。

特にクラッシュや再始動状態では、AMPが失われ(CPUボードの障害などのために)、基礎となるディスクのデータは失われないということが起こり得ます。残りのTeradataシステムでは、失敗したAMPを使わずに、トランザクションを再始動して回復できます。

障害AMPをTeradataシステムに再接続できるようになったら、以下の手順を実行することにより、失ったデータを回復します。

  1. 障害発生時に障害AMPが作業していたトランザクションとの整合がとれた状態にデータを回復する。

    障害AMPは、一時ジャーナルの情報をその基礎となるデータに対して適用します。さらに、それぞれのトランザクションをロールバックするかどうか、またはコミットするかどうかについて、障害AMPはTeradataシステムの他の部分での選択に一致している必要があります。

  2. AMPがダウンしていた間にオンラインTeradataシステムに加えられたすべての変更と一致するよう、復元したデータを更新する(障害AMP回復)。

障害AMP回復操作の表示

次の画面には、次のページの障害AMP回復操作の説明で言及されるフィールドが示されています。この画面は、rcvmanagerによって出力されます。次の画面のフィールドの詳細については、障害/更新AMP回復ステータスを参照してください。

DOWN AMP RECOVERY STATUS at HH:MM:SS MM/DD/YY 

AMP to be           Current Pass       Next Pass
caught up   Pass     OJ    CJ          OJ   CJ
----------  ----     ---   ---------   ---  --------
    0001    0        0     0           1    1,081
    - AMP Status: Online Catchup
    - Not currently executing recovery

    0002    1        5     145,822     1    25,081
    - AMP Status: Offline Catchup
    - Transaction Recovery: 25,488 TJ Rows

    0003    1        0     2,142       0    0
    - AMP Status: Online Catchup
    - Change Row Recovery: 26% complete in this pass 
    0004    2        2     201,558     0    4,228
    - AMP Status: Offline Catchup
    - Rebuilding Database1.Table1: 45% complete

    0005*   4        0     0           0    2,888
    - AMP Status: Offline Catchup
    - Between passes
* - would probably be placed in online catch up if a restart occurred

障害AMPの回復

手順1~4を実行するのは、オフライン更新AMPがある場合だけです。AMPがまだ物理的にダウンしている場合、これらの手順は実行されません。

ダウンしているAMPを回復させるには、次のようにします。

  1. 以前ダウンしていたのに現在は使用可能になっているAMPは、ローカル トランザクション回復(オフライン更新AMPという)を開始します。この手順は、手順2の前に完了する必要があります。
  2. 抽出された順序付きシステム変更ジャーナル(OJ)が処理され、いろいろなサブテーブルが再作成されます。
  3. 変更済みの行(または行が削除されたことを示す通知)が更新AMPに送信され、抽出された変更済み行ジャーナル(CJ)行が処理されます。
  4. OJ項目が適用されます。非常に時間がかかる項目は、作成操作です。
  5. 現在のCJ項目が適用されます。それぞれのCJ項目は更新(挿入、削除、更新)する行を表わします。
  6. 障害AMPクラスタのオンラインAMPがOJとCJから現在のすべての作成レコードを抽出し、それらのレコードをソートして、重複レコードを削除します。再作成する表の行を参照するCJ項目は、すべて削除されます。他のOJ操作は、更新AMPに送信され、そこで実行されます。
  7. 次のパスでは、OJ項目とCJ項目が現在のパス項目になります。
  8. 手順2~7を、必要な回数だけ繰り返します。
  9. AMPが十分に更新されると、次の再始動時にオンライン更新AMPとして有効になります。有効になったことは、rcvmanagerステータス表示のDOWN AMP RECOVERY STATUS画面で、更新するAMPが記された列の下にアスタリスク(*)が付けられることで示されます。前の表示画面を参照してください。

回復ジャーナル

クラスタ内のAMPがダウンし、テーブルにフォールバック オプションが指定されている場合、障害AMPの回復ジャーナル(RJ)には、障害AMPに適用されるフォールバック テーブルへの変更が記録されます。このジャーナルは、AMPの障害時にだけアクティブになり、フォールバック テーブル用にだけ使われます。

障害AMPの回復ジャーナル処理は、以下のとおりです。

  1. クラスタ内の稼働可能なAMPが、障害AMP RJへの項目のログ記録を開始する。
  2. 障害AMP RJが、運用不能なAMPのフォールバック プロテクトされた行に対して加えられている変更を記録する。
  3. 障害AMPが回復したら、変更が適用される。

回復ジャーナルは、変更済み行ジャーナル(CJ)と順序付きシステム変更ジャーナル(OJ)の2つのレコードのセットを保持します。

変更済み行ジャーナル

CJは変更されている行へのポインタをログ記録することにより、AMPクラスタで変更された行をログ記録するが、実際の行はログ記録しません。CJ回復では、データを、AMPがダウンしていた間にオンラインTeradataシステムに加えられたすべての変更と一致させる必要があります。最も一般的なタイプの変更は、個々の行に対する修正、つまり、既存のテーブルの行を挿入、削除、更新するデータ操作言語(DML)操作です。

このようにして修正されたそれぞれの行は、TeradataシステムのCJ(修正が発生するそれぞれのAMPに対してローカル)に記憶されます。修正はAMPの障害時にだけ実行されるので、CJがクラスタ内のAMPに存在するのは、AMPがダウンしている間だけになります。AMPはクラスタというグループに配列され、それぞれのAMPが同じグループの他のメンバーにフォールバック保護を提供するようになっています。

CJに記憶されている項目は、修正された行のテーブルIDと行IDだけです。障害AMPが回復すると、実際の行がフォールバックまたはプライマリ サブテーブルから抽出され、行イメージがCJに重複して記憶されることはありません。

順序付きシステム変更ジャーナル

OJは、インデックスの作成、永久ジャーナルの作成、テーブルの再作成の実行など、AMPのダウン時にオンラインTeradataシステムに適用されるデータ変更をログ記録します。このようなタイプの変更をTeradataシステム レベルの変更といい、データ定義言語(DDL)による操作と関係しています。1つの行の更新だけでなく、すべてのAMPに影響があるからです。

この変更は、DROP TABLE、CREATE TABLE、およびCREATE/DROP INDEXなどのDDL操作にあてはまります。他の操作では、表の中のそれぞれの行をすべて変更する操作(例えば、列の削除)も含まれます。このようなタイプの場合は、表のそれぞれの行をすべて(AMPが所有する行について)、その障害AMPにコピーする操作(表の再作成)が回復に含まれます。

このため、OJにあるほとんどの行は、AMP回復時に作成(作成したテーブル用に)または再作成する必要のあるテーブルを識別する作成レコードです。他のOJレコードは、HUTロックの設定/解除レコード、および不確定の2フェーズ コミット トランザクションです。

障害AMPの遅延回復

障害AMPの遅延回復のプロセスとは、障害が発生したAMPがダウンして回復している間でも、残りのTeradataシステムが接続されているホストに対する操作を続けることです。

オフライン更新モード

オフライン更新モードでは、新しいトランザクション(障害AMPの)がクラスタの他のAMPによって代行されます。このようにして、障害AMPが古い変更行とTeradataシステム変更項目を処理している間に、新しい変更行と項目が作成されます。更新モードに入っている間、AMPは論理的にはオフラインとみなされます。

障害AMPをオフライン更新モードに設定するには、以下のようにします。

  1. Vproc Managerユーティリティを起動する。
  2. Teradataシステム論理構成のリストを表示するために、次のように入力する。

    status;

    次のような画面が表示されます。

    DBS LOGICAL CONFIGURATION
    Vproc   Rel.   Node          Crash   Vproc   Config   Config  Cluster/  RvcJrnl/
    Number  Vproc# ID   Movable  Count   State   Status   Type    Host No.   Host Type
    0*      1      0-0  No       0       Online  Online   AMP       0           On
    1       2      0-0  No       0       Offline Down     AMP       0           On
    16383   3      0-0  No       0       Online  Online   PE        52          COP
    __________________________________________________________________________________
    * DBS Control AMP
    DBS State: Logons are enabled - Users are logged on
    DBS RestartKind: COLD
    The disable list is empty
  3. 障害AMPを立ち上げるために、次のように入力する。

    set 1 = online;

    vproc 1が更新モードになると、次のメッセージが示される。

    Vproc 1 will begin recovery in the background via the Recovery Control Task
  4. AMPが、ユーティリティ更新モードであることを確認するために、次のように入力する。

    status:

    オフライン モードでは、AMPには処理対象のOJ作成レコードや大量のCJ行があります。この状態だとロックされるデータの量は少なくなりますが、オンラインTeradataシステム上の新しいトランザクションはOJ行とCJ行を追加作成します。オフラインAMPをオンラインTeradataシステムにすることはできないので、このようなパスが永久に、またはTeradataシステムが再始動するまで続く可能性があります。

    次のような画面が表示されます。

    DBS LOGICAL CONFIGURATION
    Vproc   Rel.   Node          Crash   Vproc   Config   Config  Cluster/  RvcJrnl/
    Number  Vproc# ID   Movable  Count   State   Status   Type    Host No.   Host Type
    0*      1      0-0  No       0       Online  Online   AMP       0           On
    1       2      0-0  No       0       Utility Catchup  AMP       0           On
    16383   3      0-0  No       0       Online  Online   PE        52          COP
    __________________________________________________________________________________ 
    * DBS Control AMP
    DBS State: Logons are enabled - The system is quiescent
    DBS RestartKind: COLD
    The disable list is empty

オフラインAMPがほとんど更新済みになっているかどうかを知るには、以下のようにします。

  1. rcvmanagerを開始する。
  2. オフラインAMPのステータスを調べるために、次のように入力する。

    list status;

    以下のメッセージのいずれかが表示されます。

    メッセージ 意味
    - AMP Status: Not in recovery

    - Down

    AMPはまだダウン状態です。
    - AMP Status: Offline Catchup

    - Executing miscellaneous Recovery actions

    AMPは更新モードになっています。
    - AMP Status: Offline Catchup

    - Between Passes

    * - would probably be placed in online catchup if a restart occurs.

    AMPは更新モードになっており、再始動するとオンライン更新モードになります。

COLDWAIT再始動を実行する場合の操作は、トランザクション回復の操作と類似しています。COLDWAITでは、回復中のAMPがすべて完全に回復するまで、着信トランザクションはなく、Teradataシステムはオフラインのままになります。回復後、AMPはすべてオンライン ステータスに設定され、Teradataシステムは起動を完了します。

オフライン更新の場合、更新はオンラインで着信する新しい更新トランザクションより高速に実行しようとします。他のAMPは、CJまたはOJレコードの書き込みに関係する追加作業に加えて、障害AMPのフォールバック責任を処理します。

オフライン更新モードに指定されているAMPがある場合、COLD再始動を開始する必要がありますが、オフラインAMPをオンラインにするのは、AMPが十分に回復した後にしてください。"十分に回復する"とは、上のテーブルの3番目のメッセージの状態のことです。

オンライン更新モード

オンライン更新モードでは、以前に障害の発生したAMPもTeradataシステムの他のAMPと同様にトランザクションを受け入れるようになります。このモードでは、更新が必要なすべてのデータはロックされており、新しいデータが旧データ上で操作されることがないようになっています。

障害AMPにある回復の量が少ない場合は、オンライン更新にすることができます。

当該AMPがオンラインになっていて、Teradataシステムに着信する新しいトランザクションに関与しているため、このトランザクションに新しいCJまたはOJ項目が作成されることはありません。残りのCJ処理がすべて完了すると、Teradataシステムはオンラインになります。Vproc Managerユーティリティを開始して、データベースのステータスを調べます。Vproc StateとConfig Statusは、Onlineになっています。Teradataシステムを再始動しなくても、この時点で、AMPは再び他のオンラインAMPに自動的に加えられます。