ストアのリカバリ

Loadプログラムの使用
スナップショットからの直接リストア

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

注意

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

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

Loadプログラムの使用

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

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

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

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

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

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

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

java -Xmx256m -Xms256m \
-jar KVHOME/lib/kvstore.jar load -source <backupDir> \
-store <storeName> -host <hostname> -port <port> \
[-status <pathToFile>][-verbose]

説明:

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

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

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

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

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

たとえば、/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& 

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

注意

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