既存のOracle NoSQL Databaseデプロイメントのアップグレード

アップグレードの準備
アップグレードに関する一般的な注意事項
リリース2.0からリリース2.1へのアップグレード
NoSQL DBリリース1.0からNoSQL DBリリース2.0へのアップグレード

この項では、Oracle NoSQL Databaseデプロイメントのソフトウェアをアップグレードする方法について説明します。

新規ソフトウェアをインストールする場合、各ノードを再起動する必要があります。ストアの構成によっては、ストアがオンラインでクライアントが使用可能な状態のままアップグレードすることもできます。ストアのレプリケーション係数が2より大きく、かつストアのトポロジに1つのデータ・センターのみが含まれている場合、オンライン・アップグレードを実行できます。

レプリケーション係数が2より大きいストアの場合、コンポーネントが1つずつ再起動される間もシャードで過半数が保持され、クライアントのかわりにデータの読取りおよび書込みを続行できます。レプリケーション係数が2または1の場合、1つのノードの再起動中に過半数を保持できないため、各シャードはしばらくの間使用できなくなります。

アップグレードの準備

アップグレード・プロセスを開始する前に、スナップショットを作成することでストアのバックアップを取る必要があります。「スナップショットの作成」を参照してください。

Oracle NoSQL Databaseでは、構成の変更およびその他の管理アクティビティにはプランが関係してきます。NoSQL DBリリース2.0では、NoSQL DBリリース1.0で作成されたプランの実行または再起動はサポートされていません。完了状態ではないプランは、アップグレードの開始前に取り消す必要があります。プランの詳細は、「プラン」を参照してください。

注意

アップグレード・プロセスでは、ストア内のすべてのサービスがアップグレードされるまでプランを作成しないでください。

kvstoreクライアント・ライブラリを使用するアプリケーション・プログラムは、サービス・コンポーネントのアップグレード後にできるかぎり早く新しいソフトウェア・バージョンにアップグレードする必要があります。新しいクライアントを古いストアで使用することもできるため、ストア・サービスをアップグレードする前に、アップグレードされたクライアントをテストできます。

アップグレードに関する一般的な注意事項

この項には、Oracle NoSQL Databaseのすべてのバージョンに一般的に当てはまるアップグレード情報が含まれています。特定のリリースに関するアップグレードの手順および注意事項は、その後の項に記載されています。

Oracle NoSQL Databaseが初めてインストールされる際、コンピュータごと、または必要に応じて複数のストレージ・ノードによって(NFSを使用するなどして)共有されるKVHOMEディレクトリに配置されます。ここでは、この既存のKVHOMEの場所をOLD_KVHOMEと呼びます。

注意

インストールでリリース番号を含める規則をKVHOMEに使用すると、便利です。つまり、/var/kv/kv-M.N.O(M.N.Oはrelease.major.minor番号)のようなKVHOMEの場所を常に使用します。これは、単にディストリビューションを一般的なディレクトリ(この例では、/var/kv)に展開するだけで簡単に行えます。

新規ソフトウェアをインストールする場合、各ノードを再起動する必要があります。Oracle NoSQL Databaseはレプリケートされたシステムであるため、過度なフェイルオーバー・イベントを防ぐには、マスターとして稼働しているノードは、レプリカとマークされているすべてのノードの後に再起動することをお薦めします。次のコマンドによって、マスター・ノードとレプリカ・ノードを区別できます。

java -jar KVHOME/lib/kvstore.jar ping -host <hostname> -port <port>

ストア内のアクティブなノードのホストとレジストリ・ポートを使用します。たとえば、次の例では、rg1-rn1およびrg2-rn1はMASTERとして実行され、最後に再起動する必要があります(表示領域に収まるように、ping出力の一部のみを表示しています)。

java -jar KVHOME/lib/kvstore.jar ping -port 5000 -host node01
Pinging components of store mystore based upon topology sequence #315
mystore comprises 300 partitions and 6 Storage Nodes
Storage Node [sn1] on node01:5000    Datacenter: Boston [dc1]    
    Status: RUNNING   Ver: 11gR2.2.0.39 2013-04-10 04:51:00 UTC  ....
    Rep Node [rg1-rn1]  Status: RUNNING,MASTER at ....
Storage Node [sn2] on node02:5000    Datacenter: Boston [dc1]    
    Status: RUNNING   Ver: 11gR2.2.0.39 2013-04-10 04:51:00 UTC  ....
    Rep Node [rg1-rn2]  Status: RUNNING,REPLICA at ....
Storage Node [sn3] on node03:5000    Datacenter: Boston [dc1]    
    Status: RUNNING   Ver: 11gR2.2.0.39 2013-04-10 04:51:00 UTC  ....
    Rep Node [rg1-rn3]  Status: RUNNING,REPLICA at ....
Storage Node [sn4] on node04:5000    Datacenter: Boston [dc1]    
    Status: RUNNING   Ver: 11gR2.2.0.39 2013-04-10 04:51:00 UTC  ....
    Rep Node [rg2-rn1]  Status: RUNNING,MASTER at ....
Storage Node [sn5] on node05:5000    Datacenter: Boston [dc1]    
    Status: RUNNING   Ver: 11gR2.2.0.39 2013-04-10 04:51:00 UTC ....
    Rep Node [rg2-rn2]  Status: RUNNING,REPLICA at ....
Storage Node [sn6] on node06:5000    Datacenter: Boston [dc1]    
    Status: RUNNING   Ver: 11gR2.2.0.39 2013-04-10 04:51:00 UTC ....
    Rep Node [rg2-rn3]  Status: RUNNING,REPLICA at ....

2.0から2.1へのアップグレード

リリース2.0からリリース2.1へのストアのアップグレードは、一度に1つのストレージ・ノードに対して実行できます。これは、2.0と2.1のストレージ・ノードが混在していても同じノードで同時に実行できるためです。これにより、最も効率的な方法でストレージ・ノードを戦略的にアップグレードできます。

注意

1.0ストアをリリース2.1に直接アップグレードすることできません。2.1にアップグレードする前に、ストアを1.0から2.0にアップグレードする必要があります。1.0ストアをアップグレードする方法は、「NoSQL DBリリース1.0からNoSQL DBリリース2.0へのアップグレード」を参照してください。

注意

ストアに多数のストレージ・ノードが含まれている場合、スクリプトを使用してアップグレードを実行することもできます。詳細は、「2.1にアップグレードするためのスクリプトの使用」を参照してください。

潜在的な問題を回避するために、新しいCLIコマンドを使用して、ノードを同時にアップグレードするタイミングを特定できます。このようなコマンドについては、次の手順で説明します。

ストアをアップグレードするには、まず管理サービスを実行しているストレージ・ノードにリリース2.1のソフトウェアをインストールします。新しいCLIコマンドが機能するためには、更新された管理サービスが必要です。

次の手順を実行します。

  1. 2.0.x管理サービスを実行しているストレージ・ノードで、次の手順を実行します。

    1. 更新されたソフトウェアを、管理サービスを実行しているストレージ・ノード上の新規KVHOMEディレクトリに配置します。ここでは、新規KVHOMEディレクトリはNEW_KVHOMEとします。ノードでNFSを使用してこのディレクトリを共有する場合、これは、共有ディレクトリごとに一度のみ行う必要があります。

    2. リリース2.0 CLIを使用してストレージ・ノードを停止します。この手順を実行すると、そのストレージ・ノード上の管理サービスがシャットダウンされます。

      /etc/init.d、Upstartまたは他のメカニズムを使用して再起動時にストレージ・ノード・エージェントを自動的に起動するようにノードを構成している場合は、まずそのスクリプトをNEW_KVHOMEを指すように変更します。

      そのスクリプトを変更した後、ストレージ・ノードをシャットダウンします。

      java -jar KVHOME/lib/kvstore.jar stop -root <kvroot>
    3. リリース2.1コードを使用してストレージ・ノードを再起動します。

      nohup java -jar NEW_KVHOME/lib/kvstore.jar start -root <kvroot>& 

      (ストレージ・ノード・エージェントを自動的に再起動するようにシステムが構成されている場合、このステップは不要です。)

    4. CLIを使用して、リリース2.1コードを実行しているストレージ・ノードに接続します。

      java -jar NEW_KVHOME/lib/kvstore.jar runadmin -port 5000 -host node1
      kv-> 
    5. ストア内のすべてのストレージ・ノードで、リリース2.1へのアップグレードに必要とされる適切なソフトウェア・レベルが実行されていることを確認します。2.0のパッチ・リリース・レベルがソフトウェア・レベルの最小要件を満たしていることに注意してください。

      kv-> verify prerequisite
      Verify: starting verification of mystore based upon topology 
      sequence #315
      300 partitions and 6 storage nodes. Version: 11.2.2.1.2 Time:
      2013-06-25 08:19:15 UTC
      See node1:<KVROOT>/mystore/log/mystore_{0..N}.log for progress 
      messages
      Verify prerequisite: Storage Node [sn3] on node3:5000
      Datacenter: Boston [dc1]    Status: RUNNING   Ver: 11gR2.2.0.39
      
      ...
      
      Verification complete, no violations.  

      ここに示すのは、検証コマンドの出力例の一部のみです。重要な部分は最後の行です。違反はありません。

      違反の理由として最も可能性が高いのは、リリース・レベルを(誤って)ダウングレードしようとしたことです。たとえば、上位のマイナー・リリースから下位のマイナー・リリースにダウングレードすることはできません。この違反は、ストア内の他のノードのリリース・レベルより低いマイナー・リリース・レベルのパッケージを使用してCLIコマンドを実行しているために発生した可能性があります。

      注意

      上位のパッチ・レベルから下位のパッチレベルにダウングレードすることは可能です。したがって、たとえば2.1.4から2.1.3にダウングレードすることはできますが、2.1.3から2.0.39にダウングレードすることはできません。

      また、1.0ノードを2.1に直接アップグレードしようとした場合も違反が発生します。1.0ストアをアップグレードする場合、まず2.0にアップグレードしてから2.1にアップグレードする必要があります。1.0ストアをアップグレードする方法は、「NoSQL DBリリース1.0からNoSQL DBリリース2.0へのアップグレード」を参照してください。

      いずれにしても、verify prerequisiteコマンドが違反を示す場合は、状況を解決してから、識別されたそのノードのアップグレードを試行します。

    6. アップグレードするノードの順序付きリストを取得します。

      kv-> show upgrade-order
      sn3 sn4
      sn2 sn5
      sn6

      1行にまとめられたストレージ・ノードは、同時にアップグレードする必要があります。したがって、この出力ではsn3とsn4をアップグレードします。その後、sn2とsn5をアップグレードします。最後に、sn6をアップグレードします。

      次のグループに進む前に、ノードのグループを完全にアップグレードする必要があることに注意してください。つまり、sn3とsn4をアップグレードしてから、sn2、sn5またはsn6のアップグレードに進みます。

  2. アップグレードするストレージ・ノードの最初のグループ(この例ではsn3とsn4)の各ストレージ・ノードに対して、次の手順を実行します。

    1. 2.1ソフトウェアを新規KVHOMEディレクトリに配置します。ここでは、新規KVHOMEディレクトリはNEW_KVHOMEとします。ノードでNFSを使用してこのディレクトリを共有する場合、これは、共有ディレクトリごとに一度のみ行う必要があります。

    2. リリース2.0ユーティリティを使用してストレージ・ノードを停止します。

      /etc/init.d、Upstartまたは他のメカニズムを使用して再起動時にストレージ・ノード・エージェントを自動的に起動するようにノードを構成している場合は、まずそのスクリプトをNEW_KVHOMEを指すように変更します。

      スクリプトを変更したら、古いコードを使用してストレージ・ノードをシャットダウンします。

      java -jar KVHOME/lib/kvstore.jar stop -root <kvroot>
    3. 新しいコードを使用してストレージ・ノードを再起動します。

      nohup java -jar NEW_KVHOME/lib/kvstore.jar start -root <kvroot>& 

      (ストレージ・ノード・エージェントを自動的に再起動するようにシステムが構成されている場合、このステップは不要です。)

  3. ノードの次のセットをアップグレードする前に、アップグレードを検証します。このコマンドは、正常にアップグレードされたノード、および引き続きアップグレードが必要なノードを示します。

    kv-> verify upgrade
    Verify: starting verification of mystore based upon topology 
    sequence #315
    300 partitions and 6 storage nodes. Version: 11.2.2.1.2 Time:  ....
    See node1:<KVROOT>/mystore/log/mystore_{0..N}.log for progress 
    messages
    Verify upgrade: Storage Node [sn3] on node3:5000    
    Datacenter: Boston [dc1]    
    Status: RUNNING   
    Ver: 11gR2.2.1.2 2013-06-19 07:28:47 UTC  Build id: 81d2c9370013
    
    ...
    
    Verify: sn2: Node needs to be upgraded from 11.2.2.0.39 to 
    version 11.2.2.1.2 or newer
    
    ...
    
    Verification complete, 0 violations, 3 notes found.
    Verification note: [sn2]    Node needs to be upgraded from 
    11.2.2.0.39 to version 11.2.2.1.2 or newer
    Verification note: [sn5]    Node needs to be upgraded from 
    11.2.2.0.39 to version 11.2.2.1.2 or newer
    Verification note: [sn6]    Node needs to be upgraded from 
    11.2.2.0.39 to version 11.2.2.1.2 or newer 

    見やすさとスペースの関係で、verify upgradeコマンドによって生成された出力の一部のみを示しています。アップグレードされたノードは、現在のソフトウェア・バージョン番号を含む検証メッセージで識別されます。

     Verify upgrade: Storage Node [sn3] on node3:5000    
    Datacenter: Boston [dc1]    
    Status: RUNNING   
    Ver: 11gR2.2.1.2 2013-06-19 07:28:47 UTC  Build id: 81d2c9370013

    引き続きアップグレードが必要なノードは、2種類の方法で識別されます。まず、ノードの検証メッセージは、引き続きアップグレードが必要であることを示します。

    Verify: sn2: Node needs to be upgraded from 11.2.2.0.39 to 
    version 11.2.2.1.2 or newer 

    次に、検証出力の末尾には、引き続きアップグレードが必要なすべてのノードが示されます。

    Verification complete, 0 violations, 3 notes found.
    Verification note: [sn2]    Node needs to be upgraded from
    11.2.2.0.39 to version 11.2.2.1.2 or newer
    Verification note: [sn5]    Node needs to be upgraded from
    11.2.2.0.39 to version 11.2.2.1.2 or newer
    Verification note: [sn6]    Node needs to be upgraded from
    11.2.2.0.39 to version 11.2.2.1.2 or newer 

    注意

    アップグレードしたと思われるノードが、引き続きアップグレードが必要であることを検証が示す場合は、ストア内の他のノードをアップグレードする前にその問題を解決する必要があります。サニティ・チェックの一種として、アップグレードが完了したばかりのノードのみを検証できます。

    kv-> verify upgrade -sn sn3 -sn sn4
    Verify: starting verification of mystore based upon topology 
    sequence #315
    ...
    Verification complete, no violations.
    
  4. show upgrade-orderコマンドで識別されたストレージ・ノードのグループのアップグレードを続行できます。前述の手順に従います。2.0の停止コマンドを使用して2.0のストレージ・ノードを停止した後、2.1の起動コマンドを使用してストレージ・ノードを再起動します。すべてのストレージ・ノードがアップグレードされるまでこれを続行します。

    ある時点で次にアップグレードするノードのグループがわからなくなった場合は、show upgrade-orderコマンドをいつでも再実行できます。

    kv-> show upgrade-order
    Calculating upgrade order, target version: 11.2.2.1.2,
    prerequisite: 11.2.2.0.23
    sn2 sn5
    sn6 
  5. ストレージ・ノードのアップグレードがすべて完了した後、verify upgradeコマンドを実行すると、出力の末尾に検証に関する注意事項は表示されません。

    kv-> verify upgrade
    Verify: starting verification of mystore based upon topology 
    sequence #315
    ...
    Verification complete, no violations.
    kv-> 

2.1にアップグレードするためのスクリプトの使用

多数のストレージ・ノードが含まれるデプロイメントの場合、前述の手動によるアップグレード手順は問題をはらみます。その場合、スクリプトを使用してストアをアップグレードする必要があります。

2.1ディストリビューションでの検証にはサンプル・スクリプト(bashシェル・スクリプト)を使用できます。次の場所にあります。

<KVROOT>/examples/upgrade/onlineUpgrade

このスクリプトには、このセクションの前半で説明したのと同じアップグレード制限があります。2.0インストールから2.1へのアップグレードのみ可能です。また、アップグレード・プロセス中にストアを使用できるようにするためには、ストアに少なくとも3つのレプリケーション係数が必要です。

提供されているスクリプトはサンプルにすぎません。インストール環境で適切に機能するためには、スクリプトを変更する必要があります。

スクリプトではソフトウェア・プロビジョニングは実行されないことに注意してください。つまり、インストール・ソフトウェアのために使用するいかなる場所のホスト・マシンへの2.1パッケージの配置も自分で行う必要があります。ただし、スクリプトはsshを使用してホスト・マシンと通信するため、scpを使用してスクリプトでマシンをプロビジョニングすることもできます。

スクリプトはsshを使用するため、スクリプトが機能するためには、自動ログイン(つまり、パスワードなしのssh経由によるログイン)を許可するようにマシンを構成する必要があります。sshでは公開/秘密鍵認証をサポートしているため、これは通常は安全な動作方法です。

このようにsshを構成する方法の詳細は、http://www.linuxproblem.org/art_9.htmlを参照してください。sshおよびsshサーバーをインストールして構成する方法の詳細は、オペレーティング・システムのドキュメントを参照してください。

NoSQL DBリリース1.0からNoSQL DBリリース2.0へのアップグレード

NoSQL DBリリース2.0では、ストアのコンポーネントが相互に通信する内部プロトコルが変更されています。限定的なバージョン間の互換性が実装されています。アップグレード中もストアが実行されてクライアントから使用可能な状態を維持できるように、NoSQL DBリリース1.0を実行しているコンポーネント(埋込みクライアント・ライブラリを使用するアプリケーションを含む)とNoSQL DBリリース2.0を実行しているコンポーネントは相互に通信できます。ただし、アップグレードの進行中にストアの構成を変更する操作を実行しないでください。

同様に、NoSQL DBリリース2.0は、ストアのコンポーネントで保持される永続的なメタデータを変更します。管理やレプリケーション・ノードなどのコンポーネントが新規ソフトウェアで起動されると、メタデータが新しい形式に自動的に変換されます。したがって、ストアを以前のバックアップからリストアせずに、古いNoSQL DBリリースにダウングレードすることはできません。

注意

複数のデータ・センターを含むNoSQL DBリリース1.0トポロジを持つストアでは、オンライン・アップグレードはサポートされていません。ストアにそのようなトポロジがある場合は、アップグレードを試行する前にテクニカル・サポートに連絡してください。

注意

NoSQL DBリリース1.0の管理CLIプログラムは、NoSQL DBリリース2.0の管理サービスと互換性がありません。その逆も同様です。CLIを実行する場合、互換性のあるライブラリを使用していることを確認してください。NoSQL DBリリース2の管理コンソールに初めて接続する場合、Webブラウザのキャッシュをクリアする必要がある可能性があります。管理コンソール。

リリース1.0インストールをリリース2.0にアップグレードするには、ストア内のノード(マシン)ごとに次の手順を実行します。

  1. 更新されたソフトウェアを新規KVHOMEディレクトリ(ここでは、NEW_KVHOMEと呼ばれる)に配置します。ノードでNFSを使用してこのディレクトリを共有する場合、これは、共有ディレクトリごとに一度のみ行う必要があります。

  2. 再起動時に/etc/init.d、Upstartまたはその他の方法(たとえば、nohup java -jar KVHOME/lib/kvstore.jar start -root <kvroot> ...&を使用するなど)を使用してストレージ・ノード・エージェントが自動的に起動されるようノードを構成した場合、まず、そのスクリプトがNEW_KVHOMEを指すように変更します。

  3. 各KVROOTに対して次のようにします(通常、ノードごとに一度)。

    1. 古いコードを使用してストレージ・ノードを停止します。

      java -jar OLD_KVHOME/lib/kvstore.jar stop -root <kvroot> \
      [-config <configfile>]
    2. 新しいコードを使用してストレージ・ノードを再起動します。

      nohup java -jar NEW_KVHOME/lib/kvstore.jar start -root <kvroot> \
      [-config <configfile>] & 

      ストレージ・ノード・エージェントを自動的に再起動するようにシステムが構成されている場合、このステップは不要です。

  4. OLD_KVHOMEを参照する管理スクリプトやその他のファイルが変更されていることを確認します。

これを行ったら、OLD_KVHOMEを削除できます。