GridDB 運用管理ガイド

Revision: 1616

Table of Contents

1 はじめに

1.1 本書の目的と構成

本書はGridDB の提供する運用機能について説明したものです。

本書は、GridDBを用いたシステム構築を行う設計者、GridDBの運用管理を行う管理者の方を対象としています。

本書は、以下のような構成となっています。

  • サービス
    • OS起動時に自動的に実行されるGridDBのサービスについて説明します。
  • 統合運用管理GUI(gs_admin)
    • GridDBクラスタの運用機能を統合した、Webベースの統合運用管理GUI(gs_admin)について説明します。
  • クラスタ運用管理コマンド・インタプリタ(gs_sh)
    • GridDBクラスタの運用管理機能、およびデータ操作を提供するコマンドインタプリタ(gs_sh)について説明します。
  • 運用コマンド
    • GridDBの各種運用コマンドについて説明します。
  • エクスポート/インポート
    • エクスポート/インポートについて説明します。

1.2 用語の説明

GridDBの説明で用いられる主な用語の説明です。

用語意味
ノードGridDBでデータ管理を行う個々のサーバプロセスを指します。
クラスタ一体となってデータ管理を行う、1つ、もしくは複数のノードの集合を指します。
パーティションデータを格納する論理的な領域です。
パーティショングループ複数のパーティションをグルーピングしてまとめた単位です。
ディスクに永続化される際のファイルシステム上のデータ単位でもあります。
ロウGridDBで管理する1件分のデータを指します。キーと複数の値からなるひとまとまりのデータです。
コンテナ(テーブル)NoSQL I/Fで操作する場合はコンテナ、NewSQL I/Fで操作する場合はテーブルと呼びます。コンテナ(テーブル)には、コレクション(テーブル)と時系列コンテナ(時系列テーブル)の2種類のデータタイプが存在します。
コレクション(テーブル)一般の型のキーを持つロウを管理するコンテナ(テーブル)の1種です。
時系列コンテナ(時系列テーブル)時刻型のキーを持つロウを管理するコンテナ(テーブル)の1種です。時系列データ専用の機能を持ちます。
マスタノードクラスタの管理処理を行うノードです。
フォロワノードクラスタに参加している、マスタノード以外のノードです。
オーナノード複製されたコンテナのうち、マスタコンテナを記録しているノードです。
構成ノード数クラスタに参加できるノード数。
有効ノード数クラスタに参加しているノード数。
安定状態クラスタが有効ノード数=構成ノード数である状態。

GridDBで使用する情報の文字数です。

項目詳細備考
接続サーバ最大値指定なしWebサーバなどシステム依存により
2048バイトなど制限あり
ポート0-65535
ユーザ名最大32バイト。1文字以上のASCII英数字、Linuxシステム依存
"_"(アンダースコア) 、数字を先頭文字に指定できない。
大文字小文字の区別なし。
パスワード最大長指定なし。Linuxシステム依存
クラスタ名最大長64文字。1文字以上のASCII英数字、GridDB仕様に依存
"_"(アンダースコア) 、数字を先頭文字に指定できない。
大文字小文字の区別なし。
パス最大1023バイトLinuxシステム依存
ファイル名最大255バイトLinuxシステム依存

1.3 コンテナ(テーブル)へのアクセス

GridDBには、NoSQLインタフェース(NoSQL I/F)とNewSQLインタフェース(NewSQL I/F)があります。また、GridDBはコンテナ(テーブル)でデータ管理を行います。NoSQL I/Fで操作する場合はコンテナ、NewSQL I/Fで操作する場合はテーブルと呼びます。GridDB Standard EditionではNoSQL I/Fをサポートし、GridDB Advanced Edition / Vector EditionではNoSQL I/F、NewSQL I/F双方のインタフェースをサポートします。

  • NoSQL I/Fで作成したコンテナは、テーブルとしてNewSQL I/Fで操作できます。
  • NewSQL I/Fで操作したテーブルは、コンテナとしてNoSQL I/Fで操作できます。

コンテナとテーブルのアクセス範囲

1.4 定義ファイル

GridDBの定義ファイルには以下の2種類があります。

  • クラスタ定義ファイル
  • ノード定義ファイル

クラスタ定義ファイルは、クラスタ全体で共通となる設定値を定義するファイルです。

ノード定義ファイルは、ノード毎に異なる設定値を定義するファイルです。

これら定義ファイルの雛形は、以下の場所にインストールされています。

/usr/griddb/                     # インストールディレクトリ
            conf/                # 定義ファイルの格納ディレクトリ
                 gs_cluster.json # クラスタ定義ファイルの雛形
                 gs_node.json    # ノード定義ファイルの雛形

新規インストールでは、GridDB ホームディレクトリ下のconfディレクトリにも同じファイルが配置されます。運用の際には、こちらの定義ファイルを編集してください。

/var/lib/gridstore/                       # GridDBホームディレクトリ
                  conf/                   # 定義ファイルの格納ディレクトリ
                       gs_cluster.json    # (編集後の)クラスタ定義ファイル
                       gs_node.json       # (編集後の)ノード定義ファイル

定義ファイルは、適用するシステム環境に合わせて設定してください。

【メモ】

  • GridDBをバージョンアップした場合、定義ファイルに新たにパラメータが追加されることがあります。新たにインストールされた雛形と、ご利用されていた定義ファイルとを比較し、適宜反映してご利用ください。

2 サービス

2.1 概要

GridDBのサービスは、OS起動時に自動的に実行され、GridDBノード(以下、ノード)を起動し、GridDBクラスタ(以下、クラスタ)へ参加します。OSのシャットダウン時には、クラスタから離脱し、ノードを停止します。

サービスにより、次のことができます。

  • ノード(クラスタ)の起動、停止、再起動
  • ノード(クラスタ)のプロセス状態確認

2.2 用語

以下で使用する用語を定義します。

用語意味
サービススクリプトOS起動時に自動的に実行されるスクリプトファイル。GridDBのサーバパッケージにより、
/etc/init.d/gridstore にインストールされ、GridDBサービスとしてシステムに登録される。
PIDファイルgsserverプロセスのプロセスID(PID)のみを記載したファイル。gsserverプロセス起動時に、
$GS_HOME/conf/gridstore.pid に作成される。
起動設定ファイルサービスの中で設定可能な変数を記載するファイル。GridDBのサーバパッケージにより、
/etc/sysconfig/gridstore/gridstore.conf にインストールされる。

2.3 サービスを利用するには

サービスのインストールと設定の手順は、以下のとおりです。

  1. GridDBサーバパッケージ、クライアントパッケージのインストール
  2. クラスタを構成するすべてのノードの設定
  3. 起動設定ファイルの設定

GridDBのインストール、ノードを設定する手順に関しては、『GridDB クイックスタートガイド』(GridDB_QuickStartGuide.html)を参照ください。

2.4 サービス仕様

2.4.1 パラメータ

GridDBのサービスの動作を制御するパラメータを用意しています。デフォルトでは、OS起動にノードを起動・クラスタの参加、停止時にクラスタから離脱・ノードを停止する設定になっています。

パラメータの一覧は以下のとおりです。

パラメータデフォルト説明
GS_USERadminGridDBのユーザ名
GS_PASSWORDadminGS_USER のパスワード
CLUSTER_NAMEINPUT_YOUR_CLUSTER_NAME_HERE参加するクラスタ名
MIN_NODE_NUM1参加するクラスタの構成ノード数

パラメータを変更するには起動設定ファイル( /etc/sysconfig/gridstore/gridstore.conf )を編集します。

サーバパッケージのアップデートインストールやアンインストールのとき、起動設定ファイルは上書き・アンインストールされません。

【注意点】

  • サービススクリプトに記載されているパラメータは直接編集しないでください。アンインストールやアップデートインストールの際に編集したファイルは失われます。パラメータを変更するときは、起動設定ファイルを編集してください。
  • 複数ノードでクラスタを構成する場合、参加する各ノードの起動設定ファイルは同一のものにしてください。特に、システム稼働中に運用管理コマンド、コマンド・インタプリタなどでクラスタを拡張した場合、すべてのノードの MIN_NODE_NUM を拡張後のクラスタ構成ノード数に変更する必要があります。

2.4.2 ログ

サービスのログに関しては、ブートログ( /var/log/boot.log )や運用コマンドのログ( $GS_HOME/log )を参照してください。

2.5 機能

GridDBのサービスの機能を以下に示します。

【注意点】

  • status以外の機能は、rootユーザのみ実行可能です。

2.5.1 start

動作:

  • ノードを起動し、クラスタへ参加します。
    # service gridstore start
    
  • ノードの起動はgs_startnodeコマンド、クラスタへの参加はgs_joinclusterコマンドをそれぞれ用います。
  • gs_startnodeコマンド実行時、リカバリ処理の終了を待合せます。
  • gs_joinclusterコマンド実行時、クラスタ稼働まで待合せません。
  • CLUSTER_NAME にクラスタ名を設定します。
  • MIN_NODE_NUM にクラスタを構成するノード台数を設定します。

【注意点】

  • クラスタを稼働する途中にエラーが発生した場合は、プロセスの終了処理が行われます。

2.5.2 stop

動作:

  • クラスタから離脱してからノードを停止します。
    # service gridstore stop
    
  • プロセスが無くなったら完了、タイムアウト時間が経過したらエラーとします(終了コード150)。
  • サービスで起動したプロセスが無ければ、終了コード0とします。
  • クラスタからの離脱はgs_leaveclusterコマンドを用います。
  • ノードの停止前にgs_leaveclusterコマンドを実行します。
  • gs_leaveclusterコマンド実行時、クラスタ離脱を待合せます。
  • gs_leaveclusterの終了コードにかかわらず、ノード停止処理を行います。

【注意点】

  • 運用コマンドやコマンド・インタプリタ(gs_sh)で起動したノードはサービスのstopで停止することはできません。それぞれのツールで停止を行ってください。
  • 複数ノードでクラスタを構成している場合、1つのノードにstopを実行してもクラスタは停止しません。クラスタを停止させる場合は、gs_stopclusterコマンドを利用してください。

2.5.3 status

動作:

  • ノードのプロセスが実行中かどうかを表示します。
    # service gridstore status
    

2.5.4 restart

動作:

  • stopとstartを連続で行います。

2.5.5 condrestart

動作:

  • ロックファイルがあればrestartを行います。

2.6 障害対策機能

2.6.1 機能

障害対策機能は、以下の動作となります。

障害対策機能

障害対策機能

2.6.2 設定

障害対策機能の設定は以下になります。

パラメータデフォルト設定値
SVC_ENABLE_AUTO_RESTARTtruetrue(有効)/false(無効)
GS_USERadmin適宜
GS_PASSWORDadmin適宜

パラメータを変更するには起動設定ファイル( /etc/sysconfig/gridstore/gridstore.conf )を編集します。

SVC_ENABLE_AUTO_RESTART

  • GridDBノードの起動時(再起動時)に設定が有効になります。
  • 別の監視システムで、GridDBの障害復旧の制御を行いたい場合は、本障害対応機能を無効にして下さい。

GS_USER/GS_PASSWORD

  • GridDBの管理者ユーザ、およびパスワードを設定します。
  • ユーザ/パスワードは以下のケースで利用します。
    • A.サービスによる起動、停止、再起動する場合
    • B.gs_startnodeで、-uオプションが指定されていない場合

【注意点】

  • 指定したGS_USER/GS_PASSWORDに誤りがある、もしくはユーザ/パスワードが指定されていない場合には、GridDBノードの起動に失敗します。

2.7 エラーメッセージ一覧

サービスのエラーメッセージは以下のとおりです。

コードメッセージ意味
F00003Json load error定義ファイルの読込みに失敗しました。
F01001Stop service timed outノード停止処理がタイムアウトしました。
F01002Startnode errorノード起動処理でエラーが発生しました。
F01003Startnode timed outノード起動処理がタイムアウトしました。
F01004Joincluster errorクラスタ参加処理でエラーが発生しました。
F01005Joincluster timed outクラスタ参加処理がタイムアウトしました。
F01006Leavecluster errorクラスタ離脱処理でエラーが発生しました。
F02001Command execution errorコマンド実行でエラーが発生しました。
F02002Command execution timed outコマンド実行がタイムアウトしました。

【メモ】

  • 各コマンド実行でエラーが発生した場合、運用コマンドのエラーが合わせて表示・記録されます。エラーへの対応の際は、運用コマンドの項(gs_startnode、gs_joincluster、gs_leavecluster)も合わせて参照してください。

3 統合運用管理GUI(gs_admin)

3.1 概要

統合運用管理GUI(以降gs_adminと記載します)は、GridDBのクラスタ運用機能を統合したWebアプリケーションです。

gs_adminを用いて次のことができます。

  • クラスタ構成の管理および操作
    • ノードリポジトリにクラスタ情報、ノード情報を集約
    • ノードリポジトリを編集
    • クラスタ構成の操作
  • クラスタやノードの情報参照
    • 性能情報やログ解析情報を表示するダッシュボードの表示
    • クラスタの状態や構成情報
    • ノードのバージョンやデータのディスクへの書き込み(チェックポイント)情報
    • ノードに配置されたコンテナ情報
    • ノードのイベントログ閲覧、エラー解析のためのイベントログ出力レベルの動的変更
    • クラスタに対するSQLの実行および結果表示
  • ノードの性能情報参照
    • ノードの性能情報をグラフ表示
    • ノードの特定時点の性能情報を保管し、現在の性能情報と比較
  • クラスタ上のデータベースに関する機能
    • データベース一覧の表示
    • データベースおよびコンテナのツリー表示
    • クラスタへのデータベース作成、クラスタからのデータベース削除
    • 一般ユーザへのデータベースのアクセス権の付与、剥奪
    • データベースへのSQLの実行、結果表示 (GridDB Advanced Edition / Vector Editionのみ)
  • クラスタ上の一般ユーザに関する機能
    • クラスタへの一般ユーザ作成、クラスタからの一般ユーザ削除
    • 一般ユーザのパスワード変更
  • データベース上のコンテナに関する機能
    • データベースへのコンテナ作成、データベースからのコンテナ削除
    • コンテナの検索、検索ツリー構造の保存
    • コンテナ情報表示とコンテナへの索引、トリガの設定
    • コンテナへのTQL(問合せ言語)の実行、結果表示

3.1.1 gs_adminの構成

gs_adminは、クラスタにアクセスするために、クラスタを構成するノードを起動しているマシン、もしくはサブネットが等しく、マルチキャストが配送されるネットワーク上のマシンに配置する必要があります。

3.2 gs_adminを利用するには

gs_adminはTomcat上で動作するWebアプリケーションです。

gs_adminを利用するには、事前にTomcatとJavaをインストールする必要があります。対応するバージョンは以下のとおりです。

  • Apache Tomcat 7.0/8.0
  • Oracle Java 7/8

また、gs_admin Ver.3.5が対応するGridDBのバージョンは以下のとおりです。

  • GridDB Standard Edition Ver.3.5
  • GridDB Advanced Edition Ver.3.5

※GridDB Vector Edition Ver.3.2は非対応です。gs_admin Ver.3.2をご利用ください。

gs_adminの利用までの手順は、以下のとおりです。

  1. GridDBクラスタを構成するGridDBノードをそれぞれ設定する。
  2. gs_adminのインストールと設定を行う。
  3. gs_adminのアプリケーションURIにブラウザでアクセスし、 gs_admin利用ユーザで ログインを行う。

GridDBノードを設定する手順に関しては、『GridDB クイックスタートガイド』(GridDB_QuickStartGuide.html)を参照ください。

gs_adminのインストールと設定の手順は、以下のとおりです。

  1. GridDBクライアントパッケージのインストール
  2. Tomcatへgs_admin.warをデプロイする
  3. gs_admin利用ユーザの設定
  4. gs_admin.propertiesファイルの設定
  5. ノードリポジトリの設定
  6. adminHomeの権限設定

3.2.1 クライアントパッケージのインストール

GridDBのクライアントパッケージ(griddb-xx-client-X.X.X-linux.x86_64.rpm)をインストールします。

Webアプリケーションを配置するマシンにrootユーザでログインし、以下のコマンドでパッケージをインストールします。

# rpm -Uvh griddb-xx-client-X.X.X-linux.x86_64.rpm

※xxはGridDBのエディション(se, ae, ve)※X.X.XはGridDBのバージョン

クライアントパッケージをインストールすると、GridDBホームディレクトリ( /var/lib/gridstore/admin )にadminというディレクトリが作成されます。このディレクトリ( /var/lib/gridstore/admin )を、以降では adminHome と記載します。

adminHomeにはgs_adminの設定情報やgs_adminで利用するデータが配置されます。gs_adminにはadminHomeのファイルを操作する機能があるため、適切な権限設定が必要です。権限設定に関しては後述します。

adminHome下の構成は以下のとおりです。

capture/                                                # スナップショットの保存ディレクトリ(※)
        ノードアドレス_ポート番号/YYYYMMDDHHMMSS.json   # スナップショットファイル(※)
conf/                                                   # 設定ファイルディレクトリ
     gs_admin.properties                                # 初期設定する静的パラメータファイル
     gs_admin.settings                                  # 表示に関する設定をする動的パラメータファイル
     password                                           # gs_adminユーザ定義ファイル
     repository.json                                    # ノードリポジトリファイル
log/                                                    # gs_adminのログファイルディレクトリ(※)
    gs_admin-YYYYMMDD.log                               # ログファイル(※)
tree/                                                   # コンテナツリーの構造ファイルディレクトリ(※)
     foldertree-クラスタ名-ユーザ名.json                # フォルダツリーファイル(※)

(※)のファイルおよびディレクトリはgs_adminが自動的に作成します。

【注意点】

  • adminHome以下のファイルおよびディレクトリは、クライアントパッケージをアンインストールしても削除されません。ファイルが不要の場合は手動で削除してください。

3.2.2 Tomcatへデプロイ

gs_adminはTomcat上で動作するWebアプリケーションです。gs_adminを利用するには、Tomcatへgs_adminのwarファイルをデプロイする必要があります。本節では、Tomcatの設定については割愛します。

デプロイの手順は以下のとおりです。

GridDBのクライアントパッケージ(griddb-xx-client-X.X.X-linux.x86_64.rpm)に含まれるwarファイルをTomcatにデプロイします。

クライアントパッケージをインストールすると、warファイルは以下にインストールされます。

  • /usr/griddb/web/gs_admin.war

gs_admin.warをTomcatインストールディレクトリのwebappsディレクトリ下にコピーします。

$ cp /usr/griddb/web/gs_admin.war [Tomcatインストールディレクトリ]/webapps

3.2.3 gs_admin利用ユーザの設定

gs_adminの利用の際、gs_admin利用ユーザで認証を行います。

管理対象のGridDBクラスタの管理ユーザをgs_admin利用ユーザとして設定する必要があります。

gs_adminのユーザ定義ファイルは、 /var/lib/gridstore/admin/conf/password です。

クライアントパッケージのインストール時、このファイルは作成されません。

簡単に利用するには、管理したいクラスタのノードのユーザ定義ファイル( /var/lib/gridstore/conf/password )をgs_adminのユーザ定義ファイル( /var/lib/gridstore/admin/conf/password )へコピーしてください。この場合、コピーしたユーザ定義ファイルに記載されている管理ユーザすべてがgs_admin利用ユーザとなります。

【メモ】

3.2.4 gs_admin.propertiesファイルの設定

設定ファイルは、 /var/lib/gridstore/admin/conf/gs_admin.properties です。gsadmユーザでGridDBクラスタ構成に合わせて設定します。

プロパティファイルを書き換えた場合は、Webアプリケーションを再ロードしてください。

gs_admin.propertiesには以下の設定項目があります。

パラメータ初期設定値説明
adminUseradmings_adminの管理ユーザを設定します。カンマで区切ることで、
複数のユーザ名を設定することができます。gs_adminの管理ユーザは、下記の
機能を利用することができます。
 ・クラスタ操作機能
 ・リポジトリ管理機能
ospasswordなしノードのgsadmユーザ(OSユーザ)のパスワードを設定します。
設定すると下記の機能を利用することができます。
 ・クラスタ操作機能のノード起動操作(Start)
 ・OS情報表示画面

【メモ】

  • GridDBインストール時、GridDBを利用するためのOSユーザとしてgsadmが登録されます。gsadmユーザにはパスワードが設定されていないため、gs_adminで ospassword を設定したい場合は、あらかじめ設定しておく必要があります。

3.2.5 ノードリポジトリの設定

ノードリポジトリファイル( /var/lib/gridstore/admin/conf/repository.json )は、クラスタ構成情報とノード情報を一元管理するファイルです。管理対象のクラスタの指定や、クラスタ操作機能に用いられます。gsadmユーザでGridDBクラスタ構成に合わせて設定します。

デフォルトのファイル内容は下記のとおりです。

{
        "header" : {
                "lastModified" : "",
                "version" : "2.7.0"
        },
        "clusters" : [
                {
                        "name" : "INPUT_YOUR_CLUSTER_NAME_HERE",
                        "address" : "239.0.0.1",
                        "port" : 31999,
                        "jdbcAddress" : "239.0.0.1",
                        "jdbcPort" : 41999
                }
        ],
        "nodes" : [
                {
                        "address" : "192.168.1.10",
                        "port" : 10040,
                        "sshPort" : 22,
                        "clusterName" : "INPUT_YOUR_CLUSTER_NAME_HERE"
                }
        ]
}

ノードリポジトリを設定するには、ファイルを直接編集するか、リポジトリ管理画面を利用します。リポジトリ管理画面を利用した設定を行う場合は、リポジトリ管理画面の機能 およびgs_adminで稼働中のクラスタの管理を始めるを参照ください(推奨)。

クラスタ構成を初めて行う場合は、運用管理コマンドやコマンドインタプリタ(gs_sh)を利用することを推奨します。

3.2.6 adminHomeの権限設定

adminHome下にはgs_adminがファイルやディレクトリを自動的に作成します。そのため、Tomcat実行ユーザにadminHomeに対する読込み・書込み権限が必要となります。そこで、あらかじめadminHome下のファイルやディレクトリの所有者をTomcat実行ユーザ(デフォルトではtomcat)に変更します。

rootユーザで所有者を変更します。

# chown -R tomcat.tomcat /var/lib/gridstore/admin

【メモ】

  • adminHomeのデフォルトは /var/lib/gridstore/admin ですが、Webアプリケーションの設定を変更することでディレクトリを変更できます。Tomcatホーム(デフォルトでは /usr/local/tomcat )下の /webapps/gs_admin/WEB-INF/classes/conf/gs_adminPath.propertiesadminHome の値を変更します。

【注意点】

  • gs_adminのバージョンアップの際、warファイルを再配置するとgs_adminPath.propertiesは再作成されます。gs_adminPath.propertiesの値を変更して運用する場合、再設定が必要となります。

3.3 ログインおよびログイン先の画面

3.3.1 ログイン画面

gs_adminにアクセスするには以下のアプリケーションURIにアクセスします。

http://Tomcat動作マシンアドレス:8080/gs_admin

gs_adminのアプリケーションURIにアクセスすると、ログイン画面が表示されます。

ログイン画面

ログイン画面

cluster欄で管理対象クラスタを選択してログインした場合は統合運用管理画面へログインします。

repository managerを選択してログインした場合はリポジトリ管理画面へログインします。

ログインする際、userとpasswordにgs_admin利用ユーザ名とパスワードをそれぞれ入力し、Loginボタンを押してください。

【メモ】

  • Tomcat動作マシンのポート番号は環境により異なります。デフォルト値は8080です。
  • gs_admin Ver.2.0以上では、ノードを起動していなくても統合運用管理画面にログインが可能です。

3.3.2 統合運用管理画面

統合運用管理画面は、以下の画面です。

統合運用管理画面

統合運用管理画面

統合運用管理画面は以下の要素で構成されます。

要素略称位置機能
ツリービューTree左部操作対象の一覧表示、選択
情報表示・入力部View右部操作対象の情報表示、情報入力
メニュー領域上部ログアウト
メッセージ領域下部

Treeの機能

Treeでは、主な操作対象をクラスタとするかコンテナとするかを上部のタブで切り替えることができます。

タブツリーの名前主な機能
ClusterTreeクラスタツリークラスタやノードの一覧表示、操作対象の選択
ContainerTreeコンテナツリーデータベースの一覧表示、コンテナの検索、操作対象の選択

Viewの機能

Viewでは、Treeで選択した操作対象ごとにViewの上部に表示されるタブが異なります。機能を上部のタブで切り替えることができます。

詳しくは各ツリーおよび画面の項目を参照ください。

3.3.3 リポジトリ管理画面

gs_adminの管理ユーザのみ、この機能を使用できます。

ログイン画面でrepository managerを選択してgs_adminの管理ユーザでログインすると、リポジトリ管理画面に移動します。

リポジトリ管理画面は、以下の画面です。

リポジトリ管理画面

リポジトリ管理画面

リポジトリ管理画面には以下の機能があります。

  • リポジトリ情報の表示
    • ノードリポジトリファイル( /var/lib/gridstore/admin/conf/repository.json )の情報をクラスタ情報とノード情報に分けてそれぞれ表で表示します。
  • リポジトリ情報の編集
    • 編集した情報は保存を行わない限り、ノードリポジトリファイルには反映されません。
    • クラスタ情報、ノード情報のそれぞれ上部にある入力欄にデータを入力し、Addボタンを押すことでクラスタおよびノードをリポジトリに追加します。
      • クラスタは、クラスタ名が重複する場合には追加、置換できません。
      • ノードは、IPアドレスとポートの組が重複する場合には追加、置換できません。
    • 表の行を選択した場合はReplace(置換)、Delete(削除)が行えます。
      • 行を選択すると、行の内容が入力欄にコピーされます。
      • 複数行の選択はできません。
    • クラスタ追加、置換にはクラスタ名のほかに、クラスタ接続方式に応じて以下のいずれかの情報が必要となります。
      • クラスタ接続方式が"MULTICAST"の場合:マルチキャストアドレス、マルチキャストポート
      • クラスタ接続方式が"FIXED_LIST"の場合:固定リスト方式の接続先リスト
      • クラスタ接続方式が"PROVIDER"の場合:プロバイダ方式のプロバイダURL
    • ノード追加、置換にはIPアドレス、ポートが必要となります。
    • クラスタを削除する場合、削除後に、削除したクラスタに登録されているノードがあれば、それらのノードからクラスタを削除するかの確認ダイアログを表示します。Yesを選択すると削除します。
  • クラスタ同期
    • 稼働中のクラスタの情報を取得して、リポジトリに登録することができます。
    • Syncボタンを押すと、IPアドレスとポートを入力するダイアログが表示されます。ここに、クラスタを構成しているいずれかのノードの、IPアドレスおよびポートを入力してSyncを選択し、確認ダイアログでYesを押すとリポジトリ管理画面の表示が上書き更新されます。
  • リポジトリ情報の更新
    • Refreshボタンを押すと、ノードリポジトリファイルの再読込を行います。
    • 保存していない内容は破棄されます。
  • リポジトリ情報の保存
    • Saveボタンを押すと、表示されている内容をノードリポジトリファイルへ保存します。
    • この機能により保存しない限りは、ノードリポジトリファイルに変更は行われません。

入力欄の仕様は以下のとおりです。

クラスタ

  • クラスタ名(Name)
  • クラスタ接続方式(Notification Mode)
    • セレクトボックスで下記のいずれかを選択します。
      • マルチキャスト方式:MULTICAST
      • 固定リスト方式:FIXED_LIST
      • プロバイダ方式:PROVIDER
  • マルチキャストアドレス(Multicast Address)
  • マルチキャストポート(Multicast Port)
  • JDBCアドレス(JDBC Address)
    • クラスタ定義ファイル(gs_cluster.json)/sql/notificationAddress を指定します。
    • マルチキャスト方式の時に指定します。(任意)
    • GridDB Advanced Edition / Vector EditionでSQL画面を使うときに必要です。
  • JDBCポート(JDBC Port)
    • クラスタ定義ファイル(gs_cluster.json)/sql/notificationPort を指定します。
    • マルチキャスト方式の時に指定します。(任意)
    • GridDB Advanced Edition / Vector EditionでSQL画面を使うときに必要です。
  • 固定リスト方式の接続先リスト(Transaction Member)
    • クラスタ定義ファイル(gs_cluster.json)/cluster/notificationMember/transaction/address/cluster/notificationMember/transaction/port を:で連結して、各ノードの値をカンマ区切りで指定します。
    • 例: 192.168.10.1:10001,192.168.10.2:10001,192.168.10.3:10001
  • 固定リスト方式の接続先リスト(SQL Member)
    • クラスタ定義ファイル(gs_cluster.json)/cluster/notificationMember/sql/address/cluster/notificationMember/sql/port を:で連結して、各ノードの値をカンマ区切りで指定します。
    • 例: 192.168.10.1:20001,192.168.10.2:20001,192.168.10.3:20001
  • プロバイダ方式のプロバイダURL(Provider URL)

ノード

  • クラスタ(Cluster)
    • セレクトボックスで登録されているクラスタを選択します。
  • IPアドレス(IP Address)
  • ポート(Port)
  • SSHポート(SSH Port)
    • ノードが動作するマシンのSSHポートを指定します。デフォルト値は22です。

3.4 クラスタツリーに関する機能

3.4.1 クラスタツリー

概要

クラスタツリーでは、管理対象クラスタを構成するノード、つまり、リポジトリのノード(clusterNameが管理対象クラスタ)をツリー形式で表示します。

クラスタツリー

クラスタツリー

リポジトリに登録されていないノードの先頭には*が表示されます。

クラスタツリーに表示されるアイコンの説明は以下のとおりです。

アイコン説明
img/gs_admin-icon01.pngクラスタ
img/gs_admin-icon02.pngマスタノード
img/gs_admin-icon03.pngフォロワノード
img/gs_admin-icon04.png起動済みノード
img/gs_admin-icon05.png未起動ノード
img/gs_admin-icon06.png状態未確認ノード
img/gs_admin-icon10.pngメッセージ

コンテキストメニュー

ツリー内の要素を右クリックすると要素に応じたコンテキストメニューが表示されます。メニューから項目を選択することで、情報更新や要素に対する操作ができます。

それぞれの選択要素に対するメニューと機能は以下のとおりです。

選択要素メニュー機能
クラスタrefreshTreeのノード一覧の再取得
ノードrefreshViewにノードの最新情報を表示

操作対象とViewのタブ

ツリー内の要素を左クリックすると、要素に応じた機能がViewに表示されます。機能はViewの上部のタブで切り替えます。

選択要素タブ画面の名前機能
クラスタDashboardダッシュボード画面クラスタ全体の様々な情報が表示されます。
Statusクラスタステータス画面管理対象クラスタの構成情報やデータ情報が表示されます。
MonitorOS情報表示画面ノードが動作するマシンのOS情報が表示されます。
Configurationクラスタ操作画面ノードの起動、終了を含む、クラスタ操作を行うことができます。
ノードSystemシステム情報画面ノードのシステム情報が表示されます。
Containerコンテナ一覧画面ノードが格納しているコンテナの一覧が表示されます。
Performance性能情報画面ノードの性能情報がグラフで表示されます。
Snapshotスナップショット画面採取した性能値を表に表示します。以前に採取した値と比較することができます。
Logログ画面ノードのイベントログの表示や、イベントログの出力レベルの設定ができます。

【メモ】

  • クラスタのマスタノードが変わった場合、ノード一覧の再取得に失敗することがあります。一度ログアウトして再度ログインしてください。

3.4.2 ダッシュボード画面

概要

クラスタ全体の様々な情報が表示されます。

利用方法

ツリーの種類操作対象タブ名
クラスタツリークラスタDashboard

画面

ダッシュボード画面

ダッシュボード画面

機能

ダッシュボード画面には以下の機能があります。

  • クラスタの全データ量表示 (◆Total Stored)
    • 稼働中のクラスタの全データ量を単位付きで表示します。(KB〜TB)
    • 全データ量の何%がメモリ上にあるかも表示します。
  • メモリ使用量表示 (◆Store Memory Usage)
    • ストアメモリとして利用できるメモリの使用率を円グラフで表示します。
  • クラスタ健康度表示 (◆Cluster Health)
    • 稼働ノードと非稼働ノード数の割合を円グラフで表示します。
  • クラスタへのネットワーク接続情報表示 (◆Current Connections)
    • クラスタに対する現在のコネクション、セッション、トランザクション数を棒グラフで表示します。
  • クラスタのイベント数表示(過去5分間) (◆Event Count)
    • クラスタにおける過去5分間の読込命令、書込命令、スワップ読込、スワップ書込、ロック競合発生のイベント数を表示します。
    • ※過去5分間とはログに最新の性能情報が出力された時点から過去5分間のことを指します。
  • ログ解析情報表示 (◆Log Information)
    • クラスタを構成する各ノードのWARNING、ERRORのログを表示します。
    • 左側の詳細アイコンにカーソルを合わせると、対象ログの情報を表示します。

3.4.3 クラスタステータス画面

概要

管理対象クラスタの構成情報やデータ情報が表示されます。

利用方法

ツリーの種類操作対象タブ名
クラスタツリークラスタStatus

画面

クラスタステータス画面

クラスタステータス画面

機能

クラスタステータス画面には以下の機能があります。

  • クラスタの情報表示 (◆Cluster Information)
    • マスタノードから取得した以下の情報を表示します。
      • クラスタ名、稼働ノード数、構成ノード数、パーティション状態、マルチキャストアドレスおよびポート
  • データに関する情報表示 (◆Stored Data Information)
    • クラスタから取得した以下の情報を表示します。
      • パーティション数、総コンテナ数
  • クラスタを構成するノードの情報表示 (◆Node Information)
    • 各ノードの以下の情報を表示します。
      • IPアドレスおよびポート、ノード状態、クラスタ状態、複合状態、ノードのバージョン
      • 複合状態は、クラスタ操作画面で表示されるノードの状態です。

3.4.4 OS情報表示画面

概要

ノードの動作するマシンのリソース情報やOS性能が表示されます。GridDBの性能分析やCPUやネットワークなどの負荷状況が分かります。

利用方法

ツリーの種類操作対象タブ名
クラスタツリークラスタMonitor

画面

OS情報表示画面

OS情報表示画面

機能

OS情報表示には以下の機能があります。

  • ノードのリソース情報表示(◆Resource Information)
    • ノードから取得した以下の情報を表示します。
      • CPU使用率
      • メモリ、スワップメモリの容量、使用率
      • データディレクトリおよびバックアップディレクトリの容量、ディスク使用率
  • OS性能情報表示(◆OS Performance)
    • Startボタンを押すと、cycleで指定した秒数ごとにノードから性能情報を取得し、2つのグラフを描画します。
      • CPU使用率
      • ネットワーク転送量

【メモ】

  • gs_admin.propertiesに ospassword を設定していない場合、本機能は利用できません。
  • gs_admin実行環境からノード実行環境へOSユーザ「gsadm」でSSH接続するための設定が必要となります。SSH接続の手順の詳細に関しては、各OSのマニュアルを参照ください。

3.4.5 クラスタ操作画面

この機能はgs_admin管理者のみ利用可能です。

概要

ノードの起動、終了を含む、クラスタ操作を行うことができます。

利用方法

ツリーの種類操作対象タブ名
クラスタツリークラスタConfiguration

画面

クラスタ操作画面

クラスタ操作画面

機能

クラスタ操作画面には以下の機能があります。

  • ノードの一覧表示
    • ノードリポジトリから取得した以下のノードを表示します。
      • 実際にクラスタを構成しているノード(表の一番上に表示)
      • クラスタを構成していないが管理対象クラスタに属するノード
      • クラスタに属さないノード
  • ノードの情報表示
    • 各ノードの以下の情報を表示します。
      • クラスタ登録状態(チェックボックス)
      • クラスタにおける役割(Role)
      • IPアドレスおよびポート、SSHポート
      • ノードステータス
    • クラスタ登録状態は、そのノードが管理対象クラスタに登録されているかどうかを示します。
    • 役割は、マスタノード(M)、フォロワノード(F)、役割無し(-)の3種類です。
    • ノードステータスは、実際にクラスタを構成しているノード、クラスタを構成していないが管理対象クラスタに属するノードのみ取得します。
  • クラスタへの登録、クラスタからの削除
    • ※本機能ではノードリポジトリの内容が編集されます。
    • クラスタ登録状態のチェックボックスをクリックすることで、クラスタへ登録したり、クラスタから削除したりすることができます。
    • 本画面では、クラスタに登録されているノードのみ操作を行えます。
    • クラスタが稼働中の場合、チェックボックスは操作できません。
  • クラスタ単位の操作
    • クラスタの起動 (Start Cluster)
      • クラスタに登録されているすべてのノードでクラスタを構成します。
      • すべてのノードのノードステータスがSTARTEDのときのみ実行可能です。
    • クラスタの停止 (Stop Cluster)
      • 稼働しているクラスタを停止します。
      • クラスタが稼働しているときのみ実行可能です。
  • ノード単位の操作
    • 各ノードのOperations欄に実行できる操作のボタンが表示されます。
    • ノードの起動 (Start)
      • 停止状態(STOPPED)のノードを起動します。
    • クラスタへの参加 (Join)
      • Leaveや障害などによってクラスタから一旦離脱したノードをクラスタに再参加させます。
    • クラスタからの離脱 (Leave)
      • 稼働中のクラスタから離脱させます。
    • クラスタへの増設 (Append)
      • 稼働中のクラスタへ増設します。
    • ノードの停止 (Stop)
      • 起動中のノードを停止します。
      • クラスタ稼働中は実行できません。クラスタから離脱させた後に停止させてください。

【メモ】

  • ノードの起動(Start)を行うためには、gs_admin実行環境からノード実行環境へOSユーザ「gsadm」でSSH接続するための設定が必要となります。SSH接続の手順の詳細に関しては、各OSのマニュアルを参照ください。

3.4.6 システム情報画面

概要

ノードのシステム情報が表示されます。

利用方法

ツリーの種類操作対象タブ名
クラスタツリーノードSystem

画面

システム情報画面

システム情報画面

機能

システム情報画面には以下の機能があります。

  • ノードの情報表示 (◆Configuration Information)
    • ノードから取得した以下の情報を表示します。
      • ノードのバージョン、IPアドレスおよびポート、ノード状態
  • チェックポイント、バックアップ情報表示(◆ CheckPoint/Backup Information)
    • チェックポイントの実行回数、バックアップの実行回数などを表示します。

3.4.7 コンテナ一覧画面

概要

ノードが格納しているコンテナの一覧が表示されます。

利用方法

ツリーの種類操作対象タブ名
クラスタツリーノードContainer

画面

コンテナ一覧画面

コンテナ一覧画面

機能

コンテナ一覧画面には以下の機能があります。

  • コンテナ一覧表示 (◆Own Containers Information)
    • ノードが格納しているコンテナの一覧を表示します。
      • データベース名、コンテナ名、パーティションIDを表示します。
  • コンテナ詳細画面への移動

【メモ】

  • コンテナ詳細画面へ移動する際には、コンテナツリーの初期化が必要です。コンテナ詳細情報の表示ができない場合、 TreeのContainerTreeタブを1度クリックして、コンテナツリーを初期化してください。

3.4.8 性能情報画面

概要

ノードの性能情報がグラフで表示されます。

利用方法

ツリーの種類操作対象タブ名
クラスタツリーノードPerformance

画面

性能情報画面

性能情報画面

機能

性能情報画面には以下の機能があります。

  • グラフ描画 (◆Performance Capture)
    • Startボタンを押すと、cycleで指定した秒数ごとにノードから性能情報を取得し、3つのグラフを描画します。
    • Stopボタンで停止することができます。
  • Memory/Storage Information
    • メモリに保持されているデータ量やディスクに永続化された量を表示します。
    • 単位はMBです。
  • Read/Write Count Information
    • メモリやディスクの読み込み、書き込み回数をcycleで指定した時間の差分値で表示します。
  • Misc Count Information
    • 現在のコネクション、セッション、トランザクション、ロック競合発生の数を表示します。

3.4.9 スナップショット画面

概要

採取した性能値を表に表示します。以前に採取した値と比較することができます。

利用方法

ツリーの種類操作対象タブ名
クラスタツリーノードSnapshot

画面

スナップショット画面

スナップショット画面

機能

スナップショット画面には以下の機能があります。

  • 性能情報の採取
    • Captureボタンを押すと、ノードの現在の性能情報が採取されます。
  • 差分表示
    • 複数回Captureボタンを押すことで、前回(Start)と現在(End)との差分(Diff)と、
  • Baselineの保存、表示
    • Baselineボタンを押すと、表示されている1秒間当たりの差分値をBaselineとして保存できます。
    • 保存したデータはセレクトボックスから選択できます。セレクトボックスに表示されるのは最新の10件のみです。
    • Baselineは、Startで表示される時刻名でadminHomeのcaptureディレクトリに保存されます。

3.4.10 ログ画面

概要

ノードのイベントログの表示や、イベントログの出力レベルの設定ができます。

利用方法

ツリーの種類操作対象タブ名
クラスタツリーノードLog

画面

ログ画面

ログ画面

機能

ログ画面には以下の機能があります。

  • イベントログ表示 (◆Log Information)
    • ノードの最新イベントログを30件表示します。
    • Reloadボタンで再取得できます。
  • イベントログの出力レベル表示、設定 (◆Current Capture Level)
    • カテゴリごとの現在のイベントログ出力レベルを確認できます。
    • ログ出力レベルはERROR、WARNING、INFO、DEBUGです。
    • ノードの再起動により、変更したログレベルは初期化されます。

【注意点】

  • ログ出力レベルの変更は、必ずサポート窓口の指示に従ってください。

3.5 コンテナツリーに関する機能

3.5.1 コンテナツリー

概要

コンテナツリーでは、管理対象クラスタ上に存在するデータベースやコンテナをツリー形式で表示します。

ツリーの一番上には、管理対象クラスタが表示されます(()内はクラスタの総データベース数)。

コンテナツリー

コンテナツリー

コンテナツリーに表示されるアイコンの説明は以下のとおりです。

アイコン説明
img/gs_admin-icon01.pngクラスタ
img/gs_admin-icon11.pngデータベース
img/gs_admin-icon12.pngデータベース(存在しない)
img/gs_admin-icon07.pngコンテナ(コレクション)
img/gs_admin-icon08.pngコンテナ(時系列コンテナ)
img/gs_admin-icon13.pngパーティションテーブル(コンテナ)
img/gs_admin-icon09.png検索フォルダ
img/gs_admin-icon14.png一時ワークフォルダ
img/gs_admin-icon10.pngメッセージ

機能

コンテナツリーには以下の機能があります。

  • クラスタを操作する機能の表示
    • クラスタを選択すると、Viewにはデータベース作成などの機能を表示します。
  • データベースの自動検出
    • クラスタ上に存在するすべてのデータベースを自動検出し、クラスタの下に表示します。
    • 表示しているデータベースがクラスタ上に存在しなくなった場合、表示から削除できます。
  • 操作対象データベースの選択
    • データベースを選択すると、Viewにはコンテナ作成などの機能を表示します。
  • コンテナの検索
    • 各データベース上のコンテナをキーワードで検索できます。半角スペースで区切ることで、検索条件を追加できます。
    • 検索は、データベースまたは検索フォルダを選択して、上部の検索バーにキーワードを入力し、検索ボタンをクリックするか、Enterキーを押すことで行います。
    • 検索時に検索フォルダが作成されます。()内はヒットしたコンテナ数を示します。
    • 検索フォルダは階層化して検索結果を絞り込むことができます。
    • 検索フォルダはコンテキストメニューまたはDeleteキーで削除することができます。検索フォルダを削除しても、フォルダ内に表示されているクラスタ上のコンテナは削除されません。
  • コンテナの削除
    • コンテキストメニュー、またはDeleteキーでコンテナをクラスタから削除できます。削除する前に確認ダイアログを表示します。
  • 操作対象コンテナの選択
    • コンテナの種類によってアイコンが変わります。
    • コンテナを選択すると、Viewには詳細情報などを表示します。
  • 一時ワークフォルダ
    • コンテナ作成画面でコンテナを作成した時や、コンテナ情報画面からコンテナ名をクリックしたときにデータベースの下に作成されます。
    • コンテキストメニューまたはDeleteキーで削除することができます。一時ワークフォルダを削除しても、フォルダ内に表示されているクラスタ上のコンテナは削除されません。
  • ツリー構造の保存
    • 検索後のツリー構造は保存され、次回ログイン時に読込まれます。(クラスタ、ユーザごとにファイルが異なります)
    • 保存対象は、クラスタ、データベース、検索フォルダです。検索結果やコンテナ、一時ワークフォルダは保存されません。
    • Tomcat動作マシンの /var/lib/gridstore/admin/tree/foldertree-クラスタ名-ユーザ名.json に保存されます。

ログイン後にはClusterTreeタブとノード一覧が自動的に表示されます。ContainerTreeタブに切替えると、コンテナツリーのツリー構造が保存されている場合、ツリー構造が自動的に追加されます。ただし、検索フォルダの再検索は自動では行われません。

コンテナツリーでは以下の操作は行えません。

  • データベースを横断するコンテナ検索
    • データベースを横断してクラスタ上のコンテナを検索することはできません。
  • データベースの作成、削除
  • コンテナの作成
  • パーティションテーブル(コンテナ)の削除
    • SQL画面からSQL文で行ってください。

コンテキストメニュー

ツリー内の要素を右クリックすると要素に応じたコンテキストメニューが表示されます。メニューから項目を選択することで、情報更新や要素に対する操作ができます。

それぞれの選択要素に対するメニューと機能は以下のとおりです。

選択要素メニュー機能
クラスタrefreshTreeのツリー構造再読込、データベース自動検出
データベースrefreshデータベース存在確認、コンテナの再検索
コンテナrefreshViewにコンテナの最新情報を表示
dropコンテナの削除(確認ダイアログあり)
検索フォルダrefreshコンテナの再検索
removeフォルダの削除
一時ワークフォルダremoveフォルダの削除

【メモ】

  • コンテナツリーの各機能は、クラスタが稼働中のときのみ利用できます。

操作対象とViewのタブ

ツリー内の要素を左クリックすると、要素に応じた機能がViewに表示されます。機能はViewの上部のタブで切り替えます。

選択要素タブ画面の名前機能概要
クラスタDatabaseデータベース管理画面データベースの作成、削除、権限操作ができます。
Userユーザ管理画面一般ユーザの作成、削除、パスワード変更ができます。
SQLSQL画面データベースに対してSQLを実行し、その結果を表示できます。
データベースCreateコンテナ作成画面データベースにコンテナを作成できます。
SQLSQL画面データベースに対してSQLを実行し、その結果を表示できます。
コンテナDetailsコンテナ詳細画面コンテナのカラムや索引の設定情報が表示されます。
Index索引設定画面コンテナのカラムごとの索引の作成、削除ができます。
Triggerトリガ設定画面コンテナのトリガ作成、編集、削除ができます。
TQLTQL画面コンテナに対してTQL(問合せ言語)を実行し、その結果を表示します。
パーティションDetailsコンテナ詳細画面コンテナのカラムや索引の設定情報が表示されます。
テーブル(コンテナ)

3.5.2 データベース管理画面

概要

データベースの作成、削除、権限操作ができます。

利用方法

ツリーの種類操作対象タブ名
コンテナツリークラスタDatabase

画面

データベース管理画面

データベース管理画面

機能

データベース管理画面には以下の機能があります。

  • データベースの作成 (◆Create Database)
    • データベース名を入力し、Createボタンを押すと、クラスタにデータベースを作成できます。
  • データベースの一覧表示 (◆Database List)
    • クラスタ上に存在するデータベースの一覧を表示します。
      • データベース名、アクセス権(Privilege)、データベースへの操作(Operations)を表示します。
    • アクセス権(Privilege)の欄には、そのデータベースにアクセス権を持つ一般ユーザを表示します。
    • publicデータベースは操作することができません。
  • データベースの削除 (Drop)
    • データベースをクラスタから削除します。
    • データベース上にコンテナが存在する場合はエラーとなります。
  • アクセス権の付与 (Grant)
    • 一般ユーザに対して、データベースのアクセス権を付与します。
    • Grantを押すとユーザ選択ダイアログが表示されます。クラスタ上に存在する一般ユーザがセレクトボックスから選択できます。
    • データベースに対してアクセス権を持てる一般ユーザは1人のみです。(Ver.2.7現在)
    • 1人のユーザは複数のデータベースにアクセス権を持つことができます。
  • アクセス権の剥奪 (Revoke)
    • 一般ユーザから、データベースのアクセス権を剥奪します。
    • ユーザ管理画面で一般ユーザが削除されると、自動的にそのユーザのアクセス権がすべて剥奪されます。

3.5.3 ユーザ管理画面

概要

一般ユーザの作成、削除、パスワード変更ができます。

利用方法

ツリーの種類操作対象タブ名
コンテナツリークラスタUser

画面

ユーザ管理画面

ユーザ管理画面

機能

  • ユーザの作成 (◆Create User)
    • ユーザ名とパスワードを入力し、Createボタンを押すと、クラスタに一般ユーザを作成できます。
  • ユーザの一覧表示 (◆User List)
    • クラスタ上に存在する一般ユーザの一覧を表示します。
      • ユーザ名、ユーザへの操作(Operations)を表示します。
  • ユーザの削除 (Drop)
    • 一般ユーザをクラスタから削除します。
    • データベースにアクセス権を持っていた場合、自動的にすべてのアクセス権が剥奪されます。
  • パスワードの変更 (Change Password)
    • ユーザのパスワードを変更できます。元のパスワードを入力する必要はありません。
    • Change Passwordを押すと新しいパスワードの入力ダイアログが表示されます。新しいパスワードを入力し、Changeを押すと、パスワードが変更されます。

3.5.4 SQL画面

この機能はGridDB Advanced Edition / Vector Editionでのみ利用可能です。

概要

データベースに対してSQLを実行し、その結果を表示できます。

利用方法

ツリーの種類操作対象タブ名
コンテナツリークラスタSQL
コンテナツリーデータベースSQL

画面

SQL画面

SQL画面

機能

SQL画面には以下の機能があります。

  • 実行対象のデータベースの選択 (◆Database)
    • クラスタ上に存在するデータベースをセレクトボックスで選択できます。
    • コンテナツリーでデータベースを選択した場合は、選択したデータベースで固定されます。
  • SQL実行 (◆SQL)
    • SQL文を入力し、Executeボタンを押すと実行されます。結果は◆Resultに表示されます。
      • 改行して入力できますが、実行できるSQL文は1文のみです。
      • Clearボタンで入力を削除できます。
    • Display Limitで表示する行数の制限を行います。
    • 使用できるSQL構文については、『GridDB Advanced Edition SQLリファレンス』(GridDB_AE_SQL_Reference.pdf)を参照ください。
  • リザルト表示 (◆Result)
    • SELECT文を実行した場合は、ヒット件数と、実行時間(ミリ秒)、ヒットしたロウ(表形式)を表示します。
      • 実行時間はSQL文の実行時間がミリ秒で表示されます。
      • NULL値や配列型のカラム値は(NULL)と表示されます。BLOB型のカラム値は(BLOB)と表示されます。
    • INSERT/DELETE/UPDATE文であれば実行対象のロウ数、その他のDCL文やDDL文の場合はSUCCESSをそれぞれ結果として表示します。

【メモ】

  • 本画面を利用する場合は、ノードリポジトリのクラスタ情報にJDBCアドレスおよびポートを追加する必要があります。

3.5.5 コンテナ作成画面

概要

データベースにコンテナを作成できます。

利用方法

ツリーの種類操作対象タブ名
コンテナツリーデータベースCreate

画面

コンテナ作成画面(コレクション)

コンテナ作成画面(コレクション)

コンテナ作成画面(時系列コンテナ)

コンテナ作成画面(時系列コンテナ)

機能

コンテナ作成画面には以下の機能があります。

  • コンテナの作成
    • コンテナ名、コンテナタイプを指定し、コンテナタイプに応じたパラメータを指定してCreateボタンを押すことでデータベースにコンテナを作成できます。
  • コンテナタイプの選択
    • コンテナタイプをコレクション(Collection)と時系列コンテナ(TimeSeries)から選択できます。
    • コンテナタイプによって、設定できるパラメータやカラムの内容が変わります。
  • カラムの設定
    • コンテナを作成する際のカラムを設定できます。
    • Add Columnボタンでカラムを追加でき、カラム右端のDelボタンでカラムを削除できます。
    • Resetボタンでコンテナタイプ以外の設定が初期状態に戻ります。
    • コンテナタイプにコレクションを選択した際にRow Key Assignedをtrueに設定すると、1行目のカラムがロウキーに設定されます。
      • ロウキーを設定すると1行目のカラムのデータ型は使用可能な型に制限されます。また、NOT NULL制約が付加されます。
    • コンテナタイプに時系列コンテナを選択した場合、1行目のカラムのデータ型はTIMESTAMPで固定され、索引の設定は行えなくなります。また、NOT NULL制約が付加されます。
  • コンテナツリーへの追加
    • コンテナの作成に成功すると、コンテナツリーのデータベースの下に一時ワークフォルダが作成され、その下に作成したコンテナが自動的に追加されます。

【メモ】

3.5.6 コンテナ詳細画面

概要

コンテナのカラムや索引の設定情報が表示されます。

利用方法

ツリーの種類操作対象タブ名
コンテナツリーContainerDetails

画面

コンテナ詳細画面

コンテナ詳細画面

機能

コンテナ詳細画面には以下の機能があります。

  • コンテナのパラメータ表示
    • コンテナ名やコンテナタイプなど、コンテナのパラメータを表示します。
  • コンテナのカラム情報表示
    • コンテナのカラム情報として以下の情報を表示します。
      • カラム名、データ型、カラム制約、索引、圧縮情報(時系列コンテナのみ)

3.5.7 索引設定画面

概要

コンテナのカラムごとの索引の作成、削除ができます。

利用方法

ツリーの種類操作対象タブ名
コンテナツリーContainerIndex

画面

索引設定画面

索引設定画面

機能

索引設定画面には以下の機能があります。

  • カラムへの索引設定 (◆Build/Rebuild Index)
    • チェックボックスを選択/選択解除し、Applyボタンを押すことで対象の索引を作成/削除できます。
    • テキストボックスで索引名を設定することができます。
    • Resetボタンを押すと、変更した内容が初期状態に戻ります。

【メモ】

  • 索引名を変更して設定した場合、索引は再作成されます。

3.5.8 トリガ設定画面

概要

コンテナのトリガ作成、編集、削除ができます。

利用方法

ツリーの種類操作対象タブ名
コンテナツリーContainerTrigger

画面

トリガ設定画面

トリガ設定画面

機能

トリガ設定画面には以下の機能があります。

  • トリガの作成 (◆Create Trigger)
    • Newを押すと新規トリガの設定入力部が表示されます。設定後にApplyボタンを押すことで、コンテナにトリガを作成できます。
    • 設定入力部でClearボタンを押すと、設定が初期状態に戻ります。
    • トリガ名(Name)、監視対象操作(Action)、通知先URI(Destination URI)は必須項目です。通知方法(Type)をJMSに設定した場合は、JMS設定の通知名(Destination Name)が必須となります。
    • 通知方法(Type)にはRESTとJMSがあります。通知方法によって、設定項目が変わります。
    • 監視対象操作(Action)はPUT、DELETEをチェックボックスで設定します。
    • 監視対象カラム(Notify Column members)はチェックボックスで設定します。
  • トリガの編集 (◆Edit Trigger)
    • 作成済みのトリガが表示され、トリガ名を押すとトリガの編集部が表示されます。
    • 編集できるのは通知先URI(Destination URI)と、JMS設定のみです。
    • Applyボタンを押すと編集内容が保存されます。
    • Deleteボタンを押すとトリガを削除できます。
    • Clearボタンを押すと編集できる項目の内容が空になります。

【メモ】

3.5.9 TQL画面

概要

コンテナに対してTQL(問合せ言語)を実行し、その結果を表示します。

利用方法

ツリーの種類操作対象タブ名
コンテナツリーContainerTQL

画面

TQL画面

TQL画面

機能

TQL画面には以下の機能があります。

  • TQL実行 (◆TQL)
    • TQL文を入力し、Executeボタンを押すと実行されます。結果は◆Resultに表示されます。
    • 改行して入力できますが、実行できるTQL文は1文のみです。
    • 操作対象のコンテナに対して実行するため、from句は省略できます。
    • Clearボタンで入力を削除できます。
    • Display Limitで表示する行数の制限を行います。
  • リザルト表示 (◆Result)
    • ヒット件数と、実行時間(ミリ秒)、ヒットしたロウ(表形式)を表示します。
      • 実行時間はTQL文の実行時間がミリ秒で表示されます。
      • NULL値は(NULL)と表示されます。BLOB型のカラム値は(BLOB)と表示されます。

【メモ】

3.6 gs_adminの活用方法

各機能を利用したgs_adminの活用方法を紹介します。

3.6.1 稼働中のクラスタの管理を始める

既に稼働中のクラスタをgs_adminで管理するには、リポジトリ管理機能を活用します。以下の手順を実施します。

  1. ログイン画面でrepository managerを選択し、gs_adminの管理ユーザでログインします。
  2. Syncボタンを押し、稼働中のクラスタのいずれかのノードの下記の情報を入力してSyncを押して同期を行います。
  3. 稼働中のクラスタの情報がクラスタ一覧とノード一覧に反映されます。
  4. Saveボタンを押してリポジトリ情報を保存します。
  5. Logoutボタンを押してログイン画面に戻ります。
  6. ログイン画面のclusterから稼働中のクラスタ名を選択します。
  7. gs_adminの管理ユーザまたは利用ユーザでログインして運用機能の利用を開始します。

3.6.2 複数クラスタの管理を行う

1つのgs_adminで複数クラスタの管理を行う場合には、gs_admin利用ユーザの設定に注意が必要です。

gs_admin利用ユーザは単一のファイルで管理を行うため、例えば、複数のクラスタで別々のパスワードを使っている管理ユーザを、すべてのクラスタを管理するgs_admin利用ユーザとして指定することはできません。

そのため、管理の方法によって適切な設定を行う必要があります。

  • 複数クラスタをそれぞれ別の利用者が管理する場合
    • それぞれのgs_admin利用ユーザを異なる名前としてください。
  • 複数クラスタを1人の利用者が管理する場合
    • 管理したいすべてのクラスタで、同じパスワードのgs_admin利用ユーザを登録してください。

以下では、新たにgs_admin利用ユーザを登録する手順を示します。

  1. 新しいユーザで管理したいクラスタのうち1つのノードで、gs_adduserコマンドを使用し、管理ユーザを追加します。

    例:新規ユーザ名/パスワードがgs#newuser/newuserの場合

    $ su - gsadm
    $ gs_adduser gs#newuser -p newuser
    $ cat /var/lib/gridstore/conf/password
    admin,8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
    gs#newuser,9c9064c59f1ffa2e174ee754d2979be80dd30db552ec03e7e327e9b1a4bd594e
    system,6ee4a469cd4e91053847f5d3fcb61dbcc91e8f0ef10be7748da4c4a1ba382d17
    
  2. そのユーザで管理したいクラスタの他のすべてのノードに、上記のユーザ定義ファイルを配布します。
  3. すべてのノードを再起動、クラスタを再構成します。
  4. Tomcat実行ユーザで、上記で追加したユーザ名およびパスワードを、gs_adminのユーザ定義ファイルに追加します。

    例:新規ユーザ名/パスワードがgs#newuser/newuserの場合

    $ echo gs#newuser,9c9064c59f1ffa2e174ee754d2979be80dd30db552ec03e7e327e9b1a4bd594e >> /var/lib/gridstore/admin/conf/password
    

3.7 エラー情報の採取

(1) ログ出力

gs_adminのエラー情報等のログは、adminHomeのlogディレクトリに出力されます。

ログの出力レベルは、Tomcatホーム(デフォルトでは、 /usr/local/tomcat )下の /webapps/gs_admin/WEB-INF/classes/logback.xml で設定できます。

デフォルトでの出力レベルはinfoです。

gs_adminでの問題発生、サポート窓口の依頼等で情報採取時に利用します。  

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
        <property resource="conf/gs_adminPath.properties" />

        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${adminHome}/log/gs_admin-%d{yyyyMMdd}.log</fileNamePattern>
                        <maxHistory>10</maxHistory>
                </rollingPolicy>

                <encoder>
                        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread] %logger [%file::%line] %msg%n</pattern>
                </encoder>
        </appender>

        <root level="info">
                <appender-ref ref="FILE" />
        </root>
</configuration>

(2) 性能情報採取

gs_adminのトラブルシューティングの際に性能情報を採取するパラメータがgs_admin.propertiesにあります。

本パラメータ(logging.performance)をtrueに設定することで、adminHome/log下に出力される情報に性能情報が追加されます。デフォルトはfalseです。

3.8 エラー一覧

エラー種別エラー番号メッセージ対処方法
Internal Server ErrorE00104Cluster is not servicing.管理対象クラスタが稼働していません。Configurationタブや他の運用ツールを用いてクラスタを稼働させて、クラスタツリーのクラスタのRefreshまたは再ログインを行ってください。
Internal Server ErrorE00105D10135: Failed to check a node status.リポジトリに登録されているノードに、Ver.1.5以下のノードが登録されている可能性があります。各ノードのバージョンを確認してください。
Internal Server ErrorFailed to create <ファイルパス>.ファイルの作成に失敗しました。表示されているパス上に存在しないディレクトリや、Tomcatユーザのアクセス権限が与えられていないディレクトリが無いかをご確認ください。
Internal Server ErrorE0030C[Code:******] <エラーメッセージ>GridDBノードのエラーメッセージです。
『GridDB エラーコード一覧』を参照し、該当コードの対策をご確認ください。
Bad RequestE00300Container "コンテナ名" already exists.コンテナ名が重複しています。別のコンテナ名を指定してコンテナを作成してください。
Bad RequestE00303Container "コンテナ名" not found.指定したコンテナが存在しません。ContainerTreeのクラスタを右クリックしてrefreshを選択し、コンテナを再検索してください。
Bad Request[Code:******] <エラーメッセージ>GridDBノードのエラーメッセージです。
『GridDB エラーコード一覧』を参照し、該当コードの対策をご確認ください。
Input Error<フィールド名> is required.必須入力欄が入力されていません。<フィールド名>の入力欄に値を入力してください。
Input Error<フィールド名> is invalid.<フィールド名>の入力欄に無効な値が入力されています。運用管理ガイドに従い、適切な値を入力してください。

4 クラスタ運用管理コマンド・インタプリタ(gs_sh)

4.1 概要

クラスタ運用管理コマンド・インタプリタ(以降gs_shと記載します)は、GridDBクラスタの運用管理、およびデータ操作を提供するコマンドラインインタフェースツールです。

gs_shにより次のことができます。

  • GridDBクラスタの運用管理
    • GridDBクラスタの定義
    • GridDBノードおよびクラスタの起動、停止
    • ステータス、ログ表示
  • GridDBクラスタのデータ操作
    • データベース・ユーザ管理
    • コレクション、トリガ表示
    • 索引設定、削除
    • tql/sqlによる検索

【メモ】

  • GridDB運用コマンドで提供中の機能は、すべてgs_shのサブコマンドとして提供する計画です。運用コマンドは今後のリリースでは削除される可能性がありますので、可能な限りgs_shの利用を推奨します。運用コマンドの詳細は、「運用コマンド」の章を参照ください。

4.2 gs_shを利用するには

4.2.1 事前準備

gs_shを利用するには、あらかじめ以下を実施ください。

  • GridDBのセットアップ
    • GridDBノード、クライアントライブラリのインストール
    • ユーザ作成
    • ネットワーク設定(GridDBクラスタ定義ファイル、ノード定義ファイル)

     ※ 手順の詳細に関しては、『GridDB クイックスタートガイド』(GridDB_QuickStartGuide.html)の「システム設計・構築」の章を参照ください。

  • SSHによるリモート接続設定
    • gs_sh実行環境から各GridDBノード実行環境へ、OSユーザ「gsadm」でSSH接続するための設定

     ※ SSH接続の手順の詳細に関しては、各OSのマニュアルを参照ください。

4.2.2 gs_sh起動

gs_shには2種類の起動モードがあります。

  • 対話モードで起動
    • gs_shを引数なしで実行すると、対話モードで起動されます。gs_shのプロンプトが表示され、サブコマンドの入力が可能になります。
    • 例)
    $ gs_sh
    //サブコマンド「version」の実行
    gs> version
    gs_sh version 2.0.0
    

    【メモ】

    • 対話モードでサブコマンドを起動すると、
      • 実行ユーザのホームディレクトリに.gssh_historyファイルが作成され、履歴が保存されます。
      • 矢印キーを押すと以前起動したサブコマンドを20個まで、表示/実行することができます。
      • サブコマンドの一部を入力しTabキーを押すと、サブコマンドの入力候補が一覧表示されます。
  • バッチモードで起動
    • gs_shにユーザ作成のスクリプトファイルを指定すると、バッチモードで起動されます。スクリプトファイルに記述した一連のサブコマンドをバッチ処理します。バッチ処理実行後に、gs_shは終了します。
    • 例)
    //スクリプトファイル(test.gsh)を指定して実行
    $ gs_sh test.gsh
    

【メモ】

  • gs_shは、OSユーザ「gsadm」で実行してください。
  • gs_sh起動時に、gsadmユーザホームディレクトリ下の.gsshrcスクリプトファイルを自動的に読み込みます。.gsshrcの内容は、他のスクリプトファイルよりも先に読み込みます。
  • スクリプトファイルの拡張子はgshです。
  • スクリプトファイルは、文字コードUTF-8で記載します。

4.3 GridDBクラスタの定義

GridDBクラスタの運用管理やデータ操作を実行するにあたり、事前に以下の定義が必要です。

  • 各ノード情報を ノード変数に定義
  • ノード変数を利用して、GridDBクラスタ構成を クラスタ変数に定義
  • GridDBクラスタの ユーザ情報を定義

ノード変数、クラスタ変数、ユーザ情報の定義方法について、以下に説明します。また、任意の変数定義、変数定義内容の表示、変数定義内容のスクリプトファイルへの保存および読み込み方法についても説明します。

4.3.1 ノード変数の定義

GridDBノードのIPアドレスとポート番号を、ノード変数に定義します。

  • サブコマンド
    setnodeノード変数名 IPアドレス ポート番号 [SSHポート番号]
  • 各引数の説明
    引数説明
    ノード変数名ノード変数名を指定します。既に同じ変数名が存在する場合は、定義を上書きします。
    IPアドレスGridDBノードのIPアドレス(運用管理ツール接続用)を指定します。
    ポート番号GridDBノードのポート番号(運用管理ツール接続用)を指定します。
    SSHポート番号SSHのポート番号を指定します。省略する場合は22番を使用します。
  • 例)
    //4つのGridDBノードを定義
    gs> setnode node0 192.168.0.1 10000
    gs> setnode node1 192.168.0.2 10000
    gs> setnode node2 192.168.0.3 10000
    gs> setnode node3 192.168.0.4 10000
    

【メモ】

  • ノード変数名に利用できるのは半角英数字と記号"_"のみです。
  • 運用管理ツール接続用GridDBノード「IPアドレス」および「ポート番号」は、各ノードの ノード定義ファイル で確認ください。
    • 「IPアドレス」: /system/serviceAddress
    • 「ポート番号」: /system/servicePort

 

4.3.2 クラスタ変数の定義

GridDBクラスタの構成を、クラスタ変数に定義します。

  • サブコマンド
    setcluster<クラスタ変数名> <クラスタ名> <マルチキャストアドレス> <ポート番号> [<ノード変数>...]
    setcluster<クラスタ変数名> <クラスタ名> FIXED_LIST <固定リスト方式のアドレスリスト> [<ノード変数>...]
    setcluster<クラスタ変数名> <クラスタ名> PROVIDER <プロバイダ方式のURL> [<ノード変数>...]
  • 各引数の説明
    引数説明
    クラスタ変数名クラスタ変数名を指定します。既に同じ変数名が存在する場合は、定義を上書きします。
    クラスタ名クラスタ名を指定します。
    マルチキャストアドレス[マルチキャスト方式の場合] GridDBクラスタのマルチキャストアドレス(クライアント接続用)を指定します。
    ポート番号[マルチキャスト方式の場合]GridDBクラスタのマルチキャストポート番号(クライアント接続用)を指定します。
    ノード変数...GridDBクラスタを構成するノードをノード変数で指定します。
    データ操作サブコマンドでクラスタ変数を利用する場合、ノード変数の指定は省略可能です。
    固定リスト方式のアドレスリスト[固定リスト方式の場合] gs_cluster.jsonのcluster.notificationMemberのtransactionのアドレスとポートのリストを指定します。例) 192.168.15.10:10001,192.168.15.11:10001
    プロバイダ方式のURL[プロバイダ方式の場合] gs_cluster.jsonのcluster.notificationProviderの値を指定します。
  • 例)
    //GridDBクラスタ構成を定義
    gs> setcluster cluster0 name 200.0.0.1 1000 $node0 $node1 $node2
    

【メモ】

  • クラスタ変数名に利用できるのは半角英数字と記号"_"のみです。
  • ノード変数を利用する際には、変数名の先頭に"$"をつけます。
  • クラスタ変数に定義する「クラスタ名」、「マルチキャストアドレス」、「ポート番号」は、各GridDBノードのクラスタ定義ファイルで確認ください。
    • 「クラスタ名」 :  /clustergs/clusterName
    • 「マルチキャストアドレス」:  /transaction/notificationAddress
    • 「ポート番号」 :  /transaction/notificationPort

    ※GridDBクラスタを構成するノードのクラスタ定義ファイルは、すべて同一の設定内容である必要があります。設定内容が異なる場合、クラスタを構成することはできません。

 

また、定義したクラスタ変数に対して、ノード変数の追加、削除を行うことができます。

  • サブコマンド
    modclusterクラスタ変数名 add|remove ノード変数名...
  • 各引数の説明
    引数説明
    クラスタ変数名ノードの追加、削除を行うクラスタ変数名を指定します。
    add|removeノード変数を追加する場合にはadd、ノード変数を削除する場合にはremoveを指定します。
    ノード変数...クラスタ変数に追加、もしくは削除するノード変数を指定します。
  • 例)
    //定義済みのGridDBクラスタ構成にノードを追加
    gs> modcluster cluster0 add $node3
    //定義済みのGridDBクラスタ構成からノードを削除
    gs> modcluster cluster0 remove $node3
    

【メモ】

  • ノード変数を利用する際には、変数名の先頭に"$"をつけます。

 

4.3.3 クラスタのSQL接続先を定義

GridDBクラスタ構成にSQLの接続先を定義します。 GridDB NewSQLインターフェースを使用する場合のみ設定します。

  • サブコマンド
    setclustersql<クラスタ変数名> <クラスタ名> <SQLアドレス> <SQLポート番号>
    setclustersql<クラスタ変数名> <クラスタ名> FIXED_LIST <固定リスト方式のSQLアドレスリスト>
    setclustersql<クラスタ変数名> <クラスタ名> PROVIDER <プロバイダ方式のURL>
  • 各引数の説明
    引数説明
    クラスタ変数名クラスタ変数名を指定します。既に同じ変数名が存在する場合は、SQL接続情報を上書きします。
    クラスタ名クラスタ名を指定します。
    SQLアドレス[マルチキャスト方式の場合] SQLクライアント接続用の受信アドレスを指定します。
    SQLポート番号[マルチキャスト方式の場合] SQLクライアント接続用のポート番号を指定します。
    固定リスト方式のSQLアドレスリスト[固定リスト方式の場合] gs_cluster.jsonのcluster.notificationMemberのsqlのアドレスとポートのリストを指定します。 例) 192.168.15.10:20001,192.168.15.11:20001
    プロバイダ方式のURL[プロバイダ方式の場合] gs_cluster.jsonのcluster.notificationProviderの値を指定します。
  • 例)
    // NewSQLサーバに対して、NoSQLインタフェースとNewSQLインタフェースの両方を用いて接続する場合の定義方法
    gs> setcluster    cluster0 name 239.0.0.1 31999 $node0 $node1 $node2
    gs> setclustersql cluster0 name 239.0.0.1 41999
    

【メモ】

  • クラスタ変数名に利用できるのは半角英数字と記号"_"のみです。
  • GridDB NewSQLインターフェースを使用する場合のみ設定します。
  • 既存のクラスタ変数名を指定するとSQL接続情報部分のみ上書きします。上書きする際は、既存の接続方式と同じ方式を指定する必要があります。
  • SQLのみ使用する場合はこのコマンドだけ実行します。
  • クラスタ変数に定義する「SQLアドレス」、「SQLポート番号」は、各GridDBノードのクラスタ定義ファイルで確認ください。
    • 「SQLアドレス」 :  /sql/notificationAddress
    • 「SQLポート番号」 :  /sql/notificationPort

4.3.4 ユーザの定義

GridDBクラスタにアクセスするユーザおよびパスワードを定義します。

  • サブコマンド
    setuserユーザ名 パスワード [gsadmパスワード]
  • 各引数の説明
    引数説明
    ユーザ名GridDBクラスタにアクセスするユーザ名を指定します。
    パスワード対応するパスワードを指定します。
    gsadm パスワードOSユーザ gsadmのパスワードを指定します。
    ノード起動(startnodeサブコマンド)を実行しない場合は、省略可能です。
  • 例)
    //GridDBクラスタにアクセスするユーザ、パスワード、およびgsadmのパスワードを定義
    gs> setuser admin admin gsadm
    

【メモ】

  • ユーザ定義は以下の変数に分割して格納します。
    変数名格納する情報
    userユーザ名
    passwordパスワード
    ospasswordgsadmパスワード
  • 複数ユーザは定義できません。後から定義したユーザ、パスワードで上書きします。gs_shで複数のGridDBクラスタを操作する場合には、接続先クラスタを変更する度にsetuserサブコマンドでユーザ、パスワードを再設定ください。

 

4.3.5 任意の変数の定義

任意の変数を定義します。

  • サブコマンド
    set変数名 [値]
  • 各引数の説明
    引数説明
    変数名変数名を指定します。
    設定値を指定します。指定を省略することで、当該変数の設定値をクリアできます。
  • 例)
    //変数を定義
    gs> set GS_PORT 10000
    //変数の設定をクリア
    gs> set GS_PORT
    

【メモ】

  • setサブコマンドにより、ノード変数やクラスタ変数の設定もクリアできます。
  • 変数名に利用できるのは半角英数字と記号"_"のみです。

 

4.3.6 変数定義の表示

指定した変数の定義内容を表示します。

  • サブコマンド
    show[変数名]
  • 各引数の説明
    引数説明
    変数名定義内容を表示する変数名を指定します。指定を省略すると、すべての定義済み変数の内容を表示します。
  • 例)
    //定義した全変数を定表示
    gs> show
    ノード変数:
      node0=Node[192.168.0.1:10000,ssh=22]
      node1=Node[192.168.0.2:10000,ssh=22]
      node2=Node[192.168.0.3:10000,ssh=22]
      node3=Node[192.168.0.4:10000,ssh=22]
    クラスタ変数:
      cluster0=Cluster[name=name,200.0.0.1:1000,nodes=(node0,node1,node2)]
    その他の変数:
      user=admin
      password=*****
      ospassword=*****
    

【メモ】

  • パスワード文字列は表示しません。"*****"に置き換えて表示します。

 

4.3.7 変数定義のスクリプトファイル保存

変数に定義した内容をスクリプトファイルに保存します。

  • サブコマンド
    save[スクリプトファイル名]
  • 各引数の説明
    引数説明
    スクリプトファイル名保存先となるスクリプトファイル名を指定します。スクリプトファイルの拡張子はgshです。
    指定を省略すると、gsadmユーザホームディレクトリの.gsshrcファイルに保存します。
  • 例)
    //定義した変数をファイルに保存
    gs> save test.gsh
    

【メモ】

  • 保存先スクリプトファイルが存在しない場合、ファイルを新規作成します。保存先スクリプトファイルが存在する場合、内容を上書きします。
  • スクリプトファイルは、文字コードUTF-8で記載します。
  • ユーザ定義に関する内容(ユーザ、パスワード、gsadmパスワード)はスクリプトファイルに出力しません。
  • .gsshrcスクリプトファイルの内容は、gs_sh起動時に自動的に読み込みます。

 

4.3.8 スクリプトファイルの実行

スクリプトファイルを読み込み実行します。

  • サブコマンド
    load[スクリプトファイル名]
  • 各引数の説明
    引数説明
    スクリプトファイル名実行するスクリプトファイルを指定します。
    指定を省略すると、gsadmユーザホームディレクトリの.gsshrcファイルを再度読み込みます。
  • 例)
    //スクリプトファイルを実行
    gs> load test.gsh
    

【メモ】

  • スクリプトファイルの拡張子はgshです。
  • スクリプトファイルは、文字コードUTF-8で記載します。

 

4.4 GridDBクラスタの運用管理操作

GridDBクラスタの運用を管理するための機能として、管理ユーザのみ、以下の操作を実行できます。

  • GridDBノードの起動、停止、クラスタへの参加、クラスタからの離脱 (startnode/stopnode/joincluster/leavecluster)
  • GridDBクラスタの稼働開始、稼働停止 (startcluster/stopcluster)
  • GridDBクラスタへ新規ノード増設 (appendcluster)
  • 各種情報取得

4.4.1 クラスタステータス

本節では、GridDBノードとGridDBクラスタのステータスについて説明します。

クラスタは、1台以上のノードから構成されます。
ノードは、起動・停止などのノード自身の状態をステータスとして持ちます。
クラスタは、クライアントからのデータ操作の受付可否の状態を表すステータスを持ちます。クラスタステータスは、クラスタを構成するノード群のステータスに応じて決まります。

以下は、gs_shのサブコマンド操作による、ノードステータスとクラスタステータスの遷移の例です。
クラスタはノード4台で構成されています。
クラスタを構成するノードを起動(startnode)すると、ノードステータスが「起動」になります。ノードを起動したうえでクラスタを開始(startcluster)すると、各ノードステータスがクラスタへの「参加」に変わり、さらに、クラスタステータスが「稼働」になります。

ステータス例

ステータス例


以下、ノードステータスとクラスタステータスについての詳細を説明します。

  • ノードステータス

ノードの起動・停止・参加・離脱の操作により、ノードのステータスが「停止」「起動」「参加」に遷移します。
ノードがクラスタに参加した場合には、参加したクラスタのステータスに応じて2種類の状態があります。

ノードステータス

ノードステータス

ステータスステータス名説明
参加SERVICINGノードはクラスタに参加済みで、参加しているクラスタのステータスが「稼働」
WAITノードはクラスタに参加済みで、参加しているクラスタのステータスが「中断」
起動STARTEDノードは起動済みで、クラスタには参加していない
STARTINGノード起動中
停止STOPノード停止
STOPPINGノード停止処理中
 
  • クラスタステータス

    GridDBクラスタの稼働開始・稼働停止、または、GridDBノードの参加・離脱の操作により、GridDBクラスタの状態が、「停止」、「中断」、「稼働」のステータスに遷移します。GridDBクラスタのステータスが「稼働」の場合のみ、クライアントからのデータ操作を受け付けることが可能です。

    クラスタステータス

    クラスタステータス

    ステータスステータス名説明
    稼働SERVICE_STABLEクラスタ構成に定義されているすべてのノードがクラスタに参加している
    SERVICE_UNSTABLEクラスタ構成に定義されているノードの半数超がクラスタに参加している
    中断WAITクラスタ構成に定義されているノードの半数以上がクラスタから離脱している
    INIT_WAITクラスタ構成に定義されているノードの1台以上がクラスタから離脱している(初めてクラスタを稼働するときは、すべてのノードがクラスタに参加しなければ「稼働」状態にならない)
    停止STOPクラスタ構成に定義されているすべてのノードがクラスタから離脱している

    GridDBクラスタを構成する全ノードをクラスタへ参加させることで、GridDBクラスタのステータスが「停止」から「稼働」へ遷移します。また、半数以上のノード離脱でGridDBクラスタは「中断」、全ノード離脱でGridDBクラスタは「停止」します。

    クラスタステータスを遷移させる参加・離脱の操作については、クラスタ構成の全ノードに対して行われる操作と、1台のノードに行われる操作の2種類があります。

    操作対象が全ノードの場合操作対象がノード1台の場合
    操作参加startcluster 未参加の稼働ノード群を一括参加joincluster 未参加の稼働ノードを参加
    離脱stopcluster 参加中のノード群を一括離脱leavecluster 参加中のノードを離脱

【メモ】

  • 稼働中のノードのみ、クラスタの参加および離脱操作を行うことができます。
  • 障害が発生したノードは、自動的にGridDBクラスタから離脱します。
  • GridDBクラスタのステータスは、クラスタステータス情報表示サブコマンド(configcluster)で確認することができます。

 

各操作方法について、以下に説明します。 

4.4.2 ノードの起動

指定ノードを起動します。

  • サブコマンド
    startnodeノード変数|クラスタ変数 [ タイムアウト秒数 ]
  • 各引数の説明
    引数説明
    ノード変数|クラスタ変数起動するノードを、ノード変数もしくはクラスタ変数で指定します。
    クラスタ変数を指定した場合、クラスタ変数に定義された全ノードを起動します。
    タイムアウト秒数ノード起動完了の待合わせ時間を指定します。
    -1を指定した場合、即時復帰します。指定がない、または0を指定した場合、時間制限無しで待ち合わせます。
  • 例)
    //ノードの起動
    gs> startnode $node1
    ノード node1 を起動します。
    すべてのノードが起動しました。
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • 変数を利用する際には、変数名の先頭に"$"をつけます。
  • 起動完了を待ち合わせることで、クラスタ起動処理(startclusterサブコマンド)をバッチ実行できます。

 

4.4.3 ノードの停止

指定ノードを停止します。

  • サブコマンド
    stopnodeノード|クラスタ変数 [ タイムアウト秒数 ]
  • 各引数の説明
    引数説明
    ノード|クラスタ変数停止するノードを、ノード変数もしくはクラスタ変数で指定します。
    クラスタ変数を指定した場合、クラスタ変数に定義された全ノードを停止します。
    タイムアウト秒数ノード停止完了の待合わせ時間を指定します。
    -1を指定した場合、即時復帰します。指定がない、または0を指定した場合、時間制限無しで待ち合わせます。
  • 例)
    //ノードの停止
    gs> stopnode $node1
    ノード node1 を停止します。
    ノード node1 が停止処理を開始しました。
    ノードの停止処理の完了を待っています。
    すべてのノードが停止しました。
    

また、指定ノードを強制停止することもできます。

  • サブコマンド
    stopnodeforceノード|クラスタ変数 [ タイムアウト秒数 ]
  • 各引数の説明
    引数説明
    ノード|クラスタ変数強制停止するノードを、ノード変数もしくはクラスタ変数で指定します。
    クラスタ変数を指定した場合、クラスタ変数に定義された全ノードを強制停止します。
    タイムアウト秒数ノード停止完了の待合わせ時間を指定します。
    -1を指定した場合、即時復帰します。指定がない、または0を指定した場合、時間制限無しで待ち合わせます。
  • 例)
    //ノードの強制停止
    gs> stopnodeforce $node1
    ノード node1 を停止します。
    ノード node1 が停止処理を開始しました。
    ノードの停止処理の完了を待っています。
    すべてのノードが停止しました。
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • 変数を利用する際には、変数名の先頭に"$"をつけます。
  • stopnodeサブコマンドでは、GridDBクラスタに参加中のノードは停止できません。stopnodeforceコマンドではGridDBクラスタに参加中のノードも停止できますが、データがロストする恐れがあります。

 

4.4.4 クラスタへノード一括参加

指定クラスタを稼働状態にするため、クラスタ未参加の稼働ノード群を一括参加させます。

  • サブコマンド
    startclusterクラスタ変数 [ タイムアウト秒数 ]
  • 各引数の説明
    引数説明
    クラスタ変数GridDBクラスタを、クラスタ変数で指定します。
    タイムアウト秒数クラスタへのノード参加の完了の待合わせ時間を指定します。
    -1を指定した場合、即時復帰します。指定がない、または0を指定した場合、時間制限無しで待ち合わせます。
  • 例)
    //GridDBクラスタの起動
    gs> startcluster $cluster1
    クラスタの開始を待っています。
    クラスタが開始しました。
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • 変数を利用する際には、変数名の先頭に"$"をつけます。
  • 「停止」状態のGridDBクラスタを「稼働」状態にするには、全ノードをクラスタに参加させる必要があります。あらかじめGridDBクラスタを構成する全ノードが稼働中であることを確認下さい。

4.4.5 クラスタからノード一括離脱

GridDBクラスタを停止するために、GridDBクラスタ参加中のノード群を一括離脱させます。

  • サブコマンド
    stopclusterクラスタ変数 [ タイムアウト秒数 ]
  • 各引数の説明
    引数説明
    クラスタ変数GridDBクラスタを、クラスタ変数で指定します。
    タイムアウト秒数クラスタの離脱完了の待合わせ時間を指定します。
    -1を指定した場合、即時復帰します。指定がない、または0を指定した場合、時間制限無しで待ち合わせます。
  • 例)
    //GridDBクラスタを停止
    gs> stopcluster $cluster1
    クラスタの停止を待っています。
    クラスタが停止しました。
    

 

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • 変数を利用する際には、変数名の先頭に"$"をつけます。

 

4.4.6 クラスタへノード参加

leaveclusterサブコマンドや障害などによってGridDBクラスタから一旦離脱したノードを、GridDBクラスタに再度参加させます。

  • サブコマンド
    joinclusterクラスタ変数 ノード変数 [ タイムアウト秒数 ]
  • 各引数の説明
    引数説明
    クラスタ変数GridDBクラスタを、クラスタ変数で指定します。
    ノード変数参加させるノードを、ノード変数で指定します。
    タイムアウト秒数クラスタへの参加完了の待合わせ時間を指定します。
    -1を指定した場合、即時復帰します。指定がない、または0を指定した場合、時間制限無しで待ち合わせます。
  • 例)
    //ノード起動
    gs> startnode $node2
    ノード node2 を起動します。
    すべてのノードが起動しました。
    //ノード参加
    joincluster $cluster1 $node2
    ノードがクラスタに参加するのを待っています。
    ノードがクラスタに参加しました。
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • 変数を利用する際には、変数名の先頭に"$"をつけます。
  • GridDBクラスタに参加できるのは、稼働中のノードのみです。参加させるノードが稼働中であることを確認ください。
  • クラスタ変数に定義していないノードを参加させる場合には、appendclusterサブコマンドを利用します。

 

4.4.7 クラスタからノード離脱

指定ノードを稼働中のGridDBクラスタから離脱させます。

  • サブコマンド
    leaveclusterノード変数 [ タイムアウト秒数 ]
    leaveclusterforceノード変数 [ タイムアウト秒数 ]
  • 各引数の説明
    引数説明
    ノード変数離脱するノードを、ノード変数で指定します。
    タイムアウト秒数クラスタからのノード離脱完了の待合わせ時間を指定します。
    -1を指定した場合、即時復帰します。指定がない、または0を指定した場合、時間制限無しで待ち合わせます。
  • 例)
    //ノードの離脱
    gs> leavecluster $node2
    ノードがクラスタから離脱するのを待っています。
    ノードがクラスタから離脱しました。
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • 変数を利用する際には、変数名の先頭に"$"をつけます。
  • GridDBクラスタから安全にノードを離脱できるのは他ノードにデータが複製されている場合ですが、leaveclusterサブコマンドは複製の有無にかかわらずノードを強制的に離脱するため、常にデータがロストする恐れがあります。安全にノードを離脱するにはgs_leaveclusterコマンドを使用ください。データ複製に関する設定の詳細は、『GridDB クイックスタートガイド』(GridDB_QuickStartGuide.html)の「システム設計・構築 - チューニングパラメータを設計する 」の節を参照ください。
  • leaveclusterforceは、離脱によってデータをロストする恐れがある場合でも、ノードを強制的に離脱させます。

4.4.8 クラスタへノード増設

クラスタ変数に定義していないノードを、稼働中のGridDBクラスタに参加させます。

  • サブコマンド
    appendclusterクラスタ変数 ノード変数 [ タイムアウト秒数 ]
  • 各引数の説明
    引数説明
    クラスタ変数GridDBクラスタを、クラスタ変数で指定します。
    ノード変数参加させるノードを、ノード変数で指定します。
    タイムアウト秒数クラスタへノード増設完了の待合わせ時間を指定します。
    -1を指定した場合、即時復帰します。指定がない、または0を指定した場合、時間制限無しで待ち合わせます。
  • 例)
    //ノードを定義
    gs> setnode node5 192.168.0.5 10044
    //ノードを起動
    gs> startnode $node5
    //ノードを増設
    gs> appendcluster $cluster1 $node5
    ノードがクラスタに追加されるのを待っています。
    ノードがクラスタに追加されました。
    クラスタ変数 $cluster1にノード変数$node5を追加します。(変数の変更を保存する場合 はsaveコマンドを実行してください。)
    
    Cluster[name=name1,239.0.5.111:33333,nodes=($node1,$node2,$node3,$node4,$node5)]
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • 変数を利用する際には、変数名の先頭に"$"をつけます。
  • 新規ノードを増設するには、GridDBクラスタを構成する全ノードがクラスタに参加している必要があります。GridDBクラスタから離脱しているノードがあれば、予めすべて参加させてください。また、増設する新規ノードは稼働中であることを確認ください。
  • appendclusterサブコマンド実行時に、増設対象のノード変数をクラスタ変数に自動追加します。クラスタ変数定義を手動で変更する必要はありません。
  • 変数を変更した場合、saveコマンドを実行して情報を保存してください。保存していない内容は破棄されます。
  • 新規ノードのセットアップに関しては、『GridDB クイックスタートガイド』(GridDB_QuickStartGuide.html)の「システム設計・構築」の章を参照ください。

4.4.9 クラスタステータス情報の表示

GridDBクラスタのステータス、クラスタを構成する各ノードのステータスを表示します。

  • サブコマンド
    configclusterクラスタ変数
  • 各引数の説明
    引数説明
    クラスタ変数GridDBクラスタを、クラスタ変数で指定します。
  • 例)
    //クラスタの情報を表示
    gs> configcluster $cluster1
    Name                  : cluster1
    ClusterName           : defaultCluster
    Designated Node Count : 4
    Active Node Count     : 4
    ClusterStatus         : SERVICE_STABLE
    
    Nodes:
      Name    Role Host:Port              Status
    -------------------------------------------------
      node1     F  10.45.237.151:10040    SERVICING 
      node2     F  10.45.237.152:10040    SERVICING 
      node3     M  10.45.237.153:10040    SERVICING 
      node4     F  10.45.237.154:10040    SERVICING
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • ClusterStatusは、以下のいずれかになります。
    • INIT_WAIT :クラスタ構成待ち
    • SERVICE_STABLE :稼働中
    • SERVICE_UNSTABLE :中断中(指定した構成ノード数に達していない)
  • Roleは、以下のいずれかになります。
    • M:MASTER(マスタ)
    • F:FOLLOWER(フォロワ)
    • S:SUB_CLUSTER(マスタになる候補で一時的な状態)
    • -:未稼働

4.4.10 構成情報の表示

GridDBクラスタの構成情報を表示します。

  • サブコマンド
    configノード変数
  • 各引数の説明
    引数説明
    ノード変数表示対象のGridDBクラスタに所属するノードを、ノード変数で指定します。
  • 例)
    //クラスタの構成情報を表示
    gs> config $node1
    {
      "follower" : [ {
        "address" : "10.45.237.151",
        "port" : 10040
      }, {
        "address" : "10.45.237.152",
        "port" : 10040
      }, {
        "address" : "10.45.237.153",
        "port" : 10040
      }, {
        "address" : "10.45.237.154",
        "port" : 10040
      } ],
      "master" : {
        "address" : "10.45.237.155",
        "port" : 10040
      },
      "multicast" : {
        "address" : "239.0.5.111",
        "port" : 33333
      },
      "self" : {
        "address" : "10.45.237.150",
        "port" : 10040,
        "status" : "ACTIVE"
      }
    }
    

 

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • 変数を利用する際には、変数名の先頭に"$"をつけます。
  • 出力内容は、GridDBノードのバージョンにより異なります。詳細については、サポート窓口にお問い合わせください。

 

4.4.11 ステータス表示

指定ノードの状態および統計情報を表示します。

  • サブコマンド
    statノード変数
  • 各引数の説明
    引数説明
    ノード変数表示対象のノードを、ノード変数で指定します。
  • 例)
    //ノードの状態、統計情報を表示
    gs> stat $node1
    {
      "checkpoint" : {
        "archiveLog" : 0,
        "backupOperation" : 0,
        "duplicateLog" : 0,
        "endTime" : 1413852025843,
        "mode" : "NORMAL_CHECKPOINT",
                 :
                 :
    }
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • 変数を利用する際には、変数名の先頭に"$"をつけます。
  • 出力内容は、GridDBノードのバージョンにより異なります。

4.4.12 ログ表示

指定ノードのログを表示します。

  • サブコマンド
    logsノード変数
  • 各引数の説明
    引数説明
    ノード変数表示対象のノードを、ノード変数で指定します。
  • 例)
    //ノードのログを表示
    gs> logs $node0
    2013-02-26T13:45:58.613+0900 c63x64n1 4051 INFO SYSTEM_SERVICE ../server/system_service.cpp void SystemService::joinCluster(const char8_t*, uint32_t) line=179 : joinCluster requested (clusterName="defaultCluster", minNodeNum=1) 
    2013-02-26T13:45:58.616+0900 c63x64n1 4050 INFO SYSTEM_SERVICE ../server/system_service.cpp virtual void SystemService::JoinClusterHandler::callback(EventEngine&, util::StackAllocator&, Event*, NodeDescriptor) line=813 : ShutdownClusterHandler called g
    2013-02-26T13:45:58.617+0900 c63x64n1 4050 INFO SYSTEM_SERVICE ../server/system_service.cpp void SystemService::completeClusterJoin() line=639 : completeClusterJoin requested 
    2013-02-26T13:45:58.617+0900 c63x64n1 4050 INFO SYSTEM_SERVICE ../server/system_service.cpp virtual void SystemService::CompleteClusterJoinHandler::callback(EventEngine&, util::StackAllocator&, Event*, NodeDescriptor) line=929 : CompleteClusterJoinHandler called
    

 

また、ログの出力レベル表示、および変更ができます。

  • サブコマンド
    logconfノード変数 [カテゴリ名 [ログレベル] ]
  • 各引数の説明
    引数説明
    ノード変数操作対象のノードを、ノード変数で指定します。
    カテゴリ名操作対象のログカテゴリ名を指定します。省略した場合、全ログカテゴリの出力レベルを 表示 します。
    ログレベルログレベルを指定すると、指定カテゴリのログレベルを 変更 します。
    省略すると、指定カテゴリのログレベルを 表示 します。
  • 例)
    //ノードのログレベルを表示
    gs> logconf $node0
    {
      "CHECKPOINT_SERVICE" : "INFO",
      "CHUNK_MANAGER" : "ERROR",
      "CLUSTER_OPERATION" : "INFO",
      "CLUSTER_SERVICE" : "ERROR",
      "COLLECTION" : "ERROR",
      "DATA_STORE" : "ERROR",
      "EVENT_ENGINE" : "WARNING",
      "HASH_MAP" : "ERROR",
      "IO_MONITOR" : "WARNING",
      "LOG_MANAGER" : "WARNING",
      "MAIN" : "ERROR",
      "OBJECT_MANAGER" : "INFO",
      "RECOVERY_MANAGER" : "INFO",
      "REPLICATION" : "WARNING",
      "REPLICATION_TIMEOUT" : "WARNING",
      "SESSION_TIMEOUT" : "WARNING",
      "SYNC_SERVICE" : "ERROR",
      "SYSTEM_SERVICE" : "INFO",
      "TIME_SERIES" : "ERROR",
      "TRANSACTION_MANAGER" : "ERROR",
      "TRANSACTION_SERVICE" : "ERROR",
      "TRANSACTION_TIMEOUT" : "WARNING",
      "TRIGGER_SERVICE" : "ERROR"
    }
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • ログレベルはERROR、WARNING、INFO、DEBUGです。ログレベルの変更は、必ずサポート窓口の指示に従ってください。
  • ノードの再起動により、ログレベルは初期化されます。ログレベルの変更内容は保持されません。
  • 複数カテゴリのログレベルを一括変更することはできません。
  • 出力内容は、GridDBノードのバージョンにより異なります。詳細については、サポート窓口にお問い合わせください。

4.5 データベース内のデータ操作

データ操作を実行するには、操作対象のクラスタに接続する必要があります。
接続時に設定したデータベース(データベース名省略時は「public」)のデータが操作対象になります。

4.5.1 クラスタへ接続

データ操作を実行するGridDBクラスタに接続します。

  • サブコマンド
    connectクラスタ変数 [データベース名]
  • 各引数の説明
    引数説明
    クラスタ変数接続先となるGridDBクラスタを、クラスタ変数で指定します。
    データベース名データベース名を指定します。
  • 例)
    //GridDBクラスタに接続
    //NoSQLの場合
    gs> connect $cluster1
    接続に成功しました(NoSQL)。
    gs[public]> 
    
    gs> connect $cluster1 userDB
    接続に成功しました(NoSQL)。
    gs[userDB]> 
    
    //NewSQLの場合(NoSQL/NewSQLインタフェースの両方を設定)
    gs> connect $cluster1
    接続に成功しました(NoSQL)。
    接続に成功しました(NewSQL)。
    gs[public]> 
    
    
    

【メモ】

  • データベース名が指定されているとそのデータベースに接続します。データベース名省略時は「public」データベースに接続します。
  • connectが成功するとプロンプトに接続先データベース名が表示されます。
  • 変数を利用する際には、変数名の先頭に"$"をつけます。
  • データ操作サブコマンドを実行する場合、GridDBクラスタに接続する必要があります。
  • SQL接続先が指定されている場合(setclustersqlサブコマンドの実行)は、SQL接続も行われます。

4.5.2 検索 (TQL)

検索を実行し、検索結果を保持します。

  • サブコマンド
    tqlコンテナ名 クエリ ;
  • 各引数の説明
    引数説明
    コンテナ名検索対象となるコンテナを指定します。
    クエリ ;実行するTQL文を指定します。TQL文の最後にはセミコロン(;)が必要です。
  • 例)
    //検索を実行
    gs[public]> tql c001 select *;
    5 件ヒットしました。
    

【メモ】

  • データ操作サブコマンドを実行する場合、GridDBクラスタに接続する必要があります。
  • TQL文の途中に改行を挿入可能です。
  • 最新の検索結果を保持します。検索結果は、tqlまたはsqlサブコマンド実行時に破棄します。
  • TQLの詳細に関しては、『GridDB APIリファレンス』(GridDB_API_Reference.html)の「TQL構文・演算機能」の章を参照ください。
  • パーティションテーブル(コンテナ)は非対応です。実行した場合はエラーとなります。

 

4.5.3 SQL文実行

SQL文を実行し、検索結果を保持します。 この機能はGridDB Advanced Edition / Vector Editionでのみ実行できます。

  • サブコマンド
    sqlSQL文 ;
  • 各引数の説明
    引数説明
    SQL文 ;実行するSQL文を指定します。SQL文の最後にはセミコロン(;)が必要です。
  • 例)
    gs[public]> sql select * from con1;          → SQLの検索
    10,000 件ヒットしました。
    gs[public]> get 1                            → SQLの結果表示
    id,name
    ----------------------
    0,tanaka
    
    
    

【メモ】

  • sqlコマンド実行前に、SQL接続先を指定して接続connectを行っている必要があります。
  • 最新の検索結果を保持します。検索結果は、sqlまたはtqlサブコマンド実行時に破棄します。
  • SQL文の種類により、以下のように結果が表示されます。
    処理正常終了時の実行結果
    検索 SELECT検索結果の件数を表示します。検索結果はサブコマンドget/getcsv/getnoprintで表示します。
    更新 INSERT/UPDATE/DELETE更新したロウ数を表示します。
    DDL文何も表示されません。
  • SQLの詳細に関しては、『GridDB APIリファレンス』(GridDB_API_Reference.html)を参照ください。

 

4.5.4 検索結果の取得

保持する検索結果から、指定件数を取得します。結果の出力方法には以下の3種類があります。

(A)取得した結果を標準出力に表示します。

  • サブコマンド
    get[取得件数]
  • 各引数の説明
    引数説明
    取得件数検索結果の取得件数を指定します。省略すると、全ての検索結果を取得して表示します。

(B)取得した結果をCSV形式でファイルに保存します。

  • サブコマンド
    getcsvCSVファイル名 [取得件数]
  • 各引数の説明
    引数説明
    ファイル名検索結果を保存するファイル名を指定します。
    取得件数検索結果の取得件数を指定します。省略すると、全ての検索結果を取得してファイルに保存します。

(C)取得した結果を出力しません。

  • サブコマンド
    getnoprint[取得件数]
  • 各引数の説明
    引数説明
    取得件数検索結果の取得件数を指定します。省略すると、全ての検索結果を取得します。
  • 例)
    //検索を実行
    gs[public]> tql c001 select *;
    5 件ヒットしました。
    
    //1件目を取得して表示
    gs[public]> get 1
    name,status,count
    mie,true,2
    1 件の取得が完了しました。
    
    //2〜3件目を取得してファイルに保存
    gs[public]> getcsv /var/lib/gridstore/test2.csv 2
    2 件の取得が完了しました。
    
    //4件目を取得
    gs[public]> getnoprint 1
    1 件の取得が完了しました。
    
    //5件目を取得して表示
    gs[public]> get 1
    name,status,count
    akita,true,45
    1 件の取得が完了しました。
    
    

【メモ】

  • データ操作サブコマンドを実行する場合、GridDBクラスタに接続する必要があります。
  • 検索結果の1行目には、列名を出力します。
  • 検索未実行、検索結果の全件取得、もしくは検索結果の破棄後に、検索結果の取得を行うとエラーとなります。
  • NULL値はコマンドによってそれぞれ以下のように出力されます。
    • get: (NULL)
    • getcsv: 引用符のない空文字

4.5.5 実行計画の取得

指定TQL文の実行計画を表示します。検索は実行しません。

  • サブコマンド
    tqlexplainコンテナ名 クエリ ;
  • 各引数の説明
    引数説明
    コンテナ名対象となるコンテナを指定します。
    クエリ ;実行計画を取得するTQL文を指定します。TQL文の最後にはセミコロン(;)が必要です。
  • 例)
    //実行計画を取得
    gs[public]> tqlexplain c001 select * ;
    0       0       SELECTION       CONDITION       NULL
    1       1       INDEX   BTREE   ROWMAP
    2       0       QUERY_EXECUTE_RESULT_ROWS       INTEGER 0
    

また、指定TQL文を実際に実行して、実行計画とともに処理行数等の実測値を表示することもできます。

  • サブコマンド
    tqlanalyzeコンテナ名 クエリ ;
  • 各引数の説明
    引数説明
    コンテナ名対象となるコンテナを指定します。
    クエリ ;実行計画を取得するTQL文を指定します。TQL文の最後にはセミコロン(;)が必要です。
  • 例)
    //検索を実行して実行計画を取得
    gs[public]> tqlanalyze c001 select *;
    0       0       SELECTION       CONDITION       NULL
    1       1       INDEX   BTREE   ROWMAP
    2       0       QUERY_EXECUTE_RESULT_ROWS       INTEGER 5
    3       0       QUERY_RESULT_TYPE       STRING  RESULT_ROW_ID_SET
    4       0       QUERY_RESULT_ROWS       INTEGER 5
    

【メモ】

  • データ操作サブコマンドを実行する場合、GridDBクラスタに接続する必要があります。
  • 実行計画の詳細に関しては『GridDB APIリファレンス』(GridDB_API_Reference.html)の「TQL構文・演算機能」の章を参照ください。
  • 検索結果は保持しないため、検索結果の取得はできず、tqlcloseサブコマンド実行の必要もありません。検索結果が必要な場合は、tqlサブコマンドでクエリを実行してください。
  • パーティションテーブル(コンテナ)は非対応です。実行した場合はエラーとなります。

4.5.6 検索結果の破棄

tqlをクローズ、保持する検索結果を破棄します。

  • サブコマンド
    tqlclose

クエリをクローズ。保持する検索結果を破棄します。

  • サブコマンド
    queryclose
  • 例)
    //検索結果を破棄
    gs[public]> tqlclose
    
    gs[public]> queryclose
    

【メモ】

  • 検索結果は、下記のタイミングで検索結果は破棄されます。
    • tqlclose または querycloseサブコマンド実行時
    • tqlまたはsqlサブコマンドによる新規検索実行時
    • disconnectサブコマンドによるGridDBクラスタからの切断時
  • 検索結果の破棄後に検索結果の取得(getサブコマンドなど)を行うとエラーとなります。

4.5.7 クラスタから切断

GridDBクラスタから切断します。

  • サブコマンド
    disconnect
  • 例)
    //GridDBクラスタから切断
    gs[public]> disconnect
    gs> 
    
    

【メモ】

  • 保持している検索結果は破棄します。
  • 切断すると、プロンプトの接続データベース名の表示が無くなります。

4.6 データベース管理

データベース管理を実行するサブコマンドについて説明します。データベース管理は、操作対象のクラスタに接続してから実行してください。(サブコマンド connect)

4.6.1 データベース作成

指定された名前のデータベースを作成します。

  • サブコマンド
    createdatabaseデータベース名
  • 各引数の説明
    引数説明
    データベース名作成するデータベースの名前を指定します。
  • 例)
    //"db1"という名前のデータベースを作成
    gs[public]> createdatabase db1
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • 作成直後のデータベースは、管理ユーザのみがアクセスできます。必要に応じて一般ユーザにアクセス権を付与してください。

4.6.2 データベース削除

指定された名前のデータベースを削除します。

  • サブコマンド
    dropdatabaseデータベース名
  • 各引数の説明
    引数説明
    データベース名削除するデータベースの名前を指定します。
  • 例)
    //以下のようなデータベースを削除
    //db1:データベース内にコンテナがない
    //db2:データベースが存在しない
    //db3:データベース内にコンテナがある
    
    gs[public]> dropdatabase db1         // 正常終了
    gs[public]> dropdatabase db2         // 異常終了
    D20340: データベース "db2"は存在しません。
    gs[public]> dropdatabase db3         // 異常終了
    D20336: データベース削除でエラーが発生しました。 : msg=[[145045:JC_DATABASE_NOT_EMPTY] Illegal target error by non-empty database.]
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • デフォルト接続先であるpublicデータベースは削除出来ません。

4.6.3 カレントDBの表示

現在のカレントデータベース名を表示します。

  • サブコマンド
    getcurrentdatabase 
  • 例)
    gs[db1]> getcurrentdatabase
    db1
    

4.6.4 データベース一覧

データベース一覧およびアクセス権情報を表示します。

  • サブコマンド
    showdatabase[データベース名]
  • 各引数の説明
    引数説明
    データベース名表示するデータベースの名前を指定します。
  • 例)
    gs[public]> showdatabase
    database     ACL
    ----------------------------
    public       ALL_USER
    db1          user1
    db2          user1
    db3          user3
    
    gs[public]> showdatabase db1
    database     ACL
    ----------------------------
    public       ALL_USER
    db1          user1
    

【メモ】

  • 一般ユーザの場合は、アクセス権が付与されているデータベースのみが表示されます。管理ユーザの場合は、全てのデータベースの一覧が表示されます。

4.6.5 アクセス権の付与

データベースへのアクセス権を付与します。

  • サブコマンド
    grantデータベース名 ユーザ名
  • 各引数の説明
    引数説明
    データベース名アクセス権付与の対象となるデータベース名を指定します。
    ユーザ名アクセス権を付与するユーザの名前を指定します。
  • 例)
    gs[public]> grant db1 user001
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • 既にアクセス権が付与されている場合は、エラーになります (データベース1つに1ユーザしか、アクセス権が付与できません)。アクセス権の剥奪("revoke"コマンド)を実行後、本コマンドを実行ください。

4.6.6 アクセス権の剥奪

データベースへのアクセス権を剥奪します。

  • サブコマンド
    revokeデータベース名 ユーザ名
  • 各引数の説明
    引数説明
    データベース名アクセス権剥奪の対象となるデータベース名を指定します。
    ユーザ名アクセス権を剥奪するユーザの名前を指定します。
  • 例)
    gs[public]> revoke db1 user001
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。

4.7 ユーザ管理

ユーザ管理を実行するサブコマンドについて説明します。ユーザ管理は、操作対象のクラスタに接続してから実行してください。(サブコマンド connect)

4.7.1 一般ユーザ作成

指定された名前の一般ユーザを作成します。

  • サブコマンド
    createuserユーザ名 パスワード
  • 各引数の説明
    引数説明
    ユーザ名作成するユーザの名前を指定します。
    パスワード作成するユーザのパスワードを指定します。
  • 例)
    gs[public]> createuser user01 pass001
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。
  • 先頭が"gs#"で始まる名前は管理ユーザ用なので、一般ユーザの名前としては指定できません。
  • 管理ユーザを作成する場合、クラスタを構成する全ノードで gs_adduserコマンドを使用して作成してください。

4.7.2 一般ユーザ削除

指定された名前のユーザを削除します。

  • サブコマンド
    dropuserユーザ名
  • 各引数の説明
    引数説明
    ユーザ名削除するユーザの名前を指定します。
  • 例)
    gs[public]> dropuer user01
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。

4.7.3 パスワード変更

パスワードを変更します。

  • サブコマンド
    setpassword パスワード (一般ユーザのみ)
    setpassword ユーザ名 パスワード (管理ユーザのみ)
  • 各引数の説明
    引数説明
    パスワード変更するパスワードを指定します。
    ユーザ名パスワードを変更するユーザの名前を指定します。

【メモ】

  • 一般ユーザは、自分のパスワードのみ変更可能です。
  • 管理ユーザは、他の一般ユーザのパスワードのみ変更可能です。
    • 例)
    gs[public]> setpassword newPass009
    

4.7.4 一般ユーザ一覧

ユーザ情報を表示します。

  • サブコマンド
    showuser[ユーザ名]
  • 各引数の説明
    引数説明
    ユーザ名表示するユーザの名前を指定します。
  • 例)
    gs[public]> showuser
    UserName
    ------------------------------------
    user002
    user001
    user003
    
    gs[public]> showuser user001
    Name     : user001
    GrantedDB: public, userDB
    
    

【メモ】

  • 管理ユーザのみが実行可能なコマンドです。

4.8 コンテナ管理

コンテナへの操作を実行するサブコマンドについて説明します。コンテナ管理は、操作対象のクラスタに接続してから実行してください。(サブコマンド connect)接続先のデータベース上のコンテナが操作対象になります。

4.8.1 コンテナ作成

コンテナを作成します。

  • サブコマンド
    • 簡易版
        
      コンテナ(コレクション)
       createcollectionコンテナ名 カラム名 タイプ [カラム名 タイプ …]
      コンテナ(時系列コンテナ)
       createtimeseriesコンテナ名 圧縮方式 カラム名 タイプ [カラム名 タイプ …]
    • 詳細版
       createcontainerコンテナ情報ファイル [コンテナ名]
  • 各引数の説明
    引数説明
    コンテナ名作成するコンテナの名前を指定します。createcontainerコマンドの場合に省略すると、コンテナ情報ファイルに記述されているコンテナ名でコンテナ作成します。
    カラム名カラム名を指定します。
    タイプカラムのタイプを指定します。
    圧縮方式時系列データの場合、データの圧縮方式を指定します。
    コンテナ定義ファイルコンテナ情報をJSON形式で格納したファイルを指定します。

    簡易版

    コンテナ名とカラム情報(カラム名とタイプ)を指定してコンテナを作成します。コンテナタイプが時系列コンテナの場合のみ、圧縮タイプの指定も可能です。

    • 圧縮方式は、"NO", "SS"を指定します。"HI"を指定する場合は、詳細版を利用してください。
    • コレクションは、ロウキー指定ありで作成されます。第一カラムがロウキーになります。
    • カラム制約、索引名を指定する場合は、詳細版を利用してください。

    詳細版

    コンテナ定義情報をjsonファイルで指定してコンテナを作成します。

    • コンテナ定義情報は、エクスポートツールで出力されるメタ情報ファイルの定義ど同じです。カラムのタイプやデータの圧縮方式、コンテナ定義の形式などは、コンテナデータファイルの形式メタデータファイルを参照ください。ただし、以下の情報は、エクスポートコマンドのメタ情報ファイルでは定義されていますが、本コマンドでは無効となります。
      • version         エクスポートツールバージョン
      • database         データベース名
      • containerFileType    エクスポートデータファイルタイプ
      • containerFile      エクスポートファイル名
      • partitionNo       パーティション番号
    • 1つのコンテナ定義ファイルには、1つのコンテナ定義を記述してください。
    • 引数でコンテナ名を省略した場合、コンテナ定義ファイルに記述されているコンテナ名で作成します。
    • 引数でコンテナ名を指定した場合、コンテナ定義ファイルのコンテナ名は無視して引数のコンテナ名で作成します。
    • コンテナ定義ファイルにデータベース名が記述されていてもエラーとはなりませんが、その名前は無視され接続中のデータベース上に作成します。
    • コンテナ定義ファイルを利用する場合、エクスポートの機能で--out オプションを指定するとメタ情報ファイルが出力されます。出力されたメタ情報ファイルを編集して、コンテナ定義ファイルとして流用することができます。

  (例) 出力されたメタ情報ファイルをコンテナ定義ファイルとして流用する場合

{
    "version":"2.1.00",               ←無効
    "container":"container_354",
    "database":"db2",                ←無効
    "containerType":"TIME_SERIES",
    "containerFileType":"binary",          ←無効
    "containerFile":"20141219_114232_098_div1.mc",  ←無効
    "rowKeyAssigned":true,
    "partitionNo":0,                 ←無効
    "columnSet":[
        {
            "columnName":"timestamp",
            "type":"timestamp",
            "notNull":false
        },
        {
            "columnName":"active",
            "type":"boolean",
            "notNull":true
        },
        {
            "columnName":"voltage",
            "type":"double",
            "notNull":true
        }
    ],
    "timeSeriesProperties":{
        "compressionMethod":"NO",
        "compressionWindowSize":-1,
        "compressionWindowSizeUnit":"null",
        "expirationDivisionCount":8,
        "rowExpirationElapsedTime":-1,
        "rowExpirationTimeUnit":"null"
    },
    "compressionInfoSet":[
    ]

4.8.2 コンテナ削除

コンテナを削除します。

  • サブコマンド
    dropcontainerコンテナ名
  • 各引数の説明
    引数説明
    コンテナ名削除するコンテナの名前を指定します。
  • 例)
    gs[public]> dropcontainer Con001
    

【メモ】

  • パーティションテーブル(コンテナ)は非対応です。実行した場合はエラーとなります。
    • パーティションテーブル(コンテナ)の削除にはSQLを使用してください。

4.8.3 コンテナの表示

コンテナ情報を表示します。

  • サブコマンド
    showcontainerコンテナ名
  • 各引数の説明
    引数説明
    コンテナ名表示対象のコンテナ名を指定します。省略した場合、全てのコンテナの一覧を表示します。
  • 例)
    //コンテナ一覧を表示
    gs[userDB]> showcontainer
    Database : userDB
    Name                  Type         PartitionId
    ------------------------------------------------
    cont001               COLLECTION            10
    col00a                COLLECTION             3
    time02                TIME_SERIES            5
    cont003               COLLECTION            15
    cont005               TIME_SERIES           17
    
    //指定コンテナの情報を表示
    gs[public]> showcontainer cont003
    Database    : userDB
    Name        : cont003
    Type        : COLLECTION
    Partition ID: 15
    DataAffinity: -
    
    Columns:
    No  Name                  Type            CSTR  Index
    ------------------------------------------------------------------------------
     0  string                STRING          NN    TREE(myIndex)   [RowKey]
     1  value                 DOUBLE          NN    HASH() TREE(myIndex2)
    
    

【メモ】

  • コンテナ一覧で表示するのは、「コンテナ名」、「コンテナタイプ」、「パーティションID」です。
  • 指定コンテナの情報で表示するのは、「コンテナ名」、「コンテナタイプ」、「パーティションID」、「定義したカラム名」、「カラムのデータ型」、「カラム制約」、「カラムの索引設定」です。
  • カレントDBのコンテナ情報が表示されます。

4.8.4 テーブルの表示

テーブル情報を表示します。showcontainerとの互換コマンドです。

  • サブコマンド
    showtableテーブル名
  • 各引数の説明
    引数説明
    テーブル名表示対象のテーブル名を指定します。省略した場合、全てのテーブルの一覧を表示します。

4.8.5 索引の作成

指定したコンテナのカラムに索引を作成します。

  • サブコマンド
    createindexコンテナ名 カラム名 索引タイプ...
  • 各引数の説明
    引数説明
    コンテナ名索引操作対象のカラムが所属するコンテナ名を指定します。
    カラム名索引操作対象のカラム名を指定します。
    索引タイプ...索引タイプを指定します。索引タイプはTREE、HASH、SPATIALのいずれか(または複数)を指定します。
  • 例)
    //索引の作成
    gs[public]> createindex cont003 col2 tree hash
    
    gs[public]> showcontainer cont003
    Database    : public
    Name        : cont003
    Type        : COLLECTION
    Partition ID: 15
    DataAffinity: -
    
    Columns:
    No  Name                  Type            Index
    ------------------------------------------------------------
     0  col1                  INTEGER         [TREE] (RowKey)
     1  col2                  STRING          [TREE, HASH]
     2  col3                  TIMESTAMP       []
    

【メモ】

  • 作成済みの索引を指定しても、エラーは発生しません。
  • 索引名は未対応です。索引名を付加する場合は、コンテナ作成(詳細版)またはSQLを使用してください。

4.8.6 索引の削除

指定したコンテナのカラムの索引を削除します。

  • サブコマンド
    dropindexコンテナ名 カラム名 索引タイプ...
  • 各引数の説明
    引数説明
    コンテナ名索引操作対象のカラムが所属するコンテナ名を指定します。
    カラム名索引操作対象のカラム名を指定します。
    索引タイプ...索引タイプを指定します。索引タイプはTREE、HASH、SPATIALのいずれか(または複数)を指定します。
  • 例)
    //索引の削除
    gs[public]> showcontainer cont003
    Database    : public
    Name        : cont003
    Type        : COLLECTION
    Partition ID: 27
    DataAffinity: -
    
    Columns:
    No  Name                  Type            CSTR  Index
    ------------------------------------------------------------------------------
     0  col1                  INTEGER         NN    TREE()   [RowKey]
     1  col2                  STRING                TREE() HASH(myIndex)
     2  col3                  TIMESTAMP       NN    HASH()
    
    gs[public]> dropindex cont003 col2 hash
    
    gs[public]> showcontainer cont003
    Database    : public
    Name        : cont003
    Type        : COLLECTION
    Partition ID: 27
    DataAffinity: -
    
    Columns:
    No  Name                  Type            CSTR  Index
    ------------------------------------------------------------------------------
     0  col1                  INTEGER         NN    TREE()   [RowKey]
     1  col2                  STRING                TREE()
     2  col3                  TIMESTAMP       NN    HASH()
    

【メモ】

  • 作成されていない索引を指定しても、エラーは発生しません。

4.8.7 トリガの削除

指定したコンテナのトリガを削除します。

  • サブコマンド
    droptriggerコンテナ名 トリガ名
  • 各引数の説明
    引数説明
    コンテナ削除するトリガのコンテナ名を指定します。
    トリガ名削除するトリガ名を指定します。
  • 例)
    gs[public]> droptrigger con01 tri03
    

4.8.8 トリガの表示

指定したコンテナのトリガ情報を表示します。

  • サブコマンド
    showtriggerコンテナ名 [トリガ名]
  • 各引数の説明
    引数説明
    コンテナ表示対象のコンテナ名を指定します。
    トリガ名表示対象のトリガ名を指定します。省略した場合、全てのトリガ情報の一覧を表示します。
  • 例)
    //指定コンテナのトリガ情報一覧を表示
    gs[public]> showtrigger cont003
    Name                 Type  Columns              Events
    ---------------------------------------------------------------
    rtrig01              REST  [col1, col3]         [PUT]
    
    gs[public]> showtrigger cont003 rtrig01
    Name          : rtrig01
    Type          : REST
    Target Columns: [col1, col3]
    Target Events : [PUT]
    
    Destination URI: http://example.com
    

【メモ】

  • トリガ一覧で表示するのは、「トリガ名」、「通知方法」、「通知対象カラム」、「監視対象操作(ロウの新規作成または更新、削除)」です。
  • 指定トリガ情報で表示するのは、「トリガ名」、「通知方法」、「通知対象カラム」、「監視対象操作」、「通知先URI」を表示します。また、JMS通知の場合には、「ディスティネーション名」、「ディスティネーションタイプ」、「ユーザ」、「パスワード」も併せて表示します。
  • トリガ機能の詳細に関しては、『GridDB APIリファレンス』(GridDB_API_Reference.html)の「トリガ機能」の章を参照ください。

4.9 その他の操作

その他のサブコマンドについて説明します。

4.9.1 エコーバック設定

実行したサブコマンドを標準出力に表示します。

  • サブコマンド
    echoboolean
  • 各引数の説明
    引数説明
    booleanTRUEを指定すると、実行したサブコマンドを標準出力に表示します。既定値はFALSEです。
  • 例)
    //実行したサブコマンドを標準出力に表示
    gs> echo TRUE
    

【メモ】

  • gs_shのプロンプト"gs>"は常に標準出力に表示します。

 

4.9.2 メッセージの表示

指定した文字列、もしくは変数の定義内容を表示します。

  • サブコマンド
    printメッセージ
  • 各引数の説明
    引数説明
    メッセージ表示する文字列もしくは変数を指定します。
  • 例)
    //文字列の表示
    gs> print printを実行しました。
    printを実行しました。
    

【メモ】

  • 変数を利用する際には、変数名の先頭に"$"をつけます。

 

4.9.3 スリープ

指定した秒数スリープします。

  • サブコマンド
    sleep秒数
  • 各引数の説明
    引数説明
    秒数スリープする秒数を指定します。
  • 例)
    //10秒間スリープ
    gs> sleep 10
    

【メモ】

  • 秒数は正の整数を指定ください。

 

4.9.4 外部コマンドの実行

外部コマンドを実行します。

  • サブコマンド
    exec外部コマンド [ 外部コマンド引数 ]
  • 各引数の説明
    引数説明
    外部コマンド外部コマンドを指定します。
    外部コマンド引数外部コマンドの引数を指定します。
  • 例)
    //カレントディレクトリのファイル情報を表示
    gs> exec ls -la
    

【メモ】

  • パイプ、リダイレクト、ヒアドキュメントは利用できません。

 

4.9.5 gs_shの終了

gs_shを終了します。

  • サブコマンド
    exit
    quit
  • 例)
    //gs_shを終了します。
    gs> exit
    

 また、サブコマンドでエラーが発生した場合に、gs_shを終了するように設定できます。

  • サブコマンド
    errexitboolean
  • 各引数の説明
    引数説明
    booleanTRUEを指定すると、サブコマンドでエラーが発生した場合に、gs_shが終了します。デフォルトはFALSEです。
  • 例)
    //サブコマンドでエラーが発生した場合にgs_shが終了するように設定
    gs> errexit TRUE
    

【メモ】

  • exitサブコマンド、quitサブコマンドに機能差はありません。

 

4.9.6 ヘルプ

サブコマンドの説明を表示します。

  • サブコマンド
    help[サブコマンド名]
  • 各引数の説明
    引数説明
    サブコマンド名説明を表示するサブコマンド名を指定します。省略した場合、サブコマンドの一覧を表示します。
  • 例)
    //サブコマンドの説明表示
    gs> help exit
    exit
    gs_shを終了します。
    

【メモ】

  • gs_shの説明は、「gs_sh --help」で取得できます。

 

4.9.7 バージョン

gs_shのバージョンを表示します。

  • サブコマンド
    version
  • 例)
    //バージョンの表示
    gs> version
    gs_sh version 2.0.0
    

【メモ】

  • gs_shのバージョン情報は、「gs_sh --version」でも取得できます。

 

4.10 オプション・サブコマンド仕様

4.10.1 オプション

  • コマンド一覧
    gs_sh[スクリプトファイル]
    gs_sh-v|--version
    gs_sh-h|--help
  • オプション仕様
    オプション必須説明
    -v|--versionツールのバージョンを表示します。
    -h|--helpヘルプメッセージとしてコマンド一覧を表示します。

【メモ】

  • gs_shサブコマンドをバッチ処理するために、スクリプトファイルが作成できます。スクリプトファイルの拡張子はgshです。
  • gs_sh起動時に、gsadmユーザホームディレクトリ下の.gsshrcスクリプトファイルを自動的に読み込みます。.gsshrcの内容は、他のスクリプトファイルよりも先に読み込みます。

4.10.2 サブコマンド一覧

  • GridDBクラスタ定義 サブコマンド一覧
    サブコマンド引数説明*1
      setnodeノード変数名 IPアドレスノード変数を定義します。
      ポート番号 [ SSHポート番号 ]
      setclusterクラスタ変数名 クラスタ名 クラスタ変数を定義します。
      マルチキャストアドレス ポート番号
      [ ノード変数... ]
      setclustersqlクラスタ変数名 クラスタ名クラスタ構成にSQLの接続先を定義します。
      SQLアドレス SQLポート番号
      modcluster  クラスタ変数名クラスタ変数にノード変数を追加、除去します。
       add|remove ノード変数...
      setuserユーザ名 パスワード クラスタにアクセスするユーザおよびパスワードを定義します。
      [ OSユーザgsadmのパスワード ]
      set変数名 [ 値 ]任意の変数を定義します。
      show[ 変数名 ]変数の定義内容を表示します。
      save[ スクリプトファイル名 ]変数定義をスクリプトファイルに保存します。
      load[ スクリプトファイル名 ]スクリプトファイルを読み込み実行します。

 

  • GridDBクラスタ操作 サブコマンド一覧
    サブコマンド引数説明*1
      startnodeノード|クラスタ変数 [ タイムアウト秒数 ]指定ノードを起動します。*
      stopnodeノード|クラスタ変数 [ タイムアウト秒数 ]指定ノードを停止します。*
      stopnodeforceノード|クラスタ変数 [ タイムアウト秒数 ]指定ノードを強制停止します。*
      startclusterクラスタ変数 [ タイムアウト秒数 ]指定クラスタに未参加の稼働ノード群を一括参加させます*
      stopclusterクラスタ変数 [ タイムアウト秒数 ]クラスタ参加中のノード群を一括離脱させます。*
      joinclusterクラスタ変数 ノード変数   [ タイムアウト秒数 ]指定ノードをクラスタに参加させます。*
      leaveclusterノード変数 [ タイムアウト秒数 ]指定ノードをクラスタから離脱させます。*
      leaveclusterforceノード変数 [ タイムアウト秒数 ]指定ノードをクラスタから強制的に離脱させます。*
      appendclusterクラスタ変数 ノード変数  [ タイムアウト秒数 ]クラスタ変数に未定義のノードをクラスタに参加させます。*
      configclusterクラスタ変数クラスタステータス情報を表示します。*
      configノード変数クラスタ構成情報を表示します。*
      statノード変数指定ノードのステータスを表示します。*
      logsノード変数指定ノードのログを表示します。*
      logconfノード変数 [ カテゴリ名 [ 出力レベル ] ]ログ設定を表示、変更します。*

    *1 : *は、管理ユーザのみ実行可能なコマンドです。

 

  • データベース内データ操作 サブコマンド一覧
    サブコマンド引数説明*1
      connectクラスタ変数 [データベース名]GridDBクラスタに接続します。
      tqlコンテナ名 クエリ ;検索を実行し、検索結果を保持します。
      get[ 取得件数 ]検索結果を取得し、標準出力に表示します。
      getcsvCSVファイル名 [ 取得件数 ]検索結果を取得し、CSV形式でファイルに保存します。
      getnoprint[ 取得件数 ]クエリの結果を取得しますが、標準出力に表示しません。
      tqlclose保持する検索結果を破棄します。
      tqlanalyzeコンテナ名 クエリ ;指定TQL文の実行計画を表示します。
      tqlexplainコンテナ名 クエリ ;指定TQL文を実行し、実行計画と処理件数等の実測値を表示します。
      sqlSQL文 ;SQL文を実行し、検索結果を保持します。
      querycloseSQLをクローズします。
      disconnectGridDBクラスタから切断します。

     *1 : *は、管理ユーザのみ実行可能なコマンドです。

 

  • データベース管理 サブコマンド一覧
    サブコマンド引数説明*1
      createdatabaseデータベース名データベースを作成します。*
      dropdatabaseデータベース名データベースを削除します。*
      getcurrentdatabaseカレントデータベース名を表示します。
      showdatabase[データベース名]データベース一覧およびアクセス権情報を表示します。
      grantデータベース名 ユーザ名データベースへのアクセス権を付与します。*
      revokeデータベース名 ユーザ名データベースへのアクセス権を剥奪します。*

     *1 : *は、管理ユーザのみ実行可能なコマンドです。

 

  • ユーザ管理 サブコマンド一覧
    サブコマンド引数説明*1
      createuserユーザ名 パスワード一般ユーザを作成します。*
      dropuserユーザ名一般ユーザを削除します。*
      setpasswordパスワード自分のパスワードを変更します。
      setpasswordユーザ名 パスワード一般ユーザのパスワードを変更します。
      showuser[ユーザ名]ユーザ情報を表示します。

     *1 : *は、管理ユーザのみ実行可能なコマンドです。

 

  • コンテナ管理 サブコマンド一覧
    サブコマンド引数説明*1
      createcollectionコンテナ名 カラム名 タイプ [カラム名 タイプ …]コンテナ(コレクション)を作成します。
      createtimeseriesコンテナ名 圧縮方式 カラム名 タイプ [カラム名 タイプ …]コンテナ(時系列コンテナ)を作成します。
      createcontainerコンテナ情報ファイル [コンテナ名]コンテナ情報ファイルよりコンテナを作成します。
      dropcontainerコンテナ名コンテナを削除します。
      showcontainer[ コンテナ名 ]コンテナ情報を表示します。
      showtable[ テーブル名 ]テーブル情報を表示します。
      createindexコンテナ名 カラム名 索引タイプ...指定カラムに索引を作成します。
      dropindexコンテナ名 カラム名 索引タイプ...指定カラムの索引を削除します。
      droptriggerコンテナ名 トリガ名トリガ情報を削除します。
      showtriggerコンテナ名 [ トリガ名 ]トリガ情報を表示します。

     *1 : *は、管理ユーザのみ実行可能なコマンドです。

 

  • その他の操作 サブコマンド一覧
    サブコマンド引数説明*1
      echobooleanエコーバックの有無を設定します。
      printメッセージ指定した文字列、もしくは変数の定義内容を表示します。
      sleep秒数指定した秒数スリープします。
      exec外部コマンド [ 外部コマンド引数 ]外部コマンドを実行します。
      exitgs_shを終了します。
      quitgs_shを終了します。
      errexitbooleanエラー発生時にgs_shを終了するかを設定します。
      help[ サブコマンド名 ]サブコマンドの説明を表示します。
      versionバージョン情報を表示します。

     *1 : *は、管理ユーザのみ実行可能なコマンドです。

 

5 運用コマンド

5.1 コマンド一覧

GridDBでは、以下のコマンドを提供します。

種類機能コマンド格納RPMパッケージ
(1) ノードの起動/停止ノードの起動gs_startnodeserver
ノードの停止gs_stopnodeclient
(2) ユーザ管理ユーザの登録gs_adduserserver
ユーザの削除gs_deluserserver
パスワードの変更gs_passwdserver
(3) クラスタ管理クラスタ構成への参加gs_joinclusterclient
クラスタ構成からの離脱gs_leaveclusterclient
クラスタの全停止gs_stopclusterclient
クラスタ構成情報取得gs_configclient
クラスタ情報取得gs_statclient
クラスタへのノード増設gs_appendclusterclient
クラスタの手動フェイルオーバーgs_failoverclusterclient
パーティション情報取得gs_partitionclient
クラスタ構成ノード数の拡張gs_increaseclusterclient
(4) ログ情報ログの表示gs_logsclient
イベントログ出力レベル表示と変更gs_logconfclient
(5) バックアップ/リストアバックアップgs_backupserver
バックアップデータ確認gs_backuplistserver
リストアgs_restoreserver
(6) インポート/エクスポートインポートgs_importclient
エクスポートgs_exportclient
(7) 保守パラメータ表示と変更gs_paramconfclient

【メモ】

  • 運用コマンドは、管理ユーザのみが実行可能です。
  • インポート/エクスポートについては、「インポート/エクスポート」の章を参照ください。

5.2 GridDBコマンド共通

【コマンドオプション】

以下のオプションは、すべてのコマンドで共通して使えるオプションです。

オプション説明
-h|--helpコマンドのヘルプを表示します。
--version運用コマンドのバージョンを表示します。

【例】

  • コマンドのヘルプおよびバージョンを表示します。
$ gs_startnode -h
Usage: gs_startnode [-u USER/PASS [-w [WAIT_TIME]] ]

Start the GridDB node.

$ gs_stat --version
gs_stat [V2.5.00]

以下のオプションは、一部のコマンドで共通して使えるオプションです。どのオプションが使用できるかは、各コマンドの節を参照ください。

オプション説明
-s サーバ[:ポート番号]|-p ポート番号操作したいノードのサーバ名(アドレス)とポート番号
(運用コマンドの接続ポート番号)を指定します。
デフォルトは、"localhost(127.0.0.1):10040"です。
-u ユーザ名/パスワード認証ユーザとパスワードを指定します。
-w|--wait [秒数]処理完了の待合わせを行います。
秒数指定が無い場合または秒数が0の場合は時間制限無しとなります。
-a|--address-type アドレス種別表示するアドレス、ポートのサービス種別を指定する
 system : 運用コマンドの接続アドレス
 cluster : クラスタ管理のために使用する受信アドレス
 transaction : トランザクション処理の受付アドレス
 sync : 同期処理のために使用する受信アドレス

【メモ】

  • 運用コマンドの実行時に指定する認証ユーザは、管理ユーザを指定してください。

【終了ステータス】

以下は、コマンドの終了ステータスです。

  • 0:正常
  • 1:エラー
  • 2:タイムアウト

【ログファイル】

コマンドのログファイルは、${GS_LOG}/コマンド名.logに保存されます。

【例】 GS_LOGの値が" /var/lib/gridstore/log(デフォルト) "で、"gs_startnode"コマンドを実行した場合、以下のログファイルが作成されます。

  • /var/lib/gridstore/log/gs_startnode.log

5.3 利用上の注意点

【運用コマンドを利用する前に】

  • プロキシ変数(http_proxy)が設定されている場合、GridDBノードのアドレス(群)を、no_proxyで設定し、proxyから除外してください。運用コマンドはREST/http通信を行うため、誤ってproxyサーバ側に接続されてしまい、運用コマンドが動作しません。
  • 「サーバ:ポート」のオプション指定があるコマンドの場合、ポート設定をデフォルトから変更していなければ、このオプションを指定する必要はありません。また、「サーバ:ポート」のオプションを指定すれば、ノードを起動した計算機とは別の計算機上からこのコマンドを実行できます。
  • 運用コマンドで利用するサーバ:ポートの指定には、ノード定義ファイルgs_node.jsonの/system/serviceAddressの値をサーバに /system/servicePortの値をポートに指定します。

【クラスタを構成するには】

クラスタは、1台以上のノードから成り、1台のマスタとその他のフォロワと呼ばれるノードの集合から構成されます。

クラスタ構成では、有効ノード数と構成ノード数が重要になります。有効ノード数は、クラスタを構成している実際のノード数です。構成ノード数は、クラスタに参加できるノード数で、gs_joinclusterコマンドで指定します。

有効ノード数と構成ノード数はマスタノードに対してgs_statコマンドを実行することで確認でき、それぞれ/cluster/activeCountと/cluster/designatedCountの値となります。

参考までに、以下にクラスタ構成を作成/変更するための主な手順を示します。各コマンドの詳細については以降の節を参照ください。

 クラスタを構成する場合

1) クラスタに参加する全てのノードを起動します(gs_startnode コマンド実行)。

2) 全てのノードに対して、構成ノード数、クラスタ名を指定してクラスタに参加させます(gs_joincluster コマンド実行)。

3) 1)、2)が全て完了した時点でマスタノードが決定され、サービスが開始されます。

4) クラスタ構成の状態を確認します(gs_config コマンド実行)。

 あるノードを停止させる場合

1) 停止するノードをクラスタ構成から離脱させます(gs_leavecluster コマンド実行)。

2) ノードを停止させます(gs_stopnode コマンド実行)。

 クラスタを停止する場合

1) クラスタを停止し、すべてのノードをクラスタ構成から離脱させます(gs_stopcluster コマンド実行)。

2) クラスタのみでなく各ノードも停止する場合は、各ノードを停止させます(gs_stopnode コマンド実行)。

 停止したクラスタを再起動させる場合

1) ノードが停止している場合は、停止しているノードを起動します(gs_startnode コマンド実行)。

2) クラスタを構成していたすべてのノードをクラスタに参加させます(gs_joincluster コマンド実行)。

3) クラスタ構成の状態を確認します(gs_config コマンド実行)。

 稼働中のクラスタに、無停止でノードを増設する場合

1) 増設するノードに対して、参加させるクラスタを指定してクラスタへの増設を行います(gs_appendclusterコマンド実行)。

2) クラスタ構成の状態を確認します(gs_config コマンド実行)。

 クラスタからノードを離脱させる場合

1) クラスタから離脱させるノードに対して、クラスタの離脱を行います(gs_leaveclusterコマンド実行)。

2) クラスタ構成の状態を確認します(gs_config コマンド実行)。

5.4 ノードの起動/停止

5.4.1 ノードの起動

ノードを実行するマシン上でGridDBノード起動コマンドを実行します。このコマンドはGridDBノード毎に実行する必要があります。

  • コマンド
    gs_startnode[-w|--wait [秒数] -u ユーザ名/パスワード]

【メモ】

  • 待合わせを行う場合、認証ユーザとパスワードを指定します。
  • 起動完了とは、データベースのリカバリ処理完了を意味します。
  • 起動完了を待合せることで、gs_joinclusterを続けて正常に行うことができます。

5.4.2 ノードの停止

GridDBノードを停止します。ノードを停止するためには、まず、GridDBクラスタ管理処理を停止させる必要があります。

  • コマンド
    gs_stopnode[-f|--force]
    [-k|--kill]
    [-w|--wait [秒数]]
    [-s サーバ[:ポート番号] | -p ポート番号]
    -u ユーザ名/パスワード
  • オプション
    オプション説明
    -f|--force強制的にノードを停止します。
    -k|--killローカルマシンのノードのプロセスを強制的に停止します。

【メモ】

  • 特定のノードを停止する場合、そのノードがクラスタ構成に参加しているとノードの停止を行えません。ノードをクラスタ構成から離脱(gs_leavecluster)させてから、ノードの停止を行ってください。
  • すべてのノードを停止する場合、GridDBクラスタ管理処理を停止(gs_stopcluster)した後、順次、ノードを停止してください。
  • ノードの停止を始めると、チェックポイント処理のため、実際にプロセスが終了するまでに時間を要することがあります。停止するまでしばらくお待ちください。
  • --force オプションや--kill オプションを指定すると強制的にノードを停止できますが、データをロストする恐れがあります。
  • --kill オプションによりリモートマシンのノードのプロセスを停止することはできません。

5.5 ユーザ管理

GridDBの管理ユーザの登録/削除/パスワード変更を行います。

インストール直後、下記のデフォルトユーザが存在します。

  • デフォルトユーザ
    ユーザパスワード用途
    adminadmin運用管理ユーザ、運用コマンドの認証用
    systemmanagerアプリケーションユーザ、クライアント実行の認証用

【注意点】

  • GridDBの利用ユーザはOSのユーザとは異なります。
  • クライアントで認証に用いるため、クラスタを構成する全ノードで同一のユーザ情報が登録されている必要があります。ユーザ定義ファイル をコピーするなどして、全ノードで同一のユーザ情報が参照されるようにしてください。デフォルトでは以下のファイルです。
    • /var/lib/gridstore/conf/password
  • ユーザ登録/削除/パスワード変更を行った場合は、変更を行ったユーザ定義ファイルを全ノードに配布し、クラスタを停止してノードの再起動、クラスタの再構成を行ってください。

5.5.1 管理ユーザの登録

  • コマンド
    gs_adduserユーザ名
    [-p|--password パスワード]
  • オプション
    オプション説明
    ユーザ名作成する管理ユーザ名を指定します。先頭が"gs#"で始まる名前を指定します。"gs#"以降には1文字以上のASCII英数字、"_"(アンダースコア)のみ使用可能です。
    -p|--password パスワードユーザのパスワードを指定します。省略時は対話的にパスワードを入力するためのプロンプトが表示されます。

【メモ】

  • OSユーザgsadmで実行してください。
  • パスワードは登録の際に暗号化されます。
  • 管理ユーザの登録を行った場合は、コマンド実行したノードのユーザ定義ファイルを全ノードに配布し、クラスタを停止してノードの再起動、クラスタの再構成を行ってください。
  • V2.5以前に登録したユーザは管理ユーザとしてそのまま利用できます。
  • 「admin」、「system」のみ、削除しても再登録が可能です。

【例】

  • 管理ユーザ(「ユーザ名(gs#someone)」、「パスワード(opensesami)」)をユーザ定義ファイルに追加します。
    $ gs_adduser -p opensesami gs#someone 
    $ gs_stopcluster -u admin/admin
    全てのノードで以下を実施
    $ gs_stopnode -u admin/admin
    $ cp [ユーザを追加したユーザ定義ファイル] /var/lib/gridstore/conf/password
    $ gs_startnode
    $ gs_joincluster -c clsA  -n XX -u admin/admin
    

5.5.2 管理ユーザの削除

  • コマンド
    gs_deluserユーザ名

【メモ】

  • OSユーザgsadmで実行してください。
  • 管理ユーザの削除を行った場合は、コマンド実行したノードのユーザ定義ファイルを全ノードに配布し、クラスタを停止してノードの再起動、クラスタの再構成を行ってください。

【例】

  • 指定した管理ユーザ(gs#someone)を削除します。
    $ gs_deluser gs#someone
    $ gs_stopcluster -u admin/admin  
    全てのノードで以下を実施
    $ gs_stopnode -u admin/admin
    $ cp [ユーザを削除したユーザ定義ファイル] /var/lib/gridstore/conf/password
    $ gs_startnode
    $ gs_joincluster -c clsA  -n XX -u admin/admin
    

5.5.3 パスワード変更

  • コマンド
    gs_passwdユーザ名
    [-p|--password パスワード]
  • オプション
    オプション説明
    ユーザ名パスワードを変更する管理ユーザ名を指定します。
    -p|--password パスワード管理ユーザのパスワードを指定します。省略時は対話的にパスワードを入力するためのプロンプトが表示されます。

【メモ】

  • OSユーザgsadmで実行してください。
  • パスワードは登録の際に暗号化されます。
  • 管理ユーザのパスワード変更を行った場合は、コマンド実行したノードのユーザ定義ファイルを全ノードに配布し、クラスタを停止してノードの再起動、クラスタの再構成を行ってください。

【例】

  • 指定した管理ユーザ(「ユーザ名(gs#someone)」)のパスワードを(foobarxyzに)変更します。
    $ gs_passwd -p foobarxyz gs#someone 
    $ gs_stopcluster -u admin/admin  
    全てのノードで以下を実施
    $ gs_stopnode -u admin/admin
    $ cp [変更したユーザ定義ファイル] /var/lib/gridstore/conf/password
    $ gs_startnode
    $ gs_joincluster -c clsA  -n XX -u admin/admin
    

5.6 クラスタ管理

5.6.1 クラスタ構成への参加

GridDBクラスタにノードを参加させてクラスタを構成します。

  • コマンド
    gs_joincluster[-c|--clusterName クラスタ名]
    [-n|--nodeNum 構成ノード数]
    [-w|--wait [秒数]]
    [-s サーバ[:ポート番号]| -p ポート番号]
    -u ユーザ名/パスワード
  • オプション
    オプション説明
    -c|--clusterName クラスタ名クラスタ名を指定します。デフォルトは、"defaultCluster"です。
    -n|--nodeNum 構成ノード数構成するクラスタのノード数を指定します。デフォルトは、1(シングルノード構成)です。

【メモ】

  • クラスタ名はデフォルト以外の名前を指定することを推奨します。
  • クラスタ定義ファイルのクラスタ名( /cluster/clusterName )が設定されている場合、指定したクラスタ名が設定した値と一致しないとエラーとなります。
  • 安定状態のクラスタに新たにノードを参加させる場合は、クラスタへのノード増設コマンド(gs_appendcluster)を実行してください。
  • ノードへの参加をある特定のマシンから行ってクラスタを構成する際、構成完了の待合わせを行う場合は、最後に参加させるノードに-w オプションを指定してください。
  • 大規模な拡張を行いたい場合は、一旦クラスタを停止させた後で、構成ノード数に拡張後のノード数を指定してクラスタを再構成してください。

【例】ノードA〜C 3台でクラスタ名「example_three_nodes_cluster」のクラスタを構成する。

  • クラスタを構成する各ノードで、ノードの起動およびノードへの参加を行います。
    ノードAで実行
    $ gs_startnode
    $ gs_joincluster -c example_three_nodes_cluster -n 3 -u admin/admin -w
    ノードBで実行
    $ gs_startnode
    $ gs_joincluster -c example_three_nodes_cluster -n 3 -u admin/admin -w
    ノードCで実行
    $ gs_startnode
    $ gs_joincluster -c example_three_nodes_cluster -n 3 -u admin/admin -w
    
  • ノードの起動は各ノードから行い、ノードへの参加はある特定のノードから行います。
    ノードA〜Cそれぞれで実行
    $ gs_startnode
    ノードAで実行
    $ gs_joincluster -c example_three_nodes_cluster -n 3 -s ノードBのサーバアドレス -u admin/admin
    $ gs_joincluster -c example_three_nodes_cluster -n 3 -s ノードCのサーバアドレス -u admin/admin
    $ gs_joincluster -c example_three_nodes_cluster -n 3 -u admin/admin -w
    

5.6.2 クラスタ構成からの離脱

ノードをクラスタから離脱させます。 

  • コマンド
    gs_leavecluster[-f|--force]
    [-w|--wait [秒数]]
    [-s サーバ[:ポート番号]| -p ポート番号]
    -u ユーザ名/パスワード
  • オプション
    オプション説明
    -f|--force強制的にノードを離脱させます。

【メモ】

  • シングルノード構成のクラスタのクラスタ停止には、クラスタ停止コマンド(gs_stopcluster)を使用してください。
  • データをロストする恐れがある場合、ノードをクラスタから離脱させることはできません。
    • --force オプションを指定すると強制的にクラスタから離脱させます。 安全にクラスタを離脱させるためには、一度クラスタを停止してください。
  • ノードを離脱させることで有効ノード数が構成ノード数の過半数に満たなくなる場合、クラスタは停止します。

【例】

  • 離脱させたいノードでクラスタ離脱コマンドを実行します。
    $ gs_leavecluster -u admin/admin
    

5.6.3 クラスタの全停止

クラスタを停止します。 

  • コマンド
    gs_stopcluster[-w|--wait [秒数]]
    [-s サーバ[:ポート番号]|-p ポート番号]
    -u ユーザ名/パスワード

【メモ】

  • クラスタが完全に停止したことを確認する場合は、クラスタを構成していた全ノードの状態を確認してください。
  • 稼働していないクラスタから離脱する場合は、クラスタ離脱コマンド(gs_leavecluster)を使用してください。

【例】

  • クラスタ停止コマンドを実行します。
    $ gs_stopcluster -u admin/admin
    

5.6.4 クラスタ構成情報取得

クラスタ構成情報(クラスタに参加しているノードの一覧情報)を取得します。 

  • コマンド
    gs_config[-s サーバ[:ポート番号]| -p ポート番号]
    -u ユーザ名/パスワード
    [-a|--address-type アドレス種別]
  • オプション
    オプション説明
    -a|--address-type アドレス種別表示するアドレス、ポートのサービス種別を指定する
     system : 運用コマンドの接続アドレス
     cluster : クラスタ管理のために使用する受信アドレス
     transaction : トランザクション処理の受付アドレス
     sync : 同期処理のために使用する受信アドレス

【メモ】

  • "master"(マスタノード)、"follower"(フォロワノード)、"self"(コマンドを実行したノード)のアドレスとポート情報が表示されます。
  • "multicast"にはクライアントへのマルチキャスト用アドレスとポート情報が表示されます。
  • システム状態(status)は、以下のいずれかになります。
    • INACTIVE : 停止
    • ACTIVATING : 稼働開始
    • ACTIVE : 稼働
    • DEACTIVATING : 停止開始
    • ABNORMAL : 異常停止
    • NORMAL_SHUTDOWN : 通常終了開始

【例】

  • クラスタが3台のノードで構成されている場合、マスタからクラスタ構成情報取得を行うと以下のような出力となります。
    $ gs_config -u admin/admin
    {
        "follower": [                       // [array] フォロワ情報
            {
                "address": "192.168.11.10", //  [string] 運用コマンドの接続アドレス
                "port": 10040               //  [number] 運用コマンドの接続ポート
            },
            {
               "address": "192.168.11.11",
               "port": 10040
            }
        ],
        "master": {                         // マスタ情報
            "address": "192.168.11.12",     //  [string] 運用コマンドの接続アドレス
            "port": 10040                   //  [number] 運用コマンドの接続ポート
        },
        "multicast": {                      // マルチキャスト情報
            "address": "239.0.0.20",        //  [string] クライアントへのマルチキャスト用アドレス
            "port": 31999                   //  [number] クライアントへのマルチキャスト用ポート
        },
        "self": {                           // 自ノード情報
            "address": "192.168.11.12",     //  [string] 運用コマンドの接続アドレス
            "port": 10040,                  //  [number] 運用コマンドの接続ポート
            "status": "ACTIVE"              //  [string] システム状態
        }
    }
    

5.6.5 クラスタ情報取得

クラスタ情報(クラスタ構成情報および内部情報)、または、バックアップ進捗状況を取得します。

  • コマンド
    gs_stat[-t|--type タイプ]
    [-a|--address-type アドレス種別]
    [--member]
    [-s サーバ[:ポート番号]|-p ポート番号]
    -u ユーザ名/パスワード
  • オプション
    オプション説明
    -t|--type タイプ指定されたタイプの情報を表示します。
     backup:バックアップ状態を表示
    -a|--address-type アドレス種別表示するアドレス、ポートのサービス種別を指定します。
     system : 運用コマンドの接続アドレス
     cluster : クラスタ管理のために使用する受信アドレス
     transaction : トランザクション処理の受付アドレス
     sync : 同期処理のために使用する受信アドレス
    --memberクラスタ構成方式が固定リスト方式またはプロバイダ方式のとき、ノードが現在認識しているクラスタ構成メンバのアドレスリストを表示します。

【メモ】

  • クラスタ状態(/cluster/clusterStatus)は、以下のいずれかになります。
    • MASTER  : マスタ
    • SUB_MASTER : サブマスタ
    • FOLLOWER : フォロワ
    • SUB_FOLLOWER : サブフォロワ
    • SUB_CLUSTER  : クラスタが稼働していない
  • システム状態(/cluster/nodeStatus)は、以下のいずれかになります。
    • INACTIVE : 停止
    • ACTIVATING : 稼働開始
    • ACTIVE : 稼働
    • DEACTIVATING : 停止開始
    • ABNORMAL : 異常停止
    • NORMAL_SHUTDOWN : 通常終了開始
  • バックアップ状態(/checkpoint/mode)は、実行中もしくは最後に実行されたバックアップの処理名が表示されます。
    • - : 完了もしくは未稼働
    • NORMAL_CHECKPOINT : 自動チェックポイント
    • REQUESTED_CHECKPOINT : 強制チェックポイント
    • BACKUP  : フルバックアップ
    • RECOVERY_CHECKPOINT : チェックポイント(リカバリ時)
    • SHUTDOWN_CHECKPOINT : チェックポイント(シャットダウン時)
    • INCREMENTAL_BACKUP_LEVEL_0: 差分・増分バックアップのベースライン
    • INCREMENTAL_BACKUP_LEVEL_1_CUMULATIVE : 差分バックアップ
    • INCREMENTAL_BACKUP_LEVEL_1_DIFFERENTIAL : 増分バックアップ

【例】

  • 稼働しているクラスタに参加しているノードでクラスタ情報取得を行うと以下のような出力となります。
    $ gs_stat -u admin/admin
    {
            :
            :
        "cluster": {
            "activeCount": 1,
            "clusterName": "defaultCluster",
            "clusterStatus": "MASTER",
            "designatedCount": 1,
            "loadBalancer": "ACTIVE",
            "master": {
                "address": "192.168.10.11",
                "port": 10010
            },
            "nodeList": [
                {
                    "address": "192.168.10.11",
                    "port": 10010
                }
            ],
            "nodeStatus": "ACTIVE",
            "partitionStatus": "NORMAL",
            "startupTime": "2014-08-29T09:56:20+0900",
            "syncCount": 3
        },
            :
            :
    }
    

5.6.6 クラスタへのノード増設

稼働中のクラスタに新たにノードを増設します(追加します)。 

  • コマンド
    gs_appendcluster--cluster サーバ:ポート番号
    [-w|--wait [秒数]]
    [-s サーバ[:ポート番号] | -p ポート番号]
    -u ユーザ名/パスワード
  • オプション
    オプション説明
    --cluster サーバ:ポート番号増設対象のクラスタに参加しているノードのサーバ名(アドレス)とポート番号を指定します。

【メモ】

  • クラスタが稼働中で、安定状態(有効ノード数=構成ノード数)のときのみ動作します。
  • 大規模な拡張を行いたい場合は、一旦クラスタを停止させた後で、構成ノード数に拡張後のノード数を指定してクラスタを再構成してください。
  • 稼働中のシングルノード構成のクラスタを拡張する場合、一旦クラスタを停止させた後で、クラスタの再構成を行ってください。

【例】

  • 稼働中のクラスタに新たにノードを追加します。
    追加対象のクラスタの状態を確認
    $ gs_stat -s 192.168.33.29:10040  -u admin/admin
    {
            :
        "cluster":{                                 //クラスタ関連
            "activeCount":5,                        //有効ノード数
            "clusterName":"function_1",             //クラスタ名
            "clusterStatus":"MASTER",               //クラスタ状態
            "designatedCount":5,                    //構成ノード数
            :
    }
    構成ノード=有効ノード数であることを確認
    構成ノード数>有効ノード数の場合、gs_joincluster(クラスタ構成への参加)を実行
    
    追加したいノードを起動し、稼働中のクラスタに参加しているノードのサーバアドレスおよびポート番号を指定
    $ gs_startnode
    $ gs_appendcluster --cluster 192.168.33.29:10040 -u admin/admin
    
    クラスタに追加できているか、クラスタの状態を確認
    $ gs_stat  -u admin/admin
    {
            :
        "cluster":{                                 //クラスタ関連
            "activeCount":6,                        //有効ノード数
            "clusterName":"function_1",             //クラスタ名
            "clusterStatus":"MASTER",               //クラスタ状態
            "designatedCount":6,                    //構成ノード数
            :
    }
    

5.6.7 クラスタの手動フェイルオーバー

GridDBクラスタのフェイルオーバーを実行します。

  • コマンド
    gs_failovercluster[--repair]
    [-s サーバ[:ポート番号] | -p ポート番号]
    -u ユーザ名/パスワード
  • オプション
    オプション説明
    --repairデータロストを許容して強制的にフェイルオーバーを実行します。

【メモ】

  • クラスタが稼働中のときのみ実行可能です。
  • 基本的にはクラスタアルゴリズムの通常処理として実行されるので、以下の場合に有効です。
    • ユーザがクラスタ異常を検知し、即時フェイルオーバーを実行する。
    • バックアップデータからのデータリカバリ終了後、クラスタが保持するパーティションのLSNが最終更新LSNより若い番号でも、データベースリカバリ完了とみなしてシステムを起動する。(データロストを許容する。)

【例】

  • クラスタのフェイルオーバーを実行します。
    $ gs_failovercluster -u admin/admin
    

5.6.8 パーティション情報取得

GridDBノードのパーティション情報を表示します。

  • コマンド
    gs_partition[-n|--partitionId パーティションID]
    [--loss]
    [-a|--address-type アドレス種別]
    [-s サーバ[:ポート番号] | -p ポート番号]
    -u ユーザ名/パスワード
  • オプション
    オプション説明
    -n|--partitionId パーティションID情報を表示するパーティションIDを指定します。(省略時は全ての情報を表示)
    --loss欠損パーティションの情報のみ表示します。
    -a|--address-type アドレス種別表示するアドレス、ポートのサービス種別を指定する
     system : 運用コマンドの接続アドレス
     cluster : クラスタ管理のために使用する受信アドレス
     transaction : トランザクション処理の受付アドレス
     sync : 同期処理のために使用する受信アドレス

【メモ】

  • --loss オプションは、クラスタが稼働中のときのみ利用できます。
  • 欠損パーティションとは、レプリカを保有するパーティションを含め、アクセスできないパーティションを示します。

【例】

  • 稼働中のクラスタの特定のノードのパーティション情報を取得します。
    $ gs_partition -u admin/admin
    [
        {
            "backup": [],
            "catchup": [],
            "maxLsn": 300008,
            "owner": {
                "address": "192.168.11.10",
                "lsn": 300008,
                "port": 10010
            },
            "pId": "0",
            "status": "ON"
        },
            :
    ]
    

5.6.9 クラスタ構成ノード数の拡張

GridDBクラスタの構成ノード数を拡張します。

  • コマンド
    gs_increasecluster[-s サーバ[:ポート番号] | -p ポート番号]
    -u ユーザ名/パスワード

【メモ】

  • クラスタが稼働中で、安定状態(有効ノード数=構成ノード数)のときのみ動作します。従って、稼動しているクラスタへノードを増設する場合は、1台ずつ増設する必要があります。
  • 大規模な拡張を行いたい場合は、一旦クラスタを停止させた後で、初期構成ノード数に拡張後のノード数を指定してクラスタを再構成してください。
  • このコマンドによってクラスタが拡張された際に、増設対象のノードがある場合は、そのノードがクラスタに参加します。増設対象のノードが複数ある場合は、いずれかのノードがクラスタに参加します。
  • 増設対象のノードがない状態で、このコマンドによってクラスタが拡張された後で増設対象のノードを指定した場合は、そのノードがクラスタに参加します。
  • シングルノード構成のクラスタを稼働中に拡張することはできません。一旦クラスタを停止させた後で、クラスタを再構成してください。

【例】

  • クラスタ構成ノード数を拡張して、クラスタにノードを増設します。
    ノードを増設したいクラスタの状態を確認
    $ gs_stat -s 192.168.33.29:10040  -u admin/admin
    {
            :
        "cluster":{                                 //クラスタ関連
            "activeCount":5,                        //有効ノード数
            "clusterName":"function_1",             //クラスタ名
            "clusterStatus":"MASTER",               //クラスタ状態
            "designatedCount":5,                    //構成ノード数
            :
    }
    構成ノード=有効ノード数であることを確認
    
    増設したいノードを起動し、増設後のノード数(6)を指定して、
    gs_joincluster(クラスタ構成への参加)を実行(増設対象に指定)
    $ gs_startnode -u admin/admin -w
    $ gs_joincluster -u admin/admin -c function_1 -n 6
    
    ノードを増設したいクラスタに対して、gs_increasecluster(クラスタ構成ノード数の拡張)を実行
    $ gs_increasecluster -s 192.168.33.29:10040 -u admin/admin
    
    増設対象のノードがクラスタに追加できているか、クラスタの状態を確認
    $ gs_stat  -u admin/admin
    {
            :
        "cluster":{                                 //クラスタ関連
            "activeCount":6,                        //有効ノード数
            "clusterName":"function_1",             //クラスタ名
            "clusterStatus":"MASTER",               //クラスタ状態
            "designatedCount":6,                    //構成ノード数
            :
    }
    

5.7 ログ情報

5.7.1 ログの表示

直近のGridDBのイベントログを取得します。 

  • コマンド
    gs_logs[-l|--lines 取得行数]
    [-g|--ignore 除外キーワード]
    [-s サーバ[:ポート番号] | -p ポート番号]
    -u ユーザ名/パスワード
    [第一キーワード [第二キーワード]]
  • オプション
    オプション説明
    -l|--lines 取得行数取得行数を指定します。
    -g|--ignore 除外キーワード除外キーワードを含む行を無視します。
    第一キーワード [第二キーワード]キーワードを含む行のみ取得します。

【メモ】

  • イベント情報は、以下のような形式で出力されます。
    • 時刻、マシン名、スレッド番号、イベント種別、イベントカテゴリ、発生ソースファイル名、発生メソッド、発生行数 : 後は任意の文字列
  • 詳細については、サポート窓口にお問い合わせください。

【例】

  • チェックポイントが終了したログを3回分取得します。
    $ gs_logs -u admin/admin CP_END -l 3
    2014-08-04T11:02:52.754+0900 NODE1 1143 INFO CHECKPOINT_SERVICE ../server/checkpoint_service.cpp void CheckpointService::runCheckpoint(EventContext&, int32_t, const std::string&) line=866 : [CP_END] mode=NORMAL_CHECKPOINT, backupPath=, commandElapsedMillis=132
    2014-08-04T11:22:54.095+0900 NODE1 1143 INFO CHECKPOINT_SERVICE ../server/checkpoint_service.cpp void CheckpointService::runCheckpoint(EventContext&, int32_t, const std::string&) line=866 : [CP_END] mode=NORMAL_CHECKPOINT, backupPath=, commandElapsedMillis=141
    2014-08-04T11:42:55.433+0900 NODE1 1143 INFO CHECKPOINT_SERVICE ../server/checkpoint_service.cpp void CheckpointService::runCheckpoint(EventContext&, int32_t, const std::string&) line=866 : [CP_END] mode=NORMAL_CHECKPOINT, backupPath=, commandElapsedMillis=138
    

5.7.2 イベントログ出力レベル表示と変更

イベントログ出力レベルの表示または変更します。引数指定なしの場合は設定一覧を取得します。 

  • コマンド
    gs_logconf[-s サーバ[:ポート番号]|-p ポート番号]
    -u ユーザ名/パスワード
    [カテゴリ名 出力レベル]
  • オプション
    オプション説明
    カテゴリ名  出力レベルログ出力レベルを変更したいカテゴリのカテゴリ名と出力レベルを指定します。

【メモ】

  • イベントログの出力レベルの一覧を表示する場合は、[カテゴリ 出力レベル]を省略して実行します。
  • 出力されるログ情報は、指定した出力レベルよりも高い出力レベルのログがすべて出力されます。例えば、INFOを設定した場合は、INFO、WARNING、ERRORのログが出力されます。
  • 出力レベルの一覧はレベルが高いものから低いものの順に以下のとおりとなります。
    • ERROR : エラー
    • WARNING : 警告
    • INFO : 情報
    • DEBUG : デバッグ
  • ノードをシャットダウンした場合、コマンド実行により変更した設定は保存されません。
  • ログ出力レベルは雛形のgs_node.jsonに記載されているデフォルトか、それより低いレベルを設定することを推奨しています。デフォルトは付録のパラメータ一覧を参照ください。

【例】

  • ログの出力レベルを変更し、イベントログの状態を表示します。
    $ gs_logconf -u admin/admin CHUNK_MANAGER INFO
    $ gs_logconf -u admin/admin
    {
        "levels": {
            "CHECKPOINT_SERVICE": "INFO",
            "CHECKPOINT_SERVICE_DETAIL": "ERROR",
            "CHUNK_MANAGER": "INFO",
            "CLUSTER_OPERATION": "INFO",
          :
          :
        }
    }
    

5.8 バックアップ/リストア

5.8.1 バックアップ

サービスを継続しながら、GridDBのバックアップをノード単位で取得します。

クラスタを構成する全ノードに対して順次行うことで、サービスを継続しながら、クラスタ全体としてのバックアップが行えます。

  • コマンド
    gs_backup[--mode モード]
    -u ユーザ名/パスワード
    バックアップ名
  • オプション
    オプション説明
    --mode モードバックアップモードを指定します。
    - auto : 自動バックアップ
    - auto_nostop : 自動バックアップ(エラー時にノード停止無し)
    - baseline : 差分・増分バックアップのベースラインのフルバックアップを作成
    - since :ベースライン作成後、更新されたデータブロックをベースラインからの差分バックアップ
    - incremental:ベースライン作成後、もしくは前回のincremental、sinceバックアップ後に更新されたデータブロックの増分バックアップ。
    バックアップ名バックアップデータのディレクトリ名を指定します。

<mode オプション>

  auto

データ更新のログファイルが自動的にバックアップディレクトリにコピーされるため、利用者がバックアップを行う必要はありません。ただし、ログファイルの採取によるバックアップのため、障害発生時のリカバリに時間がかかる場合があります。定期的に全バックアップを行うことをお勧めします。

  auto_nostop

バックアップ側のログ出力でエラーが発生した場合でも、トレースログ出力を行い、二重化出力を停止しますが、ノードを停止しません。auto_nostopを指定していない場合は、システムエラーとしてノードを停止します。

  baseline

バックアップデータのベースラインを作成します。差分バックアップではベースラインからの更新の差分データをバックアップします。

  since

baselineを指定したバックアップ実行後、更新が発生したデータをバックアップします(差分バックアップ)。

  incremental

baselineを指定したバックアップ実行後、もしくは前回のincremental、sinceバックアップ実行後に、更新されたデータブロックをバックアップします(増分バックアップ)。

バックアップ

【メモ】

  • バックアップ名は、英数字12文字までで設定します。
  • バックアップの詳細については、『GridDB バックアップガイド』(GridDB_BackupGuide.html)を参照ください。
  • バックアップファイルは、ノード定義ファイル(gs_node.json)で指定されたバックアップファイルディレクトリの下に作成されます。バックアップファイルはデータディレクトリとは別の物理ストレージを指定することをお勧めします。
  • GridDBのクラスタデータベースを正しい状態にリストアする場合、バックアップとリストアの作業をクラスタ全体で行う必要があります。
  • コマンド実行後、制御が戻りますが、データ規模、オンライン処理負荷により、バックアップ完了まで数時間以上かかる場合があります。バックアップの進捗状況は、gs_statコマンドで取得できます。
  • クラスタ稼働中にバックアップを実行すると、コンテナを複数作成している場合には、クラスタ全体として不整合な状態でバックアップが作成される可能性があります。必要に応じて、トランザクションサービスを禁止し、静止状態でバックアップを実行するようにしてください。
  • GridDBでは、障害が発生した場合、自動的にデータ再配置が行われます。そのため、バックアップ中に障害が発生した場合は、再度、1台目のノードからバックアップを取り直してください。

【例】

  • 起動中のノードでバックアップを実行します。
    バックアップファイルが保管されるディレクトリ(バックアップディレクトリ)を確認
    $ cat /var/lib/gridstore/conf/gs_node.json         # 設定の確認
    {
        "dataStore":{
            "dbPath":"/var/lib/gridstore/data",
            "backupPath":"/var/lib/gridstore/backup",  # バックアップディレクトリ
            "storeMemoryLimit":"1024MB",
            "concurrency":1,
            "logWriteMode":1,
            "persistencyMode":"NORMAL"
          :
          :
    }
    バックアップを実行
    $ gs_backup -u admin/admin 20150425        # バックアップの実行
    
    データ規模や負荷状態により、バックアップ完了まで数時間以上かかる場合があります。
    バックアップの進捗状況を、gs_statコマンドで確認
    $ gs_stat -u admin/admin --type backup        
    BackupStatus: Processing                          # バックアップの実行中
    
  • gs_statで出力されるバックアップ状態(BackupStatus)は、以下のいずれかになります。
    • Processing : フルバックアップ実行中
    • Processing(Baseline) : 差分・増分バックアップのベースライン作成中(フルバックアップ)
    • Processing(Since) : 差分バックアップ中
    • Processing(Incremental)増分バックアップ中
    • - : 完了もしくは未稼働
  • バックアップを実行すると、以下のファイルが作成されます。
    • バックアップディレクトリ( /var/lib/gridstore/backup )の下に、BACKUPNAMEに指定した ディレクトリが作成されます。なお、差分・増分バックアップの際は、BACKUPNAME_lv0 ( 差分・増分バックアップのベースラインディレクトリ)、BACKUPNAME_lv1_NNN_MMM( 差分・増分バックアップの差分(Since)と増分(Incremental)のディレクトリ)が作成されます。
    • 以下のバックアップファイル群が作成されます。
      • チェックポイントファイル(gs_cp_n_p.dat)
      • トランザクションログファイル(gs_logs_n_m.log)
      • バックアップ情報ファイル(gs_backup_info.json,gs_backup_info_digest.json)
      • LSN情報ファイル(gs_lsn_info.json)

5.8.2 バックアップデータ確認

ノード定義ファイル(gs_node.json)で設定されているバックアップディレクトリにあるバックアップデータの一覧を取得します。 

  • コマンド
    gs_backuplist[-s サーバ[:ポート番号]|-p ポート番号]
    -u ユーザ名/パスワード
    [--partitionId パーティションID|バックアップ名]
  • オプション
    オプション説明
    --partitionId パーティションID指定したパーティションのLSN情報を一覧表示します。
    バックアップ名バックアップ名を指定します。

【メモ】

  • バックアップデータの一覧は、ノードの起動状態に関わらず表示できます。ノードが起動状態で、バックアップ処理中の場合はStatusは"P"と表示されます。
  • Statusが"NG"と表示される場合、そのバックアップファイルはファイルが破損している可能性があるため、リストアすることはできません。
  • 一覧表示でバックアップ名の先頭に"*"印があるものは、差分・増分バックアップデータです。
  • 差分・増分バックアップのステータスは、常に"-"と表示されます。差分・増分バックアップで採取した複数のバックアップをバックアップ名を指定した詳細情報で確認できます。

【例】

  • バックアップデータの一覧を確認したいノードで、バックアップデータの確認を実行します。
    
    バックアップ名の一覧を表示します。
    $ gs_backuplist -u admin/admin
    
    BackupName   Status   StartTime                EndTime
    ------------------------------------------------------------------------
    *201504          --  2015-04-01T05:20:00+0900 2015-04-24T06:10:55+0900
    *201503          --  2015-03-01T05:20:00+0900 2015-04-24T06:05:32+0900
      :
     20141025NO2     OK   2014-10-25T06:37:10+0900 2014-10-25T06:37:10+0900
     
     
    個別のバックアップ名を指定し、詳細情報を表示します。
    $ gs_backuplist -u admin/admin 201504
     
    BackupName : 201504
    
    BackupData            Status   StartTime                EndTime
    --------------------------------------------------------------------------------
    201504_lv0                OK  2015-04-01T05:20:00+0900 2015-04-01T06:10:55+0900
    201504_lv1_000_001        OK  2015-04-02T05:20:00+0900 2015-04-01T05:20:52+0900
    201504_lv1_000_002        OK  2015-04-03T05:20:00+0900 2015-04-01T05:20:25+0900
    201504_lv1_000_003        OK  2015-04-04T05:20:00+0900 2015-04-01T05:20:33+0900
    201504_lv1_000_004        OK  2015-04-05T05:20:00+0900 2015-04-01T05:21:15+0900
    201504_lv1_000_005        OK  2015-04-06T05:20:00+0900 2015-04-01T05:21:05+0900
    201504_lv1_001_000        OK  2015-04-07T05:20:00+0900 2015-04-01T05:22:11+0900
    201504_lv1_001_001        OK  2015-04-07T05:20:00+0900 2015-04-01T05:20:55+0900 
    
    
    パーティションの保持するデータのLSN番号を調べる場合。
    $ gs_backuplist -u admin/admin --partitionId=68
     BackupName      ID   LSN
    ---------------------------------------------------------------------------------
    *201504          68   81512
    *201503          68   2349
     20140925        68   0
    
    

5.8.3 リストア

GridDBのバックアップファイルをリストアします。

  • コマンド
    gs_restore[--test] バックアップ名
  • オプション
    オプション説明
    --testリストアは行わず、リストアで利用するバックアップの情報を取得します。
    バックアップ名リストアするバックアップファイルのディレクトリ名を指定します。

【メモ】

  • リストアする場合は、ノードを停止させる必要があります。
  • クラスタ定義ファイルの、パーティション数と処理並列度のパラメータ値には注意してください。バックアップしたノードの設定値とリストアするノードの設定値は同一にしてください。同一でないと正しくノードが起動できません。
  • バックアップした状態を正しくリストアしたい場合、バックアップ、リストアの作業をクラスタ全体で行う必要があります。
  • 仮に、一部ノードをリストアしたとしても、それらノードをバックアップ時点の状態に戻すことはできません。リストア後、データを利用するためには稼働中のクラスタに参加させる必要がありますが、バックアップ後にクラスタでデータ更新されていた場合には、リストアしたデータはクラスタの(更新された)データで更新されてしまいます。 特に、バックアップを作成した時点からクラスタの構成が変化している場合には、リストアの効果がありません。そのノードをクラスタに参加させると自律的にデータを再配置するので、リストアしても高い確率でデータが無効になります。
  • バックアップ情報ファイルの情報が欠けている場合、または内容を改変した場合は、GridDBノードはサービスを開始できません。
  • リストア途中でシグナル(Ctrl+C)を送信して処理を中断した場合、リストア途中のデータは削除されます。

【例】

  • バックアップデータをリストアします。リストアを実行するノードが停止した状態で実行します。
      
    データベースファイルディレクトリ内のファイルを移動
    データベースファイルディレクトリは、ノード定義ファイル(gs_node.json)で指定
    $ mv ${GS_HOME}/data/*.{dat,log} ${GS_HOME}/temp    # データベースファイルの移動
    
    
    リストア前にリストアされるデータの確認
    $ gs_restore --test 20150424
    
    BackupName : 20150424
    BackupFolder : /var/lib/gridstore/data/backup
    
    RestoreData           Status   StartTime                EndTime
    --------------------------------------------------------------------------------
    201504_lv0 
    201504_lv1_001_001        OK  2015-04-07T05:20:00+0900 2015-04-01T05:20:55+0900
    
    
    リストアの実行
    $ gs_restore 20150424                       # リストア
    
    
  • この例では、リストアを実行すると、バックアップディレクトリ( /var/lib/gridstore/backup )の下にある、201504_lv0ディレクトリから、バックアップファイル群をデータディレクトリ( /var/lib/gridstore/data )にコピー後、同様に201504_lv1_001_001のデータもコピーします。
  • リストア完了後、リストアしたノードを通常の起動と同じ手順で起動し、クラスタへ参加させてください。
  • 起動後、リストアで配置されたデータベースファイル(バックアップファイル群)を読み込み、読み込み完了後、GridDBノードはサービスを開始します。

5.9 保守

5.9.1 パラメータ表示と変更

ノードのパラメータの表示または変更を行います。

  • コマンド
    gs_paramconf[-s サーバ[:ポート番号]|-p ポート番号]
    -u ユーザ名/パスワード
    --show [パラメータ名] | --set パラメータ名 値
  • オプション
    オプション説明
    --show [パラメータ名]指定したパラメータを表示します。パラメータを指定しなかった場合は、全パラメータの一覧が表示されます。
    --set パラメータ名 値指定したパラメータを指定した値に変更します。

【メモ】

  • パラメータの変更(--set)は、稼働しているノードのパラメータ値を動的に変更します。ノードをシャットダウンした場合、コマンド実行により変更した設定は保存されません。
  • 指定できるパラメータは、以下の2つです。
    • storeMemoryLimit  : ストアメモリの上限
    • checkpointMemoryLimit : チェックポイントメモリの上限
  • パラメータのデータ型など、詳細はパラメータ一覧を参照ください。

【例】

  • パラメータ storeMemoryLimit を変更して、値を表示します。
    $ gs_paramconf -u admin/admin --set storeMemoryLimit 2048MB
    $ gs_paramconf -u admin/admin --show storeMemoryLimit
    {
        "module": "dataStore",
        "paramName": "storeMemoryLimit",
        "paramValue": 2048MB
    }
    

6 エクスポート/インポート

GridDBの エクスポート/インポート ツールでは、データベースの局所的な破壊に対して復旧を行う障害回復処理や、システム構成が変更された際のデータベースの移行(マイグレーション)処理などを実現するために、データベースやコンテナ単位での保存/復元機能を提供します。

また、RDBとの連携機能もあり、RDBのデータを収集してGridDBに登録することもできます。

6.1 概要

GridDBクラスタでは、コンテナデータをクラスタ内のノードに自動的に配置します。利用者は、どのノードにデータが配置されているかを意識する必要はありません(データの位置透過)。

エクスポート/インポートでも、データの取り出し・登録で配置位置を意識する必要はありません。エクスポート/インポートの構成は以下のとおりです。

エクスポート/インポートの構成

エクスポート/インポートの構成

【エクスポート(export)】

① GridDBクラスタのコンテナおよびロウデータを、以下のファイルに保存します。コンテナ名を指定して特定コンテナのみエクスポートすることもできます。

  • コンテナデータファイル
    • GridDBのコンテナ情報とロウデータを保存します。
    • コンテナ単位に保存する形式と複数コンテナをまとめて保存する形式の2種類があります。
  • エクスポート実行情報ファイル
    • エクスポート実行時の情報を保存します。エクスポートしたデータを、そのままGridDBクラスタに復元するために必要です。

 ※詳細は、「 コンテナデータファイルとは 」、「 エクスポート実行情報ファイルとは 」の各節を参照ください。

【インポート(import)】

② エクスポートデータを保存したコンテナデータファイルとエクスポート実行情報ファイルを読み込んで、コンテナおよびロウデータをGridDBに復元します。特定のコンテナデータを指定して、インポートすることもできます。

③ ユーザが作成したコンテナデータファイルを読み込んで、コンテナとロウデータを登録します。

④ RDB(Oracle)データを読み込んで、RDBのテーブルからGridDBのコンテナにデータを対応付けて登録します。

【メモ】

  • エクスポートしたコンテナデータファイルとユーザが作成するコンテナデータファイルは同じフォーマットです。

6.1.1 コンテナデータファイルとは

コンテナデータファイルは、コンテナ情報を記載した メタデータファイル と、コンテナに格納するデータを記載した ロウデータファイル からなります。

メタデータファイルは、コンテナのタイプや、スキーマ、設定されている索引やトリガの情報を含むjson形式のファイルです。

ロウデータファイルには、コンテナの格納データをCSV形式で記載する CSVデータファイル と、zip形式で記載する バイナリデータファイル の2種類があります。

  • CSVデータファイル:
    • コンテナのロウデータをCSVデータとして記載します。可読性が高く、汎用ツールでファイルを読み込んで編集することが可能です。
    • ロウデータがBLOBや空間情報、配列などの特定の型の場合には、外部オブジェクトファイルにデータを記載し、CSVデータファイルには外部オブジェクトファイル名のみ記載します。外部オブジェクトファイルは、ロウデータ毎に作成します。
  • バイナリデータファイル:
    • コンテナのロウデータをZip形式で記載します。gs_exportでのみ作成が可能です。 CSVデータファイルに比べてサイズが小さくなります。また外部オブジェクトファイルを作成する必要がないため、ファイル数が少なくて済みます。ただし、バイナリデータファイルには可読性はなく編集することはできません。

各ファイルの記述内容の詳細は、コンテナデータファイルの形式を参照してください。

また、コンテナデータファイルには、記載対象となるコンテナ数によって、以下の2種類があります。

  • シングルコンテナ構成:1つのコンテナに対して1つのコンテナデータファイルを持つ
  • マルチコンテナ構成:複数のコンテナを1つのコンテナデータファイルにまとめる

以降では、各構成のコンテナデータファイルを シングルコンテナデータファイルマルチコンテナデータファイル と記載します。

コンテナデータファイル

コンテナデータファイル

シングルコンテナデータファイルで大量のコンテナを指定してエクスポートを実行すると、大量のメタデータファイルとロウデータファイルが作成されるため、管理が煩雑となります。一方、マルチコンテナデータファイルでは大量のコンテナを指定しても、出力されるのは1つのメタデータファイルとロウデータファイルのみです。

そこで、2つの構成は 用途に応じて使い分ける ことを推奨します。

シングルコンテナデータファイルは、以下のようなケースで利用します。

  • 特定コンテナの現在のデータを出力しデータ解析したい。
  • 既存のコンテナと同様のスキーマのコンテナを多数作成し、データを登録したい。

マルチコンテナデータファイルは、以下のようなケースで利用します。

  • 特定コンテナ群のバックアップを採取したい。
  • 異なるGridDBクラスタへデータベースを移行したい。

6.1.2 エクスポート実行情報ファイルとは

エクスポート実行情報ファイルには、エクスポート実行時の日時、コンテナ数、コンテナ名などの情報を保存します。このファイルはエクスポートしたデータを、そのままGridDBクラスタに復元するために必要です。

【メモ】

  • エクスポート実行情報ファイルのファイル名は、gs_export.jsonです。
  • エクスポートしたコンテナデータファイルを手動で編集した場合、エクスポート実行情報は削除してください。情報の不一致により、登録エラーが発生する可能性があります。
  • エクスポート実行情報ファイルが存在しない場合のインポートでは、コンテナのメタデータファイルの指定が必須です。指定しない場合、インポートは失敗します。
  • RDBからのインポートの場合は、エクスポート実行情報ファイルは必要ありません。

6.2 エクスポート/インポートの実行環境の設定

エクスポート/インポートコマンドを実行するには、以下の設定が必要です。

6.2.1 RPMでのパッケージインストール

エクスポート/インポート機能が含まれているクライアントパッケージおよびJavaライブラリパッケージのインストールが必要です。

【例】

# rpm -Uvh griddb-xx-client-X.X.X-linux.x86_64.rpm
準備中...                ########################################### [100%]
User and group has already been registered correctly.
GridDB uses existing user and group.
   1:griddb-xx-client          ########################################### [100%]

# rpm -Uvh griddb-xx-java_lib-X.X.X-linux.x86_64.rpm
準備中...                ########################################### [100%]
   1:griddb-xx-java_lib        ########################################### [100%]

  

6.2.2 プロパティファイルの設定

設定ファイルは、/usr/griddb/prop/gs_expimp.properties です。gsadmユーザで利用するGridDBクラスタ構成にあわせて設定します。

gs_expimp.properties には以下のような設定項目があります。

パラメータ デフォルト説明
modeMULTICAST接続方式の種類を指定します。指定を省略した場合は、マルチキャスト方式になります。
MULTICAST ・・マルチキャスト方式
FIXED_LIST・・固定リスト方式
PROVIDER ・・プロバイダ方式
hostAddress239.0.0.1GridDBのクラスタ定義ファイル(gs_cluster.json)の/transaction/notificationAddressを指定します。エクスポート・インポートツールがクラスタにアクセスする際に利用するマルチキャストアドレスです。
hostPort31999GridDBのクラスタ定義ファイル(gs_cluster.json)の/transaction/notificationPortを指定します。エクスポート・インポートツールがクラスタにアクセスする際に利用するマルチキャストアドレスのポートです。
notificationProvider.urlプロバイダ方式の接続方法を使用する場合は、クラスタ定義ファイルgs_cluster.jsonの/cluster/notificationProvider/urlを指定します。
notificationMember固定リスト方式の接続方法を使用する場合は、クラスタ定義ファイルgs_cluster.jsonの/cluster/notificationMember/transactionを指定します。addressとportを:で繋いで記述します。複数ノードの場合は、カンマで連結してください。
例)192.168.0.100:10001,192.168.0.101:10001
restAddress127.0.0.1GridDBのノード定義ファイル(gs_node.json)の/system/listenerAddressを指定します。将来の拡張用のパラメータです。
restPort10040GridDBのノード定義ファイル(gs_node.json)の/system/listenerPortを指定します。将来の拡張用のパラメータです。
clusterNamedefaultClusterクラスタ構成を組む(gs_joinclusterコマンドで指定)際に指定しているクラスタ名を指定します。
logPath/var/lib/gridstore/logエクスポート・インポートツールの実行時のエラー情報などのログを出力するディレクトリを指定します。ディレクトリ下に、gs_expimp-YYYYMMDD.log でログが出力されます。
getCount1000エクスポートでコンテナデータを取り出す際にデータを取り出す単位として、ロウ件数を指定します。数値を大きくするとデータ処理のためのバッファが大きくなります。ロウサイズが小さい場合は数値を上げ、ロウサイズが大きい場合は数値を下げてください。データエクスポートの取り出し性能に影響するパラメータです。
commitCount1000インポートでコンテナデータを登録する際にデータを登録する単位として、ロウ件数を指定します。数値を大きくするとデータ処理のためのバッファが大きくなります。ロウサイズが小さい場合は数値を上げ、ロウサイズが大きい場合は数値を下げてください。データインポートの登録性能に影響するパラメータです。
transactionTimeout2147483647トランザクション開始から終了までの時間を指定します。大量データの登録・取得時には、データ量に合わせた大きな数値を設定する必要があります。デフォルトでは、大量データ処理用に最大値が指定されています。(単位:秒)
failoverTimeout10ツールがノード障害を検知してからリトライを繰り返すフェイルオーバー時間を指定します。インポート/エクスポートの対象クラスタへの初期接続のタイムアウトにも用いられます。コンテナへの大量データ登録・取得などの処理を行う場合は、値を増やしてください。(単位:秒)
rdb.driverRDB連携用のパラメータです。JDBCドライバのパスを指定します。
rdb.kindoracleRDB連携用のパラメータです。RDBの種類 "oracle" を指定します。
rdb.hostRDB連携用のパラメータです。RDBにアクセスする際に利用するホスト名(アドレス))を指定します。
rdb.portRDB連携用のパラメータです。RDBにアクセスする際に利用するポート番号を指定します。
rdb.databaseRDB連携用のパラメータです。対象のデータベース名を指定します。
rdb.urlRDB連携用のパラメータです。RDBにアクセスする際の接続文字列を指定します。 RDB接続先には、host, port, databaseの組、または、urlを指定してください。
rdb.userRDB連携用のパラメータです。対象のデータベースにアクセスするユーザを指定します。
rdb.passwordRDB連携用のパラメータです。対象のデータベースにアクセスするユーザのパスワードを指定します。
load.input.threadNum1RDB連携用のパラメータです。RDBから収集する処理のスレッド数を指定します。 (1〜64)
load.output.threadNum1RDB連携用のパラメータです。GridDBに登録する処理のスレッド数を指定します。(1〜16)
storeBlockSize64KBGridDBクラスタで指定しているブロックサイズを指定します。ブロックサイズによりGridDBに登録できる文字列データ、バイナリデータの上限値が異なります。
maxJobBufferSize512収集・登録データを保持するバッファサイズを指定します(MB)。

【メモ】

  • GridDBをバージョンアップした場合、定義ファイル(/usr/griddb/prop/gs_expimp.properties)は新しいものになります。
    バージョンアップ時に、以下のメッセージが表示されます。
    警告: /usr/griddb-xx-X.X.X/prop/gs_expimp.properties は /usr/griddb-xx-X.X.X/prop/gs_expimp.properties.rpmsave として保存されました。
    GridDBインストールディレクトリ(/usr/griddb)として参照していたディレクトリのシンボリックリンクが新しくインストールしたディレクトリを参照するようになり、利用していた定義ファイルは、実際にファイルがあった場所(/usr/griddb-xx-X.X.X/prop)にgs_expimp.properties.rpmsaveとして保存されます。
    新たにインストールされた定義ファイル(/usr/griddb/prop/gs_expimp.properties)と、ご利用されていた定義ファイル(/usr/griddb-xx-X.X.X/prop/gs_expimp.properties.rpmsave)とを比較し、適宜反映してご利用ください。
    (X.X.Xは、バージョンアップ前にインストールしていたGridDBのバージョンになります。)

6.3 エクスポートの機能

ここではエクスポート機能を利用する際に指定できるオプションについてエクスポートの使用例を元に説明します。

6.3.1 処理対象の指定

1. コンテナの指定方法

GridDBクラスタからコンテナを取り出すには、クラスタの全コンテナを指定する方法、データベースを指定する方法、コンテナを個別に指定する方法があります。

  (1) 全てのコンテナの指定
  • クラスタ内の全てのデータベースの全てのコンテナが対象。
  • --all オプションを指定。

【例】

$ gs_export --all -u admin/admin

【メモ】

  • 一般ユーザが実行する時、一般ユーザがアクセス権を持つ全データベース内のコンテナが対象になります。
  (2) データベースの指定
  • 指定したデータベースの全てのコンテナが対象。
  • --db オプションでデータベース名を指定。複数のデータベース名を" "(ブランク)で区切って繰返し指定することも可能。

【例】

$ gs_export --db db001 db002 -u admin/admin //DB名を列挙。DB内のコンテナ

【メモ】

  • 一般ユーザが実行する時、--dbで指定したデータベースに対するアクセス権が無い場合は、エラーになります。(--forceを指定していると、処理は継続されます。)
  (3) コンテナの個別指定
  • 指定したコンテナが対象。
  • コンテナ名を列挙
    • --container オプションで複数のコンテナ名を" "(ブランク)で区切って繰返し指定。
  • コンテナ名の正規表現指定
    • --container オプションでコンテナ名の一部を指定。指定にはJavaの正規表現が利用可能。正規表現で指定する場合は""(ダブルクォーテーション)で指定を括ります。

【例】

$ gs_export --container c001 c002 -u admin/admin //コンテナ名を列挙
$ gs_export --container "^c0" -u admin/admin   //正規表現指定:コンテナ名がc0で始まるコンテナの指定
  

【メモ】

  • --container オプションでは、--prefixdb オプションで対象のデータベース名を指定します。--prefixdb オプションを省略した場合は、デフォルトの接続先データベース「public」内のコンテナが処理対象になります。
  • 一般ユーザが実行する時、--container オプションで指定したコンテナが格納されているデータベースに対するアクセス権が無い場合は、エラーになります。(--forceを指定していると、処理は継続されます。)

 

2. ロウの指定方法

コンテナからロウを取り出す検索クエリを指定することで、検索クエリにヒットするロウのみエクスポートすることができます。
検索クエリが指定されていないコンテナは、コンテナに格納されているすべてのロウがエクスポートされます。

 検索クエリの指定
  • --filterfile オプションで、コンテナ名と検索クエリを記述した定義ファイルを指定します。定義ファイルには、検索クエリを適用する対象のコンテナと、検索クエリを記述してください。

    【例】実行例

    $ gs_export -c c001 c002 -u admin/admin --filterfile filter1.txt
      
    $ gs_export --all -u admin/admin --filterfile filter2.txt
    

    【例】定義ファイルの記述

    ^cont_month     :select * where time > 100  [改行]
    ^cont_minutes_.*:select * where flag = 0    [改行]
    cont_year2014   :select * where timestamp > TIMESTAMP('2014-05-21T08:00:00.000Z') [改行]
    

【メモ】

  • コンテナは、Javaの正規表現で指定します。 例) "container1"と記述すると、container1を含むコンテナが該当します(container10, container12など)。完全一致の場合は、"^container1$"と記述してください。
  • --allや-c オプションで指定されたエクスポート対象コンテナの中で、定義ファイルに記述された定義に当てはまらないコンテナは、すべてのロウがエクスポートされます。
  • コンテナと検索クエリの区切りは":"を指定し、コンテナと検索クエリは1行で記述してください。
  • コンテナが複数の定義に該当する場合、最初に記述された定義が適用されます。
  • ファイルはUTF-8で記述してください。
  • エクスポートのテスト機能を実行すると、定義ファイルの記述が正しいかを確認することができます。
3. ユーザ・アクセス権の指定方法

GridDBクラスタのユーザやアクセス権の情報もエクスポートすることができます。クラスタ上のすべてのデータを移行する場合にご利用ください。

  • --all オプションおよび --acl オプションを指定。ただし、エクスポートできるユーザ情報は、一般ユーザのみです。管理ユーザの情報は別途移行(ユーザ定義ファイルをコピー)してください。

    【例】

    $ gs_export --all -u admin/admin --acl
      
    

【メモ】

  • 管理ユーザで実行する必要があります。

6.3.2 ロウデータファイルの出力形式の指定

ロウデータファイルの出力形式として、CSVデータファイル、もしくはバイナリデータファイルが指定できます。

 CSVデータファイルでの出力
  • --binary オプションを指定せずにエクスポートを実行します。
 バイナリデータファイルでの出力
  • --binary [ファイルサイズ上限] オプションを指定します。指定したファイルサイズ上限でバイナリデータファイルを分割してエクスポートします。ファイルサイズ上限はMbytes単位で指定します。ファイルサイズ上限の指定を省略するとサイズ上限は100Mbytesとなります。指定できる最大ファイルサイズは1,000Mbytesです。

【例】

$ gs_export -c c001 c002 -u admin/admin --binary
  
$ gs_export --all -u admin/admin --binary 500       //500Mbytesごとにバイナリデータファイルを分割
  

6.3.3 コンテナデータファイル出力構成の指定

コンテナ単位にコンテナデータファイルを作成するシングルコンテナデータファイル、もしくは全コンテナを1つのコンテナデータファイルに出力するマルチコンテナデータファイルが指定できます。

 シングルコンテナデータファイルでの出力
  • エクスポート時に--out オプションを指定しない場合、シングルコンテナデータファイルで出力されます。
 マルチコンテナデータファイルでの出力
  • --out [ファイル識別子] オプションを指定します。ファイル識別子の指定により、メタデータファイルのファイル名は「ファイル識別子_properties.json」となります。マルチコンテナデータファイルがCSVデータファイルの場合「ファイル識別子.csv」、バイナリデータファイルの場合「ファイル識別子.mc」となります。
  • --out [ファイル識別子] オプションでファイル識別子を省略した場合、日付のマルチコンテナデータファイルが作成されます。(例:20131031_155015_810_properties.json ,20131031_155015_810.csv)

【例】

$ gs_export -c c001 c002 -u admin/admin --out test
  
$ gs_export --all -u admin/admin --out           //日付でファイルが作成される
  

6.3.4 出力先の指定

コンテナデータファイルの出力先として、ディレクトリを指定できます。指定したディレクトリが存在しなかった場合にはディレクトリを作成します。ディレクトリの指定を省略した場合、コマンド実行時のカレントディレクトリにデータを出力します。出力先の指定は-d オプションを用います。

【例】

$ gs_export --all -u admin/admin --out test -d /tmp
    

【メモ】

  • 既にコンテナデータファイルが存在するディレクトリは指定できません。

6.3.5 並列実行数の指定

エクスポートツールで並列にクラスタにアクセスしてデータを取得します。クラスタが複数のノードで構成されている場合に並列実行すると、ノードごとに並列アクセスするので高速に取得することができます。

  • --parallel オプションを指定することで、指定された数で並列実行を行います。並列実行を行うと、エクスポートデータは並列実行数と同じ数で分割されます。指定範囲は、2から32までです。

    【メモ】

    • --parallel オプションは、バイナリ形式(--binary オプション)、および、マルチコンテナ形式(--out オプション)を指定した場合のみ指定できます。

    【例】

    $ gs_export --all -u admin/admin --binary --out --parallel 4
    

6.3.6 テスト実行機能

利用者がコンテナをエクスポートする前に、正しくエクスポートが行えるかを評価することができます。

 テスト実行指定
  • 通常のエクスポートコマンドの利用に対して、--test オプションを追加するだけで、エクスポートシーケンスを確認することができます。確認のみで実際の取得処理は行わないので、ファイルは作成されません。

【例】

$ gs_export -u admin/admin --all --test
エクスポートを開始します
[テストモード]
出力ディレクトリ : /var/lib/gridstore/export
対象コンテナ数  : 5

container_2 : 10
container_3 : 10
container_0 : 10
container_1 : 10
container_4 : 10

対象コンテナ数 : 5 ( 成功:5  失敗:0 )
エクスポートを終了しました

6.3.7 エラー継続指定

別アプリケーションとのロック競合によってロウデータ取得エラーが発生した場合も、エクスポート処理を継続できます。

  • --force オプションを指定することで、ロウデータ取得エラーが発生しても、次コンテナのロウデータからエクスポート処理を継続します。

    【例】

    $ gs_export --all -u admin/admin --force
    

    【メモ】

    • エラーによって処理をスキップしたコンテナについても、不完全ですがコンテナデータファイルに情報を出力します。ただし、エクスポート実行ファイルには記録していないため、インポート処理されることはありません。ロウデータ取得エラー解決後、当該コンテナのエクスポート処理を再実行してください。

6.3.8 その他の機能

 動作表示の詳細指定
  • --verbose オプションを指定することで、処理の詳細を表示することができます。

【例】

$ gs_export -c "^c0" -u admin/admin --verbose
エクスポートを開始します
サーバーに接続しました:/239.0.0.15:31999
GridStoreからコンテナ名一覧を取得しました
処理対象のコンテナ名一覧を取得しました
コンテナ情報を格納するファイル名リストを作成しました
コンテナ情報からロウデータを取得します
CSV形式ロウデータファイル出力処理を開始します:/data/exp/c001.csv
次のコンテナを処理します:c001
CSV形式ロウデータファイル出力処理を開始します:/data/exp/c002.csv
次のコンテナを処理します:c002
CSV形式ロウデータファイル出力処理を開始します:/data/exp/c010.csv
次のコンテナを処理します:c010
CSV形式ロウデータファイル出力処理を開始します:/data/exp/c003.csv
次のコンテナを処理します:c003
ロウデータの取得を完了しました
コンテナ情報をメタ情報ファイルに出力します
シングルコンテナのメタ情報ファイル作成処理を開始します
シングルコンテナのメタ情報ファイル作成処理を終了しました
コンテナ情報をメタ情報ファイルに出力しました

エクスポートを完了しました

成功:4  失敗:0

 動作表示の抑止指定
  • --silent オプションを指定することで、処理状況の表示が抑制できます。

【例】

$ gs_export -c c002 c001 -u admin/admin --silent

6.4 インポートの機能

コンテナデータファイルまたはRDBのデータを、GridDBクラスタにインポートします。

6.4.1 インポート元データソースの種類

Importツールの入力データソースには、以下があります。

  • コンテナデータファイル:エクスポート機能で保存したコンテナデータ、またはユーザが作成したコンテナデータ
  • RDB:Oracleデータベースデータ

    【メモ】

    • RDB(Oracle)は、Importツールでの入力先としてのみ指定できます。Exportツールの出力先としては指定できません。

6.4.2 コンテナデータファイルからのインポート

エクスポート機能でエクスポートしたデータ形式のデータをGridDBクラスタにインポートします。

処理対象の指定

 コンテナデータファイルの中からインポートする処理対象のデータを指定する必要があります。

1. コンテナの指定方法

コンテナデータファイル内の全コンテナを指定する方法、データベースを指定する方法、コンテナを個別に指定する方法があります。

  (1) 全てのコンテナの指定
  • 全てのデータベースの全てのコンテナが対象。
  • --all オプションを指定。

【例】

$ gs_import --all -u admin/admin
  
  (2) データベースの指定
  • 指定したデータベースの全てのコンテナが対象。
  • データベース名を列挙
    • --db オプションで複数のデータベース名を" "(ブランク)で区切って繰返し指定。

【例】

$ gs_import --db db001 db002 -u admin/admin //DB名を列挙。DB内のコンテナ
  
  (3) コンテナの個別指定
  • 指定したコンテナが対象。
  • コンテナ名を列挙
    • --container オプションで複数のコンテナ名を" "(ブランク)で区切って繰返し指定。
  • コンテナ名の正規表現指定
    • --container オプションでコンテナ名の一部を指定。指定にはJavaの正規表現が利用可能。正規表現で指定する場合は""(ダブルクォーテーション)で指定を括ります。

【例】

$ gs_import --container c001 c002 -u admin/admin //コンテナ名を列挙
$ gs_import --container "^c0" -u admin/admin   //正規表現指定:コンテナ名がc0で始まるコンテナの指定
  

【注意事項】

  • GridDB V3.2以前でエクスポートしたデータにNewSQL I/Fで作成したテーブルが含まれる場合、V3.5以降ではコレクションとしてインポートされます。また、テーブルの索引に設定されている索引名はインポートされません。

【メモ】

  • 管理ユーザで実行する時、コンテナの格納先のデータベースが存在しない場合はデータベースを作成します。
  • 一般ユーザが実行する時、コンテナの格納先のデータベースが存在しない場合、またはアクセス権が無い場合は、エラーになります。(--forceを指定していると、処理は継続されます。)
  • --container オプションを指定した場合、--prefixdb オプションで対象のデータベース名を指定します。--prefixdb オプションを省略した場合は、デフォルトの接続先データベース「public」が処理対象になります。
  • コンテナデータファイルに格納されているコンテナ一覧は--listオプションで確認してください。

エクスポート機能で--aclオプションを指定してエクスポートしたデータの場合、ユーザやアクセス権の情報もインポートすることができます。クラスタ上のすべてのデータを移行する場合にご利用ください。

  • --all オプションおよび --acl オプションを指定。

    【例】

    $ gs_import --all --acl -u admin/admin
      
    

【メモ】

  • 管理ユーザで実行する必要があります。
  • クラスタ上のすべてのデータを移行する場合にご利用ください。移行先にはデータベース・一般ユーザが存在しない状態で実行してください。

コンテナデータファイルの指定

コンテナデータファイルを指定します。指定を省略した場合は、カレントディレクトリのファイルが処理対象となります。

  • ディレクトリを指定
    • -d オプションでコンテナデータファイルの配置されているディレクトリを指定します。
    • ディレクトリの指定が省略された場合、コマンド実行時のカレントディレクトリのコンテナデータファイルが対象となります。

    【例】

    //カレントディレクトリから全コンテナを指定
    $ gs_import --all -u admin/admin
    
    //特定ディレクトリからデータベースを複数指定
    $ gs_import --db db002 db001 -u admin/admin  -d /data/expdata
    
    //特定ディレクトリからコンテナを複数指定
    $ gs_import -c c002 c001 -u admin/admin  -d /data/expdata
    
    

【メモ】

  • コンテナデータファイルの手動作成等により、エクスポート実行情報ファイル(gs_export.json)が存在しない場合には、-f オプションでメタデータファイル(XXXXX_properties.json)を指定してください。-f オプションを指定しない場合、インポートは失敗します。

コンテナ一覧の取得

コンテナデータファイル内に格納されたコンテナ情報をインポートする前に確認することができます。

【例】

$ gs_import --list
エクスポートデータファイルのコンテナ一覧を表示します
DB            Name              Type            FileName
public        container_2       COLLECTION      container_2.csv
public        container_0       TIME_SERIES     container_0.csv
public        container_1       COLLECTION      container_1.csv
userDB        container_1_db    TIME_SERIES     userDB.container_1_db.csv
userDB        container_2_db    TIME_SERIES     userDB.container_2_db.csv
userDB        container_0_db    COLLECTION      userDB.container_0_db.csv

6.4.3 RDBからのインポート

RDB(Oracle)のデータをGridDBクラスタにインポートします。

概要

Oracleデータベースに接続し、指定されたテーブルからSQLでデータを収集し、GridDBコンテナにデータを登録します。

img/gs_expimp-rdb.png

RDBからのインポート

以下のコマンドでRDBからのインポートを実行できます。

$ gs_import -u admin/admin --srcfile リソース定義ファイル

OracleテーブルとGridDBコンテナの対応付け(マッピング)を、リソース定義ファイルで指定します。

リソース定義ファイルでは、以下の4つの設定をjson形式で指定します。リソース定義ファイルは、RDB収集元単位に作成します。

  • RDB収集元/GridDB復元先の接続情報
  • RDB収集対象テーブル
  • GridDB登録対象コンテナ
  • マッピング情報

RDB収集元/GridDB復元先の接続情報の指定

 収集元となるRDBの接続情報(アドレス、ポート番号等)、JDBCドライバの情報、および、GridDB復元先の接続情報を設定します。

JDBCドライバのパス       プロパティファイル
収集元のRDB接続情報      プロパティファイル、または、リソース定義ファイル
復元先のGridDB接続情報   プロパティファイル、または、リソース定義ファイル

 【メモ】

RDB収集対象テーブルの指定

Oracleデータベースからインポートする処理対象のデータについての情報を指定します。

 (1) テーブル名を指定
  • 指定したテーブル内のすべての列が対象。
  • select, where, orderby の項目を指定すると、カラムの絞込みや条件での絞り込みも行えます。

【例】

"table" : "customers",
"select" : "id, name",
"where" : "id > 5000"

実行されるSQLは、「select id, name from customers where id > 5000」 になります。

 (2) SQL文を指定
  • SQLの実行結果が対象。

【例】

select * from table         → tableのすべての列
select id, name, data from customer → id, name, data 列

【メモ】

  • GridDBに登録した時のカラム順について
    • テーブル指定の場合  :Oracleテーブルの列順と同じ
    • SQL文指定の場合   :SQLで指定された列順と同じ
  • Oracleテーブルの列順と、GridDBのカラム順を変えたい場合は、テーブル指定の"select"か、SQL文指定で列名の順番を指定してください。
  • GridDBでは、第1カラムのみがロウキーに設定できるので、列の指定順には注意してください。
  • (1)、(2)の設定を併用することはできません。
  • SQL文を指定した場合、後述のコンテナ分割は使用できません。

GridDB登録対象コンテナの指定

登録先のGridDBコンテナを指定します。

  • コンテナ名
  • コンテナタイプ
  • ロウキー
  • 索引
  • トリガ
  • 時系列情報(コンテナタイプが時系列コンテナの場合)

登録先情報はすべて省略し、マッピングの自動変換で対応付けすることも可能です。

ただし、処理対象テーブルをSQL文で指定した場合、コンテナ名の指定は必須となります。

マッピング情報の指定

OracleとGridDBのデータの対応付けを行います。

1. 自動変換

デフォルトの規則に応じて、OracleのテーブルをGridDBのコンテナに対応付けます。ユーザが変換の定義を行う必要はありません。

【デフォルトの規則】

項目説明備考
コンテナ名テーブル名指定の場合は指定されたテーブル名
SQL指定の場合は指定されたコンテナ名
コンテナタイプコレクション
カラムSQL実行結果の列別名。列別名が存在しない場合はカラム名。
カラムデータ型RDBのカラムデータ型に対応付けられたデータ型。
  • Oracleのテーブル名やカラム名がGridDBの命名規則(以下参照)を満たさない場合は、エラーになります。
    • 漢字・カタカナ・ひらがなが使用されている
    • 記号$ # が使用されている
  • 上記命名規則を満たさない場合は、「処理対象テーブルの指定」で列に別名を付けてください。
    【例】
    select 価格 as price from table
    

Oracleのデータ型とGridDBのデータ型は下記の対応付けを行います。

データ型OracleGridDB備考
文字データ型CHARSTRING
VARCHAR2STRING
数値データ型NUMBER(最大精度, 位取り)DOUBLE
NUMBER(最大精度)LONG
日付データ型DATETIMESTAMP
TIMESTAMPTIMESTAMP
LOBデータ型CLOBSTRING
BLOBBLOB
RAW型RAWSTRING
ROWID型ROWIDSTRING

【メモ】

  • Oracle拡張データ型には対応していません。
  • カラムのデータ型が未対応の型だった場合は、次のように動作します。
    • 収集対象テーブルの指定で全カラムを指定した場合("table"のみ指定、または、"table"指定で"select"が"*")未対応のデータ型のカラムはスキップされ、それ以外のカラムだけが取得対象となります。
    • それ以外の場合、未対応のデータ型のカラムがあるとエラーになります。ただし、--forceオプションを付けると、未対応のデータ型カラムは無視して対応データ型のカラムのみが登録されます。

2. ユーザ定義変換

ユーザが変換規則を定義することができます。

OracleとGridDBの対応付けをリソース定義ファイルに記述します。

  • テーブルのデータ、SQLの結果データを格納するGridDBのコンテナ名やコンテナタイプ(コレクション/時系列コンテナ)をユーザが指定することができます。
  • GridDBのカラム名・データ型をユーザが指定することができます。

データ型は、下記の対応付けを指定することができます。

データ型OracleGridDB備考
文字データ型CHARSTRING, INTEGERINTEGERへの変換に失敗した場合はエラーになります。
VARCHAR2STRING, INTEGERINTEGERへの変換に失敗した場合はエラーになります。
数値データ型NUMBER(最大精度, 位取り)BYTE, SHORT, INTEGER, LONG, FLOAT, DOUBLE適切なデータ型を選択しないと、桁落ちする可能性があります。
NUMBER(最大精度)BYTE, SHORT, INTEGER, LONG, FLOAT, DOUBLE適切なデータ型を選択しないと、桁落ちする可能性があります。
日付データ型DATETIMESTAMP
TIMESTAMPTIMESTAMP
LOBデータ型CLOBSTRING
BLOBBLOB
RAW型RAWSTRING
ROWID型ROWIDSTRING

【メモ】

  • NUMBER型の変換では、BYTE/SHORT/INTEGER/LONG/FLOAT/DOUBLEのデータ型を指定できます。適切なデータ型を選択しないと、桁落ちする可能性があります。
  • 文字データ型、LOBデータ型のデータは、GridDBに格納できるサイズであれば格納することができます。GridDBに格納できるサイズは、ノードのブロックサイズ(64KB または 1MB)に依存します。ノードのブロックサイズはクラスタ定義ファイル(gs_cluster.json)で設定し、設定値と同じ値をプロパティファイルに設定します。
  • カラムのデータ型が未対応の型だった場合は、次のように動作します。
    • 収集対象テーブルの指定で全カラムを指定した場合("table"のみ指定、または、"table"指定で"select"が"*")未対応のデータ型のカラムはスキップされ、それ以外のカラムだけが取得対象となります。
    • それ以外の場合、未対応のデータ型のカラムがあるとエラーになります。ただし、--forceオプションを付けると、未対応のデータ型カラムは無視して対応データ型のカラムのみが登録されます。

 

● テーブルの対応付け

 OracleのテーブルとGridDBのコンテナを対応付けることができます。

 (1) 1対1

    OracleのテーブルとGridDBのコンテナを1対1で対応付けることができます。

 (2) 1対多

    Oracleのテーブルを、複数のGridDBコンテナに対応付けることができます。

  1対多の対応付けは、以下の2種類になります。

  • カラム値分割:列の値でコンテナを分割する

    指定された列の値でデータを分類して、値ごとのコンテナに格納します。コンテナ名には、最後尾に列の値が付与されます。("コンテナ名_列の値")

    列の値がコンテナ名に付与されるため、値は英数字とアンダースコアのみである必要があります。異なる文字種を含む場合は、コマンド実行時のチェック処理でエラーになります。チェック処理はコンテナ作成前に行われるため、コンテナ作成途中でエラーとなることはありません。

    カラム値分割に指定できる列のデータ型は、NUMBER、CHAR、VARCHAR2のみです。

    【メモ】

    • カラム値分割を指定する場合、処理対象はテーブル名指定としてください。
    • カラム値分割に指定するカラムは、処理対象テーブルに存在するカラムで、かつ、処理対象カラムに含まれるカラムを指定してください。
    • カラムの値がNull値の場合、データが格納されるコンテナ名は"コンテナ名_null"となります。

    【例】センサデータの一覧を、センサIDごとにコンテナに分割する

img/gs_expimp-colsplit.png

1対多:カラム値分割

  • レコード数分割:レコード数でコンテナを分割する

    ひとつのコンテナに格納するロウの上限数を指定します。上限数を超えた場合は、新たなコンテナに格納されます。

    コンテナ名には、最後尾に連番(0からの整数)が付与されます。"コンテナ名_連番" (container_0, container_1, …)

    【例】センサ情報の一覧を、1万ロウずつコンテナに分割する

img/gs_expimp-numsplit.png

1対多:レコード数分割

【メモ】

  • カラム値分割、レコード数分割の両方を指定することもできます。その場合、カラム値分割 → レコード数分割の順番で処理されます。
  • コンテナ分割の場合は、同じ名前のコンテナが既に存在した場合はエラーになります。既存コンテナへのデータ追加(--append)・既存コンテナを削除して再登録(--replace)はできません。--append, --replaceオプションが指定されていても無効です。

     

● 列の対応付け

 Oracleの列とGridDBのカラムを1対1で対応付けることができます。

【メモ】

  • 列の連結や演算などの複雑な対応付けが必要な場合は、Oracle DB側で条件に応じたビューを作成し、そのビューを取得対象としてください。

リソース定義ファイルの設定

リソース定義ファイルは、json形式です。接続対象であるRDB(Oracle)の情報や復元先であるコンテナの情報を指定します。

RDB(Oracle)に接続しインポートするための情報としては、以下のような設定項目があります。

パラメータ説明
/inputSource
  /typeRDB連携を利用する場合、"rdb"を指定します
  /server省略可。省略した場合、プロパティファイルのRDB接続先が使用されます。*1
    /kindRDBの種類を指定します。"oracle"を指定します
    /hostRDBにアクセスする際に利用するアドレスを指定します
    /portRDBにアクセスする際に利用するアドレスのポートを指定します
    /databaseデータベース名(SID)を指定します
    /urlRDBにアクセスする際の接続文字列を指定します。(host,port,database または urlを指定してください。
    /userデータベースにアクセスするユーザを指定します
    /passwordデータベースにアクセスするユーザのパスワードを指定します
/outputSource省略可。省略した場合、プロパティファイルのGridDB接続先が使用されます。
  /typeGridDBに登録する場合、"gridstore"を指定します。
  /server*1
    /hostGridDBにアクセスする際に利用するアドレスを指定します
    /portGridDBにアクセスする際に利用するアドレスのポートを指定します
    /clusterName
    /userデータベースにアクセスするユーザを指定します
    /passwordデータベースにアクセスするユーザのパスワードを指定します
/targetList
以下は配列で繰り返し指定可
  /rdbRDBの収集対象を指定します。"table"または"sql"のどちらかが必須です
    /tableテーブル名を指定します
    /sqlSQL文を指定します
    /selectテーブル名指定の場合に、カラムを指定します
    /whereテーブル名指定の場合に、条件でカラムを絞り込みます
    /orderbyテーブル名指定の場合に、指定したカラムをソートします。
    /partitionTableパーティションテーブルに並列アクセスする場合にtrueを指定します。
  /gridstoreGridDBの登録先コンテナを指定します。
    /databaseデータベース名を指定します。省略した場合は、publicデータベース"public"に登録されます
    /nameコンテナ名を指定します
RDB収集対象がテーブル名指定の場合、コンテナ名は省略可です。テーブル名がコンテナ名になります。
SQL文指定の場合、コンテナ名は必須です。
    /typeコンテナタイプ(COLLECTION/TIME_SERIES)を指定します
コンテナタイプを省略した場合はコレクションになります。
    /rowKeyAssignedロウキーの有無(true/false/省略)を指定します。*2
    /dataAffinityデータアフィニティの名前を指定します。最大8文字です
    /indexSet索引を指定します。 *3
    /triggerInfoSetトリガを指定します。 *3
    /compressionInfoSet時系列コンテナの場合のみ、指定圧縮方式(NO/SS)を指定します。 *3
  /mapping省略可、および、以下は繰り返し指定可。
    /column 以下は繰り返し指定可
      /rdbRDBのカラム名を指定します。
      /gridstoreGridDBのカラム名を指定します
      /typeGridDBのカラムタイプを指定します
    /containerSplitコンテナの分割方法を指定します。
      /typeカラム値分割"columnValue" または レコード数分割 "dataNumber" を指定します。
      /columnカラム値分割の場合、分割する値のカラムを指定します。
      /numberレコード数分割の場合、分割するレコード数を指定します。

*1:/inputSource/server/type,host,port,database,user,password
  /inputSource/server のグループは全部設定するか、全部設定しないかのいずれかで設定します。

*2:/targetList/gridstore/rowKeyAssigned
  true : 第一カラムがロウキーに設定されます。ロウキーに適さないデータ型の場合はエラーになります。
  false または 省略 : ロウキー設定なしになります。

*3: 各項目の記述形式は、メタデータファイルを参照してください。

【メモ】

  • テーブル名指定"table"、または、SQL文指定"sql"のどちらかが必須です。
  • "sql"と"table","select","where","orderby"は同時に指定できません。
  • SQL文指定"sql"の場合は、GridDBのコンテナ名は省略できません。
  • パーティションテーブルの場合("partitionTable": true)は、テーブル名"table"で指定してください。

リソース定義ファイルの例を以下に示します。接続情報はプロパティファイルに指定されているものとします。

  • 【例】テーブル名のみ指定する場合
    {
        "inputSource" : {
            "type" : "rdb"
        },
        "targetList" : [
            {
                "rdb" : {
                    "table" : "sample_table"
                }
            }
        ]
    }
    
  • 【例】SQL文を指定して、カラムのマッピングを指定する場合
    {
        "inputSource" : {
            "type" : "rdb"
        },
        "targetList" : [
            {
                "rdb" : {
                    "sql" : "select * from sample_table order by id"
                },
                "gridstore" : {
                    "name" : "sample_collection"
                },
                "mapping" : {
                    "column" : [
                        {"rdb": "id", "gridstore":"sensor_id", "type" : "integer"},
                        {"rdb": "value", "gridstore":"sensor_value", "type" : "double"}
                    ]
                }
            }
        ]
    }
    
  • 【例】複数のテーブルを対象として、それぞれのテーブルに取得条件を付ける場合
    {
        "inputSource" : {
            "type" : "rdb"
        },
        "targetList" : [
            {
                "rdb" : {
                    "table" : "sample_table",
                    "select" : "id, value",
                    "where" : "id > 100",
                    "orderby" : "id"
                }
            },
            {
                "rdb" : {
                    "table" : "sample_table2",
                    "select" : "*",
                    "where" : "value > 1000",
                    "orderby" : "id"
                }
            }
        ]
    }
    
  • 【例】テーブルをidカラムのカラム値で分割し、さらに300レコードずつに分割する場合
    {
        "inputSource" : {
            "type" : "rdb"
        },
        "targetList" : [
            {
                "rdb" : {
                    "table" : "sample_table",
                    "orderby" : "id"
                },
                "mapping" : {
                    "containerSplit" : [
                        {"type":"columnValue", "column":"id"},
                        {"type":"dataNumber", "number":300}
                    ]
                }
            }
        ]
    }
    

パーティションテーブル

Oracleのパーティションテーブルの場合、パーティション単位(コンポジットタイプの場合はサブパーティション単位)に並列にアクセスすることができます。これにより、パーティションテーブルのデータを高速に取得することができます。

パーティションテーブルを並列処理する場合、リソース定義ファイルの収集対象の設定で、"partitionTable"の項目をtrueにしてください。

【メモ】

  • パーティションテーブルを並列処理する場合、'order by'で指定されたソートはパーティション単位で行われてGridDBに登録されます。そのため、テーブル全体でのソート順は保証されません。
    • テーブル全体でのソート順を保持する必要がある場合には、パーティションテーブルの並列処理の設定を行わないでください("partitionTable"の項目を指定しないかfalseを指定してください)。この場合、処理がパーティション単位で並列化されないため、インポート時間が長くなる場合があります。

並列度

RDB・GridDBへのアクセスを並列化し、インポート処理を高速に実行することができます。

並列処理を行う場合は、コマンドラインで--parallelオプションを指定してください。

--parallelに指定された数の並列度で、RDBからの収集・GridDBへの登録処理がそれぞれ実行されます。並列度を指定しない場合は、自動的にGridDBのクラスタノード数が並列度になります

  • 収集の並列度(Oracleへのアクセス)と登録の並列度(GridDBへのアクセス)を詳細に設定したい場合は、プロパティファイルに記載してください。
    load.input.threadNum=64
    load.output.threadNum=16
    
  • 登録の並列度(GridDBへのアクセス)は、 GridDBのノード数 <= N <= (GridDBのノード数 x ノードのconcurrency) の範囲での指定が最適です。マシンの環境に応じて設定してください。

<例>

コマンドラインプロパティファイル収集スレッド数登録スレッド数
gs_import11
gs_import --parallel 333
gs_import --parallelinput.threadNum=16163
output.threadNum=3
gs_import --parallel指定なし GridDBノード数GridDBノード数

事前チェックとテスト実行

収集・登録処理前に、下記の項目がチェックされます。リソース定義ファイルの記述誤りや、指定されたデータの整合性のチェックが事前に行われます。下記チェックでエラーが発生した場合、ツールの処理は停止します。--forceオプションでも継続することはできません。

事前にチェックされる項目

  • リソース定義ファイル
    • 記述形式の誤り
    • 必須項目の記載漏れ
    • 定義の組合せの整合性
  • RDB
    • テーブル名・カラム名がコンテナ名に有効な文字列であるか
    • カラムのデータ型
    • カラム値分割の場合にカラム値がコンテナ名に有効な文字列であるか

事前チェックのみを実行して動作を確認したい場合、テスト実行を行います。テスト実行ではOracleおよびGridDBと通信を行いますが、GridDBへのデータ登録は行いません。

テスト実行を行うには--testオプションを--srcfileオプションと合わせて指定します。

【例】

$ gs_import -u admin/admin --srcfile partition_table.json --test
インポートを開始します
[テストモード]
インポートのテスト実行を終了しました。 処理対象SQL数:1920
インポートを終了しました

事前チェックでエラーが発生する場合は以下のように表示されます。

【例】

$ gs_import -u admin/admin --srcfile not_found_column.json --test
インポートを開始します
[テストモード]
D00C0C: 存在しないカラムがマッピング定義に指定されています。: sql=[SELECT * FROM mytable], column=[NOT_FOUND_COLUMN]

SmartEDA/DDS連携

データ収集/イベント処理基盤SmartEDAのデータ収集サーバ(DDS)と連携して、OracleからGridDBへデータを登録することができます。ImportツールでOracleからデータを収集し、DDSへHTTP送信します。DDSは、受信したデータをGridDBへ登録します。OracleやImportツールがGridDBクラスタとマルチキャスト通信できないサブネットに存在する場合でもインポートすることができます。

【メモ】

  • 操作手順は、/usr/griddb/misc/dds-plugin/Readme.txtをご参照ください。
  • 別途、データ収集/イベント処理基盤SmartEDA製品が必要です。
  • GridDBクラスタの接続方式が、マルチキャスト方式の場合のみ利用できます。

6.4.4 データ登録オプション

インポートでは、特定のオプションの指定がないときは、登録しようとしたコンテナが既にGridDBクラスタ内に存在するとエラーとなります。次のオプションを指定することで、データの追加や、置き換えができます。データ登録では、登録に成功したコンテナ数と失敗したコンテナ数を表示します。

 データの追加・更新
  • --append オプションを指定することで、既存のコンテナへのデータ登録と更新ができます。
  • データの追加登録・更新ができるのは、既存のコンテナと登録しようとするコンテナのスキーマおよび索引、トリガの設定情報が同一の場合のみです。
  • コンテナの種類に応じた登録の動作は以下となります。
    コンテナの種類Rowkey指定動作
    コレクション有りキーが等しいカラムは更新され、キーが異なるデータは追加される。
    無しロウデータはすべて追加登録される
    時系列コンテナ有り圧縮指定がない場合、時刻が既存の登録データより新しい場合追加登録される。
    時刻が既存のものと同じ場合カラムデータが更新される。
    圧縮指定ある場合、既存データより新しいロウの追加のみが可能。
 コンテナの置き換え
  • --replace オプションを指定することで、既存のコンテナを削除し、新たにコンテナを作成しデータを登録します。

【例】

$ gs_import -c c002 c001 -u admin/admin  --append
..インポートを開始します(追記モード)
インポートを完了しました
成功:2  失敗:0
 
$ gs_import -c c002 c001 -u admin/admin  --replace   //特定のディレクトリから
..インポートを開始します(再配置モード)
インポートを完了しました
成功:2  失敗:0
 
$ gs_import --all  -u admin/admin  -d /datat/expdata   --replace
  

6.4.5 エラー継続指定

コンテナデータファイルのユーザ編集ミスによって特定のロウデータで登録エラーが発生した場合も、インポート処理を継続できます。

  • --force オプションを指定することで、ロウデータの登録エラーが発生しても、次コンテナのロウデータからインポート処理を継続します。

    【例】

    $ gs_import --all -u admin/admin -d /data/expdata --force
    
    

【メモ】

  • エラーが発生したコレクションは、コンテナデータファイル修正後、コンテナ置き換えオプション(--replace)を指定して再登録してください。

6.4.6 その他の機能

 動作表示の詳細指定
  • --verbose オプションを指定することで、処理の詳細を表示することができます。

【例】

$ gs_import -c c002 c001 -u admin/admin --append --verbose
次の文字列はコンテナ名文字列として認識されました:c002
次の文字列はコンテナ名文字列として認識されました:c001
インポートを開始します(追記モード)
インポートを完了しました

成功:2  失敗:0  
 動作表示の抑止指定
  • --silent オプションを指定することで、処理状況の表示が抑制できます。

【例】

$ gs_import -c c002 c001 -u admin/admin --append --silent
     

6.5 コマンド/オプション仕様

6.5.1 エクスポートコマンド

  • コマンド一覧
    gs_export-u|--user ユーザ名/パスワード
    --all|--container コンテナ名 [コンテナ名] …|--db データベース名 [データベース名]
    [-d|--directory 出力先ディレクトリパス]
    [--out [ファイル識別子]
    [--binary [ファイルサイズ]]
    [--filterfile 定義ファイル名]
    [--count 取得数]
    [--parallel 並列実行数]
    [--acl]
    [--prefixdb データベース名]
    [--force]
    [-t|--test]
    [-v|--verbose]
    [--silent]
    gs_export--version
    gs_export[-h|--help]
  • オプション仕様
    オプション必須説明
    -u|--user ユーザ/パスワード認証に使用するユーザ、パスワードを指定します。
    --allクラスタの全コンテナをエクスポート対象とします。--all、--container、--db オプションのいずれかの指定が必要です。
    -c|--container コンテナ名 …エクスポート対象となるコンテナを指定します。ブランク区切りで複数指定可能です。正規表現を使用する場合はダブルクォートで囲んで指定します。--all、--container、--db オプションのいずれかの指定が必要です。
    --db指定されたデータベース上のすべてのコンテナをエクスポート対象とします。--all、--container、--db オプションのいずれかの指定が必要です。
    -d|--directory 出力先ディレクトリパスエクスポート先のディレクトリパスを指定します。デフォルトはカレントディレクトリです。
    --out [ファイル識別子]出力データのファイル形式をマルチコンテナ形式とする場合に指定します。省略した場合は、シングルコンテナ形式となります。
    ファイル識別子が指定された場合はファイル識別子を含むファイル名として、省略された場合は、出力開始日時をファイル名として出力します。
    --binary [ファイルサイズ]ロウデータファイルの出力形式をバイナリ形式とする場合に指定します。省略した場合は、CSV形式となります。
    出力ファイルサイズはMB単位で指定します。デフォルトは、100MBです。指定範囲は1から1000(1GB)までです。
    --filterfile 定義ファイル名ロウを取り出す検索クエリを記述した定義ファイルを指定します。省略した場合は、すべてのロウがエクスポートされます。
    --count 取得数コンテナからデータを取得する際の1回の取得数を指定します。省略した場合は、gs_expimp.propertiesの値が有効となります。
    --parallel 並列実行数指定された数で並列実行を行います。並列実行を行うと、エクスポートデータは並列実行数と同じ数で分割されます。マルチコンテナ形式の場合(--out オプションを指定した場合)のみ指定できます。指定範囲は、2から32までです。
    --aclデータベース、ユーザ、アクセス権の情報もエクスポートします。管理者ユーザで、かつ --all オプションを指定している場合のみ指定できます。
    --prefixdb データベース名--container オプションを指定した場合に、コンテナのデータベース名を指定します。省略した場合は、デフォルトデータベースのコンテナが処理対象になります。
    --forceエラーが発生しても処理を継続します。エラー内容は処理終了後に一覧表示されます。
    -t|--testテストモードでツールを実行します。
    -v|--verbose動作表示を詳細出力します。
    --silent動作表示を出力しません。
    --versionツールのバージョンを表示します。
    -h|--helpヘルプメッセージとしてコマンド一覧を表示します。  

【メモ】

  • -t(--test) オプションを指定した場合、クエリを実行しフェッチまでを実施します。コンテナデータファイルの作成は行いません。
  • -v(--verbose) オプションを指定した場合、処理中のメッセージを表示します。省略した場合は、エラー時のみメッセージを表示します。
  • -d(--directory) オプションで指定したディレクトリパスが存在しない場合、--out オプションで指定したファイル名が存在しない場合、それぞれディレクトリやファイルを作成します。
  • -c(--container) オプションを指定した場合、コンテナ名にJavaの正規表現を指定することができます。詳細は、Javaの「クラス Pattern」を参照ください。

6.5.2 インポートコマンド

  • コマンド一覧
    gs_import-u|--user ユーザ名/パスワード
    --all|--container コンテナ名 [コンテナ名 …]|--db データベース名 [データベース名]
    [--append|--replace]
    [-d|--directory インポート対象ディレクトリパス]
    [-f|--file ファイル名 [ファイル名…]]
    [--count コミット数]
    [--acl]
    [--prefixdb データベース名]
    [--force]
    [-v|--verbose]
    [--silent]
    入力元がその他リソースの場合:
        [--srcfile ファイルパス [--test]]
    gs_import-l|--list
    [-d|--directory ディレクトリパス]
    [-f|--file ファイル名 [ファイル名…]]
    gs_import--version
    gs_import[-h|--help]
  • オプション仕様
    オプション必須説明
    -u|--user ユーザ/パスワード認証に使用するユーザ、パスワードを指定します。
    --allインポート元のファイルの全コンテナをインポート対象とします。--all、--container、--db オプションのいずれかの指定が必要です。
    -c|--container コンテナ名 …インポート対象となるコンテナを指定します。ブランク区切りで複数指定可能です。正規表現を使用する場合はダブルクォートで囲んで指定します。--all、--container、--db オプションのいずれかの指定が必要です。
    --db指定されたデータベース上のすべてのコンテナをインポート対象とします。--all、--container、--db オプションのいずれかの指定が必要です。
    -d|--directory ディレクトリパスインポート元のディレクトリパスを指定します。デフォルトはカレントディレクトリです。
    -f|--file [ファイル名]インポート対象となるコンテナデータファイルを指定します。複数指定可能です。省略時は-d(--directory)で指定したディレクトリまたはカレントディレクトリのすべてのコンテナデータファイルを対象とします。
    --count コミット数入力データを一括コミットするまでの入力件数を指定します。
    --aclデータベース、ユーザ、アクセス権の情報もインポートします。--acl オプションを指定してエクスポートしたデータに対して、管理者ユーザで、かつ --all オプションを指定している場合のみ指定できます。
    --prefixdb データベース名--container オプションを指定した場合に、コンテナのデータベース名を指定します。省略した場合は、デフォルトデータベースのコンテナが処理対象になります。
    --forceエラーが発生しても処理を継続します。エラー内容は処理終了後に一覧表示されます。
    -v|--verbose動作表示を詳細出力します。
    --silent動作表示を出力しません。
    --srcfile リソース定義ファイルパスリソース定義ファイルのパスを設定します。RDBからインポートする場合に指定します。
    -l|--list指定したインポート対象のコンテナの一覧を表示します。
    --versionツールのバージョンを表示します。
    -h|--helpヘルプメッセージとしてコマンド一覧を表示します。

【メモ】

  • -l(--list)が指定されており、-d(--directory)、-f(--file) オプション以外のオプションが指定されているとオプション引数エラーとなります。
  • -v(--verbose) オプションを指定した場合、処理中のメッセージを表示します。省略した場合は、エラー時のみメッセージを表示します。
  • -c(--container) オプションを指定した場合、コンテナ名にJavaの正規表現を指定することができます。詳細は、Javaの「クラス Pattern」を参照ください。

6.6 コンテナデータファイルの形式

コンテナデータファイルを構成するそれぞれのファイル形式を以下に示します。

6.6.1 メタデータファイル

コンテナ情報をJSON形式で格納します。

【メモ】

  • メタデータファイルは、文字コードUTF-8で記載します。

格納するコンテナ情報を以下に示します。

項目説明
コンテナ名コンテナの名称です。
コンテナ種別コレクションまたは時系列コンテナを指定します。
スキーマ情報ロウを構成するカラム集合の情報です。カラム名、データ型、カラム制約を指定します。
圧縮設定情報時系列データに設定する圧縮方式の情報です。誤差あり間引き圧縮、誤差なし間引き圧縮、無圧縮のいずれかを設定します。
索引設定情報コンテナに設定する索引種別の情報です。索引設定の有無。ハッシュ索引、空間索引、ツリー索引等の種別を指定します。
トリガ(イベント通知)情報JMSまたはRESTインタフェースでコンテナ更新(PUT/DELETE)時の通知情報です。
ロウキー設定情報コレクションの場合ロウキーを設定します。時系列コンテナの場合、ロウキー設定なしであるか、デフォルトが設定されている場合はその値が有効となります。

以下にメタ情報のJSON形式のタグとデータ項目を示します。利用者が新規に作成する際に必須となるタグについても記載します(タグの設定条件)。

タグ名      項目      説明              設定条件         
共通パラメータ   
containerコンテナ名コンテナ名必須
containerTypeコンテナ種別COLLECTION/TIME_SERIES のどちらかを指定必須
containerFileTypeコンテナファイル種別csv/binary のどちらかを指定必須
containerFileコンテナファイル名ファイル名必須
dataAffinityデータアフィニティ名データアフィニティの名前を指定。最大長8文字。 (TIME_SERIESの場合のみ有効)任意
rowKeyAssignedロウキー設定true/false のどちらかを指定任意 キーワードなしの場合、trueとなる
partitionNoパーティション空文字列で未設定任意 エクスポート時出力される。(インポート時は指定不要。指定しても値は利用されない。)
columnSetカラム情報セット、(スキーマ情報)既存コンテナへのデータ追加時は、カラム情報が合致している必要あり必須
  columnNameカラム名必須
  typeデータ型BOOLEAN/ STRING/ BYTE/ SHORT/ INTEGER/ LONG/ FLOAT/ DOUBLE/ TIMESTAMP/ GEOMETRY/ BLOB/ BOOLEAN[]/ STRING[]/ BYTE[]/ SHORT[]/ INTEGER[]/ LONG[]/ FLOAT[]/ DOUBLE[]/ TIMESTAMP[]必須
  notNullNOT NULL制約true/false のどちらかを指定任意 キーワードなしの場合、falseとなる
indexSet索引情報セットカラム毎に設定可能。 存在しないカラム名は無視/エラー出力はする任意
  columnNameカラム名任意(indexSet指定時は必須)
  type索引種別HASH ( STRING/ BOOLEAN/ BYTE/ SHORT/ INTEGER/ LONG/ FLOAT/ DOUBLE/ TIMESTAMP ) SPATIAL ( GEOMETRY ) 、 TREE ( STRING/ BOOLEAN/ BYTE/ SHORT/ INTEGER/ LONG/ FLOAT/ DOUBLE/ TIMESTAMP )任意 (indexSet指定時は必須)
  indexName索引名nullで未設定任意 キーワードなしの場合、未設定となる
triggerInfoSetトリガ設定任意
  eventNameトリガ名トリガ名任意(triggerInfoSet指定時は必須)
  notificationType通知方法JMS/REST任意(triggerInfoSet指定時は必須)
  targetEvents監視対象操作PUT/DELETE任意(triggerInfoSet指定時は必須)
  targetColumnNamesカラム名任意通知対象カラム(カンマ区切りで複数指定可能)、BLOB/GEOMETRY/配列型は設定可能だが機能しない。セパレータは「,」(カンマ)、存在しないカラム名指定はエラー
  notificationURI通知先URI任意(triggerInfoSet指定時は必須)
  JmsDestinationTypeデスティネーション種別「topic」/「queue」のどちらか指定可能JMSのみ有効
  JmsDestinationNameデスティネーション名任意(notificationTypeがJMSの時は必須) JMSでのみ指定
  JmsUserユーザ名任意(notificationTypeがJMSの時は必須) JMSでのみ指定
  JmsPasswordパスワード任意(notificationTypeがJMSの時は必須) JMSでのみ指定
TIME_SERIESのみパラメータ
timeSeriesProperties圧縮情報設定containerTypeがTIME_SERIESのみ指定可任意
compressionMethodNO、SS、HI任意
compressionWindowSizeロウの最大期間整数値を指定任意
compressionWindowSizeUnit時間情報のENUMDAY/ HOUR/ MILLISECOND/ MINUTE/ MONTH/ SECOND/ YEAR任意
expirationDivisionCount時限解放の分割数時限解放の分割数を指定任意
rowExpirationElapsedTime経過期間整数値を指定任意
rowExpirationTimeUnit時間情報のENUMDAY/ HOUR/ MILLISECOND/ MINUTE/ MONTH/ SECOND/ YEAR任意
compressionInfoSetカラム毎設定compressionMethodがHIのみ指定可任意
  columnNameカラム名任意
  compressionType絶対値/相対値RELATIVE: 相対値、ABSOLUTE: 絶対値任意
  width絶対誤差あり。間引き圧縮パラメータ浮動小数点数で指定可能任意 指定カラムに対しては必須。rate/spanと同時指定はエラー
  rate相対誤差あり。間引き圧縮パラメータ浮動小数点数で指定可能任意 compressionMethodがHIの時み設定可能。SS/NOでは無視/エラー出力する。widthと同時指定はエラー
  span相対誤差あり。間引き圧縮パラメータ浮動小数点数で指定可能任意 compressionMethodがHIのみ時設定可能。SS/NOでは無視/エラー出力する。widthと同時指定はエラー

【メモ】

  • シングルコンテナデータファイルのメタデータファイルには、コンテナのメタ情報がjsonで記述されます。
  • マルチコンテナデータファイルのメタデータファイルには、コンテナのメタ情報がjsonの 配列 で記述されます。
  • シングルコンテナデータファイルのメタデータファイル名
    • コンテナ名_properties.json
  • マルチコンテナデータファイルのメタデータファイル名
    • --out オプションでファイル識別子を指定:  ファイル識別子_properties.json

    • --out オプションでファイル識別子を省略:  日時_properties.json

【注意点】

  • ロウデータファイルをバイナリ形式でエクスポートした場合、メタデータファイルの編集は行わないでください。

【例1】 シングルコンテナファイルでの コレクションの記述例 (c001_properties.json)

  • 1つのコレクションを記述しています。
 1:  {
 2:      "container": "c001",
 3:      "containerFile": "c001.csv",
 4:      "containerFileType": "csv",
 5:      "containerType": "COLLECTION",
 6:      "columnSet": [
 7:          { "columnName": "COLUMN_ID",  "type": "INTEGER" },
 8:          { "columnName": "COLUMN_STRING", "type": "STRING"}
 9:      ],
10:      "indexSet": [
11:          { "columnName": "COLUMN_ID", "type": "TREE"},
12:          { "columnName": "COLUMN_ID", "type": "HASH"},
13:          { "columnName": "COLUMN_STRING", "type": "HASH" }
14:      ],
15:      "rowKeyAssigned": true
16:  }
17:  

【例2】 マルチコンテナファイルでのコレクションおよび時系列コンテナの記述例 (container01_properties.json)

  • コレクション および 時系列コンテナ の場合
 1:  
 2:  [
 3:          {
 4:                  "container": "c001",
 5:                  "containerType": "collection",  //コレクションの場合 
 6:                  "containerFileType":"csv",
 7:                  "containerFile":"container01.csv",
 8:                  "rowKeyAssigned":true,
 9:                  "columnSet": [
10:                          { "columnName": "COLUMN_FLAG", "type": "BOOLEAN" },
11:                          { "columnName": "COLUMN_BLOB_DATA", "type": "BLOB" },
12:                          { "columnName": "COLUMN_STRING", "type": "STRING" }
13:                  ],
14:                  "indexSet":[
15:                          { "columnName":" COLUMN_STRING ", "indexType": "HASH" }
16:                  ],
17:                  "triggerInfoSet":[
18:                          {  "eventName":" FLAG_EVENT", "notificationType":"JMS",
19:                                  "targetEvents":"DELETE", "targetColumnNames":"COLUMN_FLAG",
20:                                  "notificationURI":"http://example.com",
21:                                  "JmsDestinationType":"", "JmsDestinationName":"",
22:                                  "JmsUser":"", "JmsPassword":"" },
23:                          {  "eventName":"STRING_EVENT", "notificationType":"REST",
24:                                  "targetEvents":"PUT", "targetColumnNames":"COLUMN_STRING",
25:                                  "notificationURI":"" }
26:                  ]
27:          },
28:          {
29:                  "container": "c002",
30:                  "containerType": "timeSeries",  //時系列コンテナの場合 
31:                  "containerFileType":"csv",
32:                  "containerFile":"container01.csv",
33:                  "rowKeyAssigned":true,
34:                  "dataAffinity":"month",
35:                  "columnSet": [
36:                          { "columnName": "COLUMN_TIMESTAMP", "type": "TIMESTAMP" },
37:                          { "columnName": "COLUMN_FLAG", "type": "BOOLEAN" },
38:                          { "columnName": "COLUMN_BLOB_DATA", "type": "BLOB" },
39:                          { "columnName": "COLUMN_INTEGER", "type": "INTEGER" }
40:                  ],
41:                  "indexSet":[
42:                          { "columnName":" COLUMN_FLAG ", "indexType": "TREE" }
43:                  ],
44:                  "triggerInfoSet":[
45:                          {  "eventName":"TIMESTAMP_EVENT", "notificationType":"REST",
46:                                  "targetEvents":"DELETE", "targetColumnNames":"COLUMN_TIMESTAMP",
47:                                  "notificationURI":"",
48:                                  "JmsDestinationType":"", "JmsDestinationName":"",
49:                                  "JmsUser":"", "JmsPassword":"" }
50:                  ],
51:                  "timeSeriesProperties":[
52:                          { "compressMethod": "HI", 
53:                           "compressionWindowSize":10, "compressionWindowSizeUnit":"SECOND",
54:                           "expirationDivisionCount":12,
55:                           "rowExpirationElapsedTime”: 1, "rowExpirationTimeUnit": “DAY”}
56:                   ],
57:                   "compressionInfoSet":[
58:                          { “columnName”:COLUMN_INTEGER”, ”compressionType”:"RELATIVE", 
59:                          "rate":”1.0E2”, "span":”1.0E2” }
60:                   ]
61:          }
62:  ]
63:  

6.6.2 ロウデータファイル(バイナリデータファイル)

zip形式であり、gs_exportでのみ作成が可能です。可読性はなく、編集もできません。

6.6.3 ロウデータファイル(CSVデータファイル)

CSV形式であり、コンテナデータファイル情報部にはロウの定義であるメタデータファイルへの参照を記述します。

【メモ】

  • CSVデータファイルは、文字コードUTF-8で記載します。

<CSVデータファイルの形式>

1.ヘッダ部(1〜2行目)

ヘッダ部は、エクスポート時に出力される情報です。インポート時にヘッダ情報は不要です。

  • 文頭に「#」を付与し区別します。フォーマットは以下とします。
    "#(日時情報)(空白)GridDBリリースバージョン" 
    "#User:(ユーザ名)" 
      
    

    【例】

    "#2013-06-14T17:34:36.520+0900 GridStore V1.5.00" 
    "#User:admin "
    
    

2.コンテナデータファイル情報部(3行目以降)

メタデータファイルへの参照を記述します。

  • 文頭に「%」を付与し区別します。一行のフォーマットは以下とします。
    "%","(コンテナ名)_properties.json" 
      
    

3.ロウデータ部(コンテナ情報部以降)

ロウデータを記述します。

  • 文頭に「$」を付与し、コンテナ名を記載後、コンテナに登録したい件数分のロウデータを記述します。
  • カンマ区切りでカラムのロウデータをCSVファイルの1行に記述します。
    "$","(コンテナ名)" 
    "値","値","値",..(カラム定義個数) 
    "値","値","値",..(カラム定義個数) 
      :
      :    //登録したいロウ件数分記述する
      :
    

【メモ】

  • ロウデータに含まれるバックスラッシュ\とダブルクォーテーション"は、それぞれバックスラッシュでエスケープして記述します。

4.コメント部

コメント部はCSVデータファイルのヘッダ部以外であればどこでも記述できます。

  • 文頭に「#」を付与し区別します。

【メモ】

  • シングルコンテナデータファイルのCSVデータファイルは以下で構成されます。
    •  1.ヘッダ部 ,2.コンテナデータファイル情報部 ,3.ロウデータ部
  • マルチコンテナデータファイルのCSVデータファイルは以下で構成されます。
    •  1.ヘッダ部 ,2.コンテナデータファイル情報部 ,3.ロウデータ部(複数)

<ファイル名形式>

エクスポートツールで出力するCSVデータファイルのファイル名は以下となります。

  •  シングルコンテナデータファイルの場合、コンテナ名.csv
  •  マルチコンテナデータファイルの場合、--out オプションでファイル識別子を指定した場合 ファイル識別子.csv
  •  マルチコンテナデータファイルの場合、--out オプションでファイル識別子を省略した場合 日時.csv

【例】CSVデータファイル(外部オブジェクトファイル含む)の記述例メタデータファイル 例1の場合のデータの記述

"#2013-11-01T11:19:03.437+0900  GridStore V1.5.00"
"#User:admin"
"%","c001_properties.json"
"$","c001"
"1","Tokyo"
"2","Kanagawa"
"3","Osaka"
 

CSVデータファイルのロウの一部に以下のデータが含まれるとき、外部オブジェクトとしてCSVデータファイルとは別に外部オブジェクトファイルを用意します。外部データファイルの参照をCSVファイルの対象カラムに記載します。"@データ型:”(ファイル名称)

  • BLOBデータ
    • BLOBデータとして該当するカラムの“値”部分に“@BLOB:”+(ファイル名称) と記載します。
    • ファイル名称部分は、ファイル名+“.blob” という形式です。
    • バイナリファイルをファイル名称部分の規則にあわせて配置します。
  • 空間情報
    • 空間情報データとして該当する“値”部分に“@GEOMETRY:”+(ファイル名称)で記載します。
    • ファイル名称部分は、ファイル名+“.geometry”という形式です。
    • 外部オブジェクトファイルに空間列を記載します。
    • 文字コードUTF-8で記載します。
  • 配列型(BOOLEAN[]/ STRING[]/ BYTE[]/ SHORT[]/ INTEGER[]/ LONG[]/ FLOAT[]/ DOUBLE[]/ TIMESTAMP[])
    • 配列型データとして該当する“値”部分に“@(データ型)_ARRAY:”+(ファイル名称)で記載します。
    • ファイル名称部分は、ファイル名+“.(データ型)_array”という形式です。
    • 文字列化したデータ長が100文字を超えている場合、外部オブジェクトファイルへ配列型データを記載します。
    • 文字コードUTF-8で記載します。
  • 文字列情報
    • 文字列データとして該当する“値”部分に“@STRING:”+(ファイル名称)で記載します。
    • ファイル名称部分は、ファイル名+“.string” という形式です。
    • 文字列データ長が100文字を超えている、もしくは復帰(\r)を含む場合に、外部オブジェクトファイルへ文字列データを記載します。
    • 文字コードUTF-8で記載します。

外部オブジェクトファイルをエクスポートしたとき、エクスポート時の外部オブジェクトファイル名は、以下の規則に従い作成されます。

  • シングルコンテナデータファイルの場合
    • コンテナ名_コンテナ名_ROW番号_COLUMN番号.データ型
    • コンテナのカラムがByte配列の場合、外部オブジェクトファイルは コンテナ名_コンテナ名_ROW番号_COLUMN番号.byte_arrayとなります。
    • ROW番号、COLUMN番号はコンテナのデータの順序番号を示し、番号0から採番されます。
  • マルチコンテナ形式の場合
    • --out オプションでファイル識別子を指定 ファイル識別子_コンテナ名_ROW番号_COLUMN番号.データ型
    • --out オプションでファイル識別子を省略 日時_コンテナ名_ROW番号_COLUMN番号.データ型

インポートで利用する外部オブジェクトファイルのファイル名は任意です。CSVデータファイルの該当カラムに、@データ型:任意のファイル名で記載します。

【例】外部オブジェクトファイルの命名例

 //BYTE配列を3カラム目に持つ コレクション(colb)をエクスポートした場合
 
  10月  4 12:51 2013 colb.csv
  10月  4 12:51 2013 colb_colb_0_3.byte_array 
  10月  4 12:51 2013 colb_colb_1_3.byte_array 
  10月  4 12:51 2013 colb_colb_2_3.byte_array
  10月  4 12:51 2013 colb_colb_3_3.byte_array
  10月  4 12:51 2013 colb_colb_4_3.byte_array
  10月  4 12:51 2013 colb_properties.json

  

【例】シングルコンテナデータファイルでの外部オブジェクトファイルの記述

 //メタデータファイル col01_properties.json

{
        "container": "col01",
        "containerFile": "col01.csv",
        "containerFileType": "csv",
        "containerType": "COLLECTION",
        "columnSet": [
            { "columnName": "name","type": "string"  },
            {"columnName": "status", "type": "boolean"},
            {  "columnName": "count", "type": "long" },
            { "columnName": "lob", "type": "byte[]"
            }
        ],        
        "indexSet": [
            {
                "columnName": "name",
                "type": "TREE"
            },
            {
                "columnName": "count",
                "type": "TREE"
            }
        ],
        "rowKeyAssigned": true
}

 //CSVデータファイル col01.csv

"#2013-11-01T19:41:35.320+0900  GridStore V1.5.00"
"#User:admin"
"%","col01_properties.json" 
"$","col01"
"name02","false","2","@BYTE_ARRAY:col101_col01_0_3.byte_array"

 //外部オブジェクトファイル col01_col01_0_3.byte_array

1,10,15,20,40,70,71,72,73,74
 

7 マルチキャスト方式以外のクラスタ構成方式の設定

マルチキャスト方式が利用不可能な環境では、固定リスト方式またはプロバイダ方式でクラスタを構成します。以下では、固定リスト方式とプロバイダ方式それぞれのネットワーク設定について説明します。

7.1 固定リスト方式

固定のアドレスリストを与えてノードを起動することで、そのリストを利用してクラスタを構成します。

固定リスト方式でクラスタを構成する場合は、クラスタ定義ファイルのパラメータを設定します。

クラスタ定義ファイル

パラメータデータ型意味
/cluster/notificationMemberstringクラスタ構成方式を固定リスト方式にする際に、アドレスリストを指定します。

クラスタ定義ファイルの設定例は以下のとおりです。

{
                             :
                             :
    "cluster":{
        "clusterName":"yourClusterName",
        "replicationNum":2,
        "heartbeatInterval":"5s",
        "loadbalanceCheckInterval":"180s",
        "notificationMember": [
            {
                "cluster": {"address":"172.17.0.44", "port":10010},
                "sync": {"address":"172.17.0.44", "port":10020},
                "system": {"address":"172.17.0.44", "port":10040},
                "transaction": {"address":"172.17.0.44", "port":10001},
                "sql": {"address":"172.17.0.44", "port":20001}
            },
            {
                "cluster": {"address":"172.17.0.45", "port":10010},
                "sync": {"address":"172.17.0.45", "port":10020},
                "system": {"address":"172.17.0.45", "port":10040},
                "transaction": {"address":"172.17.0.45", "port":10001},
                "sql": {"address":"172.17.0.45", "port":20001}
            },
            {
                "cluster": {"address":"172.17.0.46", "port":10010},
                "sync": {"address":"172.17.0.46", "port":10020},
                "system": {"address":"172.17.0.46", "port":10040},
                "transaction": {"address":"172.17.0.46", "port":10001},
                "sql": {"address":"172.17.0.46", "port":20001}
            }
        ]
    },
                             :
                             :
}

7.2 プロバイダ方式

アドレスプロバイダが提供するアドレスリストを取得してクラスタ構成を行います。

プロバイダ方式でクラスタを構成する場合は、クラスタ定義ファイルのパラメータを設定します。

クラスタ定義ファイル

パラメータデータ型意味
/cluster/notificationProvider/urlstringクラスタ構成方式をプロバイダ方式にする際に、アドレスプロバイダのURLを指定します。
/cluster/notificationProvider/updateIntervalstringアドレスプロバイダからリストを取得する間隔を指定します。1s以上、2^31s未満の値を指定します。

クラスタ定義ファイルの設定例は以下のとおりです。

{
                             :
                             :
    "cluster":{
        "clusterName":"yourClusterName",
        "replicationNum":2,
        "heartbeatInterval":"5s",
        "loadbalanceCheckInterval":"180s",
        "notificationProvider":{
            "url":"http://example.com/notification/provider",
            "updateInterval":"30s"
        }
    },
                             :
                             :
}

アドレスプロバイダはWebサービスとして構成するか、静的コンテンツとして構成することができます。以下の仕様を満たす必要があります。

  • GETメソッドに対応。
  • URLにアクセスすると、そのURLが書かれたクラスタ定義ファイルを持つクラスタのノードのアドレスリストをレスポンスとして返す。
    • レスポンスボディ:固定リスト方式において指定するノードリストの内容と同等のJSON
    • レスポンスヘッダ:Content-Type:application/jsonを含む

アドレスプロバイダからのレスポンスの例は以下のとおりです。

$ curl http://example.com/notification/provider
[
    {
        "cluster": {"address":"172.17.0.44", "port":10010},
        "sync": {"address":"172.17.0.44", "port":10020},
        "system": {"address":"172.17.0.44", "port":10040},
        "transaction": {"address":"172.17.0.44", "port":10001},
        "sql": {"address":"172.17.0.44", "port":20001}
    },
    {
        "cluster": {"address":"172.17.0.45", "port":10010},
        "sync": {"address":"172.17.0.45", "port":10020},
        "system": {"address":"172.17.0.45", "port":10040},
        "transaction": {"address":"172.17.0.45", "port":10001},
        "sql": {"address":"172.17.0.45", "port":20001}
    },
    {
        "cluster": {"address":"172.17.0.46", "port":10010},
        "sync": {"address":"172.17.0.46", "port":10020},
        "system": {"address":"172.17.0.46", "port":10040},
        "transaction": {"address":"172.17.0.46", "port":10001},
        "sql": {"address":"172.17.0.46", "port":20001}
    }
]

【メモ】

  • 各アドレスおよびポートはノード定義ファイルのserviceAddressおよびservicePortをモジュール(cluster,syncなど)ごとに指定します。
  • sqlの項目はGridDB Advanced Edition / Vector Editionのみで必要となります。
  • クラスタ定義ファイルの/cluster/notificationAddress、/cluster/notificationMember、/cluster/notificationProviderは、使用するクラスタ構成方式に合わせていずれか1つを設定してください。
  • クラスタ構成方式の詳細は『GridDB テクニカルリファレンス』(GridDB_TechnicalReference.html)を参照ください。

8 付録

以下、X.X.XはGridDBのバージョンを表します。

8.1 ディレクトリ構成

GridDBのサーバやクライアントをインストールした時のディレクトリ構成を以下に示します。

(サーバ/クライアントをインストールしたマシン)
/usr/griddb-xx-X.X.X/                                    インストールディレクトリ
                     Fixlist.pdf
                     Readme.txt
                     bin/
                         gs_xxx                          各種コマンド
                         gsserver                        サーバモジュール
                     conf/ 
                     etc/
                     lib/
                     license/
                     prop/                               プロパティファイル
    
/usr/griddb-xx-X.X.X/                                    インストールディレクトリ
                     lib/ 
                         gridstore-tools-X.X.X.jar
                         XXX.jar                         フリーソフトウェア

/usr/share/java/gridstore-tools.jar -> /usr/griddb-xx-X.X.X/lib/gridstore-tools-X.X.X.jar

/var/lib/gridstore/                                      GridDBホームディレクトリ(作業ディレクトリ)
                   admin/                                統合運用管理GUIホームディレクトリ(adminHome)
                   backup/                               バックアップファイル格納ディレクトリ
                   conf/                                 定義ファイルの格納ディレクトリ
                        gs_cluster.json                  クラスタ定義ファイル
                        gs_node.json                     ノード定義ファイル
                        password                         ユーザ定義ファイル
                   data/                                 データベースファイル格納ディレクトリ
                   log/                                  イベントログ格納ディレクトリ

/usr/bin/
         gs_xxx -> /usr/griddb-xx-X.X.X/bin/gs_xxx       各種コマンドへのリンク
         gsserver -> /usr/griddb-xx-X.X.X/bin/gsserver   サーバモジュールへのリンク
    
/etc/init.d/
            gridstore -> /usr/griddb-xx-X.X.X/etc/init.d/gridstore  rcスクリプト

(ライブラリをインストールしたマシン)
/usr/griddb-xx-X.X.X/                                    インストールディレクトリ
                     lib/
                         gridstore-X.X.X.jar
                         gridstore.h
                         libgridstore.so.0.0.0

/usr/share/java/gridstore.jar -> /usr/griddb-xx-X.X.X/lib/gridstore-X.X.X.jar

/usr/include/gridstore.h -> /usr/griddb-xx-X.X.X/lib/gridstore.h

/usr/lib64/
           libgridstore.so -> libgridstore.so.0
           libgridstore.so.0 -> libgridstore.so.0.0.0
           libgridstore.so.0.0.0 -> /usr/griddb-xx-X.X.X/lib/libgridstore.so.0.0.0

(ドキュメントをインストールしたマシン)
/usr/griddb-xx-X.X.X/                                    インストールディレクトリ
                     docs/
                          griddb-documents-X.X.X.zip

8.2 パラメータ一覧

GridDBの定義ファイルであるノード定義ファイルとクラスタ定義ファイルのパラメータ一覧を、以下に示します。

8.2.1 ノード定義ファイル(gs_node.json)

パラメータデータ型意味デフォルト
/dataStore/dbPathstringデータベースファイルディレクトリ"data"
/dataStore/backupPathstringバックアップファイルディレクトリ"backup"
/dataStore/syncTempPathstring長期同期用一時ファイルディレクトリ"sync"
/dataStore/storeMemoryLimitintメモリバッファサイズ"1024MB"
/dataStore/storeWarmStartboolean再起動時のウォームスタート(false:無効、true:有効)false
/dataStore/concurrencyint処理並列度1
/dataStore/logWriteModeintログ書き込みモード1
/dataStore/persistencyModestring永続化モード"NORMAL"
/dataStore/affinityGroupSizeintアフィニティグループ数4
/dataStore/storeComperssionModestringデータブロック圧縮モード"NO_COMPRESSION"
/checkpoint/checkpointIntervalstringチェックポイント実行間隔"60s"
/checkpoint/checkpointMemoryLimitstringチェックポイント用メモリバッファサイズ"1024MB"
/checkpoint/useParallelModebooleanチェックポイントの並列動作(false:無効、true:有効)false
/cluster/serviceAddressstringクラスタ管理のために使用する受信アドレス"127.0.0.1"
/cluster/servicePortintクラスタ管理のために使用する受信ポート10010
/sync/serviceAddressstringデータ同期に使用する受信アドレス"127.0.0.1"
/sync/servicePortintデータ同期に使用する受信ポート10020
/system/serviceAddressstring運用コマンドの接続アドレス"127.0.0.1"
/system/servicePortint運用コマンドの接続ポート10040
/system/eventLogPathstringイベントログファイルの出力ディレクトリ"log"
/transaction/serviceAddressstringトランザクション処理の受付アドレス"127.0.0.1"
/transaction/servicePortintトランザクション処理の受付ポート10001
/transaction/connectionLimitintコネクション数上限値5000
/trace/defaultstringイベントログ出力レベル"LEVEL_ERROR"
/trace/dataStorestring"LEVEL_ERROR"
/trace/collectionstring"LEVEL_ERROR"
/trace/timeSeriesstring"LEVEL_ERROR"
/trace/chunkManagerstring"LEVEL_ERROR"
/trace/checkpointFilestring"LEVEL_ERROR"
/trace/checkpointServicestring"LEVEL_INFO"
/trace/checkpointServiceDetailstring"LEVEL_ERROR"
/trace/logManagerstring"LEVEL_WARNING"
/trace/clusterOperationstring"LEVEL_INFO"
/trace/clusterServicestring"LEVEL_ERROR"
/trace/syncServicestring"LEVEL_ERROR"
/trace/systemServicestring"LEVEL_INFO"
/trace/systemServiceDetailstring"LEVEL_ERROR"
/trace/transactionManagerstring"LEVEL_ERROR"
/trace/sessionDetailstring"LEVEL_ERROR"
/trace/transactionDetailstring"LEVEL_ERROR"
/trace/timeoutDetailstring"LEVEL_ERROR"
/trace/transactionServicestring"LEVEL_ERROR"
/trace/transactionTimeoutstring"LEVEL_WARNING"
/trace/sessionTimeoutstring"LEVEL_WARNING"
/trace/replicationTimeoutstring"LEVEL_WARNING"
/trace/recoveryManagerstring"LEVEL_INFO"
/trace/recoveryManagerDetailstring"LEVEL_ERROR"
/trace/eventEnginestring"LEVEL_WARNING"
/trace/triggerServicestring"LEVEL_ERROR"

GridDB Advanced Edition / Vector Editionで上記に加えて利用するパラメータは以下のとおりです。

パラメータデータ型意味デフォルト
/sql/serviceAddressstringSQLクライアント接続用の受信アドレス"127.0.0.1"
/sql/servicePortintSQLクライアント接続用の受信ポート20001
/sql/storeSwapFilePathstringSQL中間ストアのスワップファイルディレクトリ"swap"
/sql/storeSwapSyncSizestringSQL中間ストアのスワップファイルのsyncおよび物理メモリキャッシュ消去を行うサイズ"1024MB"
/sql/storeMemoryLimitstringSQL中間ストアのメモリ上限"1024MB"
/sql/workMemoryLimitstringSQLワークエリアのメモリ上限"128MB"
/sql/workCacheMemorystringSQLワークエリアのメモリのキャッシュサイズ"128MB"
/sql/connectionLimitintコネクション数上限値5000
/sql/concurrencyint処理並列度5
/trace/sqlServicestringイベントログ出力レベル"LEVEL_WARNING"

8.2.2 クラスタ定義ファイル(gs_cluster.json)

パラメータデータ型意味デフォルト
/dataStore/partitionNumintパーティション数128
/dataStore/storeBlockSizestringブロックサイズ("64KB"、"1MB")"64KB"
/cluster/clusterNamestringクラスタ名""
/cluster/replicationNumintレプリカ数2
/cluster/notificationAddressstringクラスタ管理用のためのマルチキャスト用アドレス"239.0.0.1"
/cluster/notificationPortintクラスタ管理用のためのマルチキャスト用ポート20000
/cluster/notificationIntervalstringクラスタ管理用のためのマルチキャスト間隔"5s"
/cluster/heartbeatIntervalstringハートビート間隔"5s"
/cluster/loadbalanceCheckIntervalstringロードバランスチェック間隔"180s"
/cluster/notificationMemberarray固定リスト方式にする際のアドレスリスト
/cluster/notificationProvider/urlstringプロバイダ方式にする際のアドレスプロバイダのURL
/cluster/notificationProvider/updateIntervalintアドレスプロバイダからリストを取得する間隔"5s"
/sync/timeoutIntervalstring短期同期タイムアウト時間"30s"
/transaction/notificationAddressstringクライアントへのマルチキャスト用アドレス"239.0.0.1"
/transaction/notificationPortintクライアントへのマルチキャスト用ポート31999
/transaction/notificationIntervalstringクライアントへのマルチキャスト間隔"5s"
/transaction/replicationTimeoutIntervalstringレプリケーション・タイムアウト時間"10s"
/transaction/replicationModestringレプリケーション方法(0:非同期、1:準同期)0
/transaction/authenticationTimeoutIntervalstring認証タイムアウト時間"5s"

GridDB Advanced Edition / Vector Editionで上記に加えて利用するパラメータは以下のとおりです。

パラメータデータ型意味デフォルト
/sql/notificationAddressstringJDBC/ODBCクライアントへのマルチキャスト用アドレス"239.0.0.1"
/sql/notificationPortintJDBC/ODBCクライアントへのマルチキャスト用ポート41999
/sql/notificationIntervalstringJDBC/ODBCクライアントへのマルチキャスト間隔"5s"