目次
この章には、Oracle NoSQL Databaseの管理者にとって一般的に有用な手順が含まれています。
Oracle NoSQL Databaseのストレージ・ノードおよび管理では、埋込みデータベース(Oracle Berkeley DB、Java Edition)を利用します。このデータベースで保持されるファイルを直接操作することはできません。通常、オラクル社カスタマ・サポートから要求されないかぎり、KVROOTの下にあるファイルおよびディレクトリを移動、削除または変更するのはお薦めしません。特に、jdb
接尾辞で終わるファイルは移動および削除しないでください。これは、KVROOTの下のenv
ディレクトリにあります。
KVStoreをバックアップするには、ストア内のノードのスナップショットを作成し、作成したスナップショットを必要に応じて安全な場所にコピーします。Oracle NoSQL Databaseの分散特性や規模の点から、1つのマシンにストア全体のバックアップが収容されることはあまりないということに注意してください。次の手順では、スナップショットの格納場所と格納方法については説明しません。
バックアップを作成するには、ストアのスナップショットを作成します。スナップショットによって、同じパーティション内の全レコード間の整合性はとられますが、各シャードのパーティション間の整合性はとられません。基になるスナップショット操作は、潜在的な不整合を最小限に抑えるために可能なかぎり並列で実行されます。
管理CLIでスナップショットを作成するには、snapshot create
コマンドを使用します。
kv-> snapshot create -name <snapshot name>
このコマンドを使用すると、名前付きのスナップショットを作成または削除できます。(スナップショットの名前は、<name>パラメータを使用して指定します。)現在ストアに格納されているすべてのスナップショットを削除することもできます。
たとえば、スナップショットの作成と削除を行うには、次のようにします。
kv-> snapshot create -name thursday Created snapshot named 110915-153514-thursday on all 3 nodes kv-> snapshot remove -name 110915-153514-thursday Removed snapshot 110915-153514-thursday
現在ストアに格納されているすべてのスナップショットを削除することもできます。
kv-> snapshot create -name thursday Created snapshot named 110915-153700-thursday on all 3 nodes kv-> snapshot create -name later Created snapshot named 110915-153710-later on all 3 nodes kv-> snapshot remove -all Removed all snapshots
スナップショットは、構成の(トポロジ的な)変更が行われている間は作成しないでください。スナップショットに整合性がなく、使用できなくなる可能性があるためです。
スナップショットを実行すると、システムの各レプリケーション・ノード(マスターとレプリカの両方を含む)からデータが収集されます。操作が成功しないノードがシャード内に1つでもあると、その操作は失敗します。
スナップショットのストア外コピーを作成する場合、シャードごとに1つのノードに対してのみスナップショット・データをコピーします。可能なかぎり、スナップショットの作成時にマスターとして稼働していたノードから取得したスナップショット・データをコピーします。
現在マスターとして稼働しているノードは、pingコマンドを使用して特定できます。ストア内のシャードごとに1つのマスターが存在し、MASTERというキーワードで識別されます。たとえば、次の例では、ストレージ・ノードsn1で実行されているレプリケーション・ノードrg1-rn1が現在のマスターです。
java -Xmx256m -Xms256m \ -jar KVHOME/lib/kvstore.jar ping -port 5000 -host node01 Pinging components of store mystore based upon topology sequence #107 Time: 2013-12-18 21:07:44 UTC mystore comprises 300 partitions on 3 Storage Nodes Storage Node [sn1] on node01:5000 Zone: [name=Boston id=zn1 type=PRIMARY] Status: RUNNING Ver: 12cR1.3.0.1 2013-12-18 06:35:02 UTC Build id: 8e70b50c0b0e Rep Node [rg1-rn1] Status: RUNNING,MASTER at sequence number: 31 haPort: 5011 Storage Node [sn2] on node02:5000 Zone: [name=Boston, id=zn1 type=PRIMARY] Status: RUNNING Ver: 12cR1.3.0.1 2013-12-18 06:35:02 UTC Build id: 8e70b50c0b0e Rep Node [rg1-rn2] Status: RUNNING,REPLICA at sequence number: 31 haPort: 5011 Storage Node [sn3] on node03:5000 Zone: [name=Boston, id=zn1 type=PRIMARY] Status: RUNNING Ver: 12cR1.3.0.1 2013-12-18 06:35:02 UTC Build id: 8e70b50c0b0e Rep Node [rg1-rn3] Status: RUNNING,REPLICA at sequence number: 31 haPort:5011
スナップショットには、管理データベースが含まれます。ストアのリストア方法によっては、管理データベースが有用な場合も有用でない場合もあります。
ローカル・ストレージ・ノードのスナップショット・データは、KVROOT
ディレクトリ内のディレクトリに格納されます。ストア内の各ストレージ・ノードに次の名前のディレクトリが作成されます。
KVROOT/<store>/<SN>/<resource>/snapshots/<snapshot_name>/files
説明:
<store>は、ストアの名前です。
<SN>は、ストレージ・ノードの名前です。
<resource>は、ストレージ・ノードで実行されているリソースの名前です。通常これは、レプリケーション・ノードの名前です。
<snapshot_name>は、スナップショットの名前です。
スナップショット・データは、多数のファイルで構成され、それらはすべて重要です。次に例を示します。
> ls /var/kvroot/mystore/sn1/rg1-rn1/snapshots/110915-153828-later 00000000.jdb 00000002.jdb 00000004.jdb 00000006.jdb 00000001.jdb 00000003.jdb 00000005.jdb 00000007.jdb