# groonga - オープンソースのカラムストア機能付き全文検索エンジン

- English

# 7.1.1. `grndb`

## 7.1.1.1. 概要

注釈

この実行ファイルは実験的な機能です。

バージョン 4.0.9 で追加.

`grndb` はGroongaのデータベースを管理します。

機能は次の通りです。

> - データベースが壊れているかどうかをチェックする。

> - 壊れたデータベースが復旧可能なら自動でデータベースを復旧する。

## 7.1.1.2. 構文

`grndb` にはコマンドとデータベースのパスを渡します。:

    grndb COMMAND [OPTIONS] DATABASE_PATH

利用可能なコマンドは以下の通りです。

> - `check` - データベースが壊れているかどうかをチェックします。

> - `recover` - データベースを復旧します。

## 7.1.1.3. 使い方

以下は `/var/lib/groonga/db/db` にあるデータベースをチェックする例です:

    % grndb check /var/lib/groonga/db/db

以下は `/var/lib/groonga/db/db` にあるデータベースを復旧する例です:

    % grndb recover /var/lib/groonga/db/db

## 7.1.1.4. コマンド一覧

このセクションでは利用可能なコマンドについて説明します。

### 7.1.1.4.1. `check`

既存のGroongaデータベースをチェックします。もし、データベースが壊れていたら `grndb` は詳細を報告し、 `0` 以外の終了ステータスで終了します。

注釈

このコマンドを他のプロセスが開いているデータベースに対しては使ってはいけません。もし、データベースが他のプロセスから開かれていると、このコマンドは間違った結果を報告する可能性があります。

`check` にはいくつかオプションがあります。

#### 7.1.1.4.1.1. `--target`

バージョン 5.1.2 で追加.

チェック対象のオブジェクトを指定します。

もし、データベースが大きく、かつ、信頼できないオブジェクトがわかっているなら、このオプションが役に立つでしょう。 `check` は大きなデータベースほど処理に時間がかかります。 `--target` オプションでチェック対象を限定することでチェック時間を削減できます。

`check` はチェック対象を再帰的にチェックします。なぜなら、信頼できないオブジェクトに関連するオブジェクトも信頼できないことが多いからです。

チェック対象がテーブルの場合、そのテーブルのすべてのカラムも再帰的にチェックします。

チェック対象がテーブルでテーブルのキーの型が他のテーブルの場合、他のテーブルも再帰的にチェックします。

チェック対象がカラムで値の型がテーブルの場合、そのテーブルも再帰的にチェックします。

チェック対象がインデックスカラムの場合、値の型に指定したテーブルとすべてのソースも再帰的にチェックします。

以下は `Entries` テーブルとそのカラムだけをチェックする例です。:

    % grndb check --target Entries /var/lib/groonga/db/db

以下は `Entries.name` カラムだけをチェックする例です。:

    % grndb check --target Entries.name /var/lib/groonga/db/db

### 7.1.1.4.2. `recover`

既存の壊れたGroongaデータベースを復旧します。

もしデータベースが壊れていなかったら、 `grndb` は何もせず終了ステータス `0` で終了します。

もしデータベースが壊れていて、壊れているのがインデックスカラムだけなら、 `grndb` は壊れているインデックスカラムを復旧して終了ステータス `0` で終了します。インデックス対象のデータが大きい場合は復旧に長時間かかることもあります。

もしデータベースが壊れていて、壊れているのがテーブルまたはデータカラムの場合は、 `grndb` は壊れている原因を報告して `0` 以外の終了ステータスで終了します。データベースを復旧可能かどうかは `check` コマンドで確認できます。

注釈

このコマンドを他のプロセスが開いているデータベースに対しては使ってはいけません。もし、データベースが他のプロセスから開かれていると、このコマンドはデータベースを壊してしまう可能性があります。