ライブラリ・バージョン12.1.3.0

ストアのリカバリ
前 | 第7章 管理手順 | 次

## ストアのリカバリ

以前に作成したスナップショットからストアをリカバリする方法は2つあります。1つ目の方法は、バックアップを使用して必要なトポロジでストアを作成する方法です。2つ目の方法では、スナップショットの作成時に使用されていたのと完全に同じトポロジを使用してストアをリストアする必要があります。

### 注意

障害が発生したストレージ・ノードを置換する必要がある場合、トポロジの変更とみなされます。その場合、`Load`プログラムを使用してストアをリストアする必要があります。

障害が発生したストレージ・ノードの置換方法の詳細は、「障害が発生したストレージ・ノードの置換」を参照してください。

### Loadプログラムの使用

`oracle.kv.util.Load`プログラムを使用して、以前に作成したスナップショットからストアをリストアできます。このプログラムは直接実行することも、この項の例で示すように`kvstore.jar`を使用してアクセスすることもできます。

このツールを使用すると、スナップショットの作成時に使用されていたトポロジのみでなく、任意のトポロジにストアをリストアできます。

このメカニズムは、スナップショット内のすべてのレコードを反復し、スナップショットの処理の進行に伴って各レコードをターゲット・ストアに格納することで機能します。これは、新規の空のストアにリストアする場合にのみ使用します。存在しない場合にのみレコードが書き込まれるため、既存のストアにこれを使用しないでください。

ストアをリカバリするには、ストア内のシャードごとに取得されたスナップショット・データから、レコードをロードする必要があることに注意してください。最善の結果を得るには、スナップショットの作成時にマスターとして稼働していたレプリケーション・ノードから取得されたスナップショット・データを使用してレコードをロードします。(ストアに3つのシャードがある場合、任意の時点で3つのマスターが存在するため、3セットのスナップショット・データからデータをロードする必要があります。)マスターを特定するには、スナップショットの作成時にpingを使用します。

同一時点において作成されたスナップショット・データを使用します。たとえば、月曜日に作成されたシャード1のスナップショット・データと水曜日に作成されたシャード2のスナップショット・データを使用しないでください。このようにすると、ストアが一貫性のない状態でリストアされます。

このメカニズムの速度は、新規ストアの挿入と同程度です。ストアには複数のシャードがあることが多いため、各シャードから取得されたデータからストアをリストアします。これを行うには、`Load`プログラムを並行して(各インスタンスが異なるレプリケーション・ノードから取得されたデータを操作)実行します。

プログラムの使用方法は次のとおりです。

    java -Xmx256m -Xms256m \
    -jar KVHOME/lib/kvstore.jar load [-verbose]
    -source <backupDir> -host <hostname> -port <port>
    -store <storeName> -username <user> -security <security-file-path>
    [-load-admin] [-force] [-status <pathToFile>]

説明:

- `-load-admin`は、ストア・メタデータをスナップショットから新規ストアにロードします。この場合、`-source`ディレクトリは、スナップショットから管理ノードの環境ディレクトリを指す必要があります。この操作のとき、ユーザーがストアを使用できないようにする必要があります。

  ### 注意

  ストアを最初からリストアしている場合を除き、このオプションはストアで使用しないでください。`-force`を`-load-admin`と組み合せて指定した場合、ストア内の既存のメタデータは、表およびセキュリティ・メタデータを含めて上書きされます。

- `-host <hostname>`は、ストア内のノードのホスト名を識別します。

- `-port <port>`は、ストアのノードで使用されているレジストリ・ポートを識別します。

- `-status <pathToFile>`は、ロード操作のステータスをローカル・マシンの名前付きの場所に保存するオプション・パラメータです。

- `-security <security-file-path>`は、ログインのプロパティの指定に使用されるセキュリティ・ファイルを識別します。

- `-source <backupDir>`は、スナップショット・データが格納されているディスク上の場所を識別します。

- `-store <storeName>`は、ストアの名前を識別します。

- `-username <user>`は、保護されているストアにログインするためのユーザー名を識別します。

たとえば、`/var/backups/snapshots/110915-153828-later`にスナップショットがあり、ホスト"NewHost"にレジストリ・ポート12345を使用する"NewStore"という名前の新規ストアがあるとします。`/var/backups/snapshots`ディレクトリを持つホストで`Load`プログラムを実行します。

    java -Xmx256m -Xms256m \
    -jar KVHOME/lib/kvstore.jar load \
    -source /var/backups/snapshots/110915-153828-later -store NewStore \
    -host NewHost -port 12345

### 注意

ロードがリストアの途中で失敗した場合、ステータス・ファイルを使用することで中止された場所から開始できます。ステータス・ファイルの精度は、このNoSQL DBリリースではパーティション単位です。ステータス・ファイルを使用していないときに障害が発生した場合、ロードを最初からやり直す必要があります。この場合、ターゲット・ストアを再作成する必要はありません。既存のレコードはスキップされます。

### スナップショットからの直接リストア

スナップショットからストアを直接リストアできます。この方法は、前述の項で説明した`Load`プログラムを使用する方法より高速ですが、スナップショットの作成時に使用されていたのと完全に同じトポロジにリストアする場合にのみ使用できます。つまり、すべてのポートおよびホスト名またはIPアドレス(構成による)は、スナップショットの作成時と完全に同じにする必要があります。

ストア内のストレージ・ノードごと、かつ各ストレージ・ノードで実行されているサービスごとにこの手順を実行する必要があります。

1. スナップショット・データに対応するサービスのリカバリ・ディレクトリに、リカバリ予定のスナップショット・データを配置します。たとえば、ストア`mystore`のストレージ・ノードsn1、サービスrg1-rn1をリカバリする場合、そのサービスが実行されているノードにログインし、次のようにします。

       > mkdir KVROOT/mystore/sn1/rg1-sn1/recovery
       > mv /var/kvroot/mystore/sn1/rg1-rn1/snapshots/110915-153828-later \
       KVROOT/mystore/sn1/rg1-sn1/recovery/110915-153828-later

   ストレージ・ノードで実行されている各サービスに対してこれを実行します。本番システムでは、特定のストレージ・ノードで実行されるリソースは1つのみですが、たとえば、1つのストレージ・ノードに複数のレプリケーション・ノードをデプロイできます。ストレージ・ノードでは、管理プロセスが実行されていることもあり、これもリストアする必要があります。

2. これを行ったら。ストレージ・ノードを再起動します。

       java -Xmx256m -Xms256m \
       -jar KVHOME/lib/kvstore.jar stop -root /var/kvroot \
       > nohup java -Xmx256m -Xms256m \
       -jar KVHOME/lib/kvstore.jar start -root /var/kvroot&

起動時、ストレージ・ノードでリカバリ・ディレクトリが認識され、そのディレクトリがリソースの環境のディレクトリに移動されて使用されます。

### 注意

この手順で、ストアがスナップショットの時点にリカバリされることに注意してください。ストアがスナップショットの時点以降アクティブだった場合、直前のスナップショットの時点以降に行われたデータの変更はすべて失われます。

前 | 先頭へ | 次
第7章 管理手順 | ホーム | Avroスキーマの管理