HBaseShellのSnapshotコマンドについて

スポンサーリンク

HBase Shell の Snapshot に関する操作方法です。

Snapshotコマンド

コマンド 説明
snapshot スナップショットを取得する。
list_snapshots スナップショットの一覧を確認する。
restore_snapshot スナップショットを元のテーブルに復元する。
clone_snapshot スナップショットから別のテーブルを作成する。
delete_snapshot スナップショットを削除する。
delete_all_snapshot 全てのスナップショットを削除する。

 Apache HBase ™ HBase Snapshots

コマンド詳細

snapshot

スナップショットを取得するテーブルとスナップショット名を指定します。デフォルトではスナップショットが作成される前にフラッシュが実行されるので、メモリ内のデータがスナップショットに含まれますが、SKIP_FLUSHオプションを付けるとフラッシュが無効になります。

snapshot 'namespace:sourceTable', 'snapshotName', [{SKIP_FLUSH => true}]
-- EXAMPLE
> snapshot 'test', 'test_snapshot_20160310'
0 row(s) in 1.2920 seconds

list_snapshots

スナップショットの一覧を取得する際には正規表現のフィルターを使用できます。引数を省略した場合は全てのスナップショットが取得されます。

list_snapshots 'regex'
-- EXAMPLE
> list_snapshots 'test_s.*'
SNAPSHOT                                       TABLE + CREATION TIME
 test_snapshot_20160310                        test (Sun Mar 27 16:53:14 +0900 2016)
1 row(s) in 0.0680 seconds

=> ["test_snapshot_20160310"]

restore_snapshot

スナップショットを元のテーブルに復元するには、スナップショット名を指定するのみです。

restore_snapshot 'snapshotName'

ただし事前に復元対象のテーブルをdisableコマンドで使用不可の状態にする必要があります。復元したあとはenableコマンドで使用可能に戻しましょう。

-- EXAMPLE
> disable 'test'
0 row(s) in 1.4790 seconds

> restore_snapshot 'test_snapshot_20160310'
0 row(s) in 3.2760 seconds

> enable 'test'
0 row(s) in 1.3780 seconds

clone_snapshot

スナップショットから取得元とは別のテーブルを作成します。

clone_snapshot 'snapshotName', 'namespace:tableName'
-- EXAMPLE
> clone_snapshot 'test_snapshot_20160310', 'test_clone'
0 row(s) in 1.0700 seconds

> scan 'test_clone'
ROW                                            COLUMN+CELL
 row1                                          column=cfamily1:v1, timestamp=1459066275045, value=hoge
1 row(s) in 0.0310 seconds

delete_snapshot

スナップショットが必要なくなったら削除します。

delete_snapshot 'snapshotName'
-- EXAMPLE
> delete_snapshot 'test_snapshot_20160310'
0 row(s) in 1.0700 seconds

> list_snapshots 'test_s.*'
SNAPSHOT                                       TABLE + CREATION TIME
0 row(s) in 0.1750 seconds

=> []

delete_all_snapshot

復数のスナップショットを削除できます。引数を省略することはできないので、全てのスナップショットを削除したい場合はdelete_all_snapshot '.*'で可能です。

delete_all_snapshot 'regex'
> delete_all_snapshot 'test.*'
SNAPSHOT                                       TABLE + CREATION TIME
 test_table1_snapshot                          test_table1 (Sun Mar 27 16:25:23 +0900 2016)
 test_table2_snapshot                          test_table2 (Sun Mar 27 16:26:14 +0900 2016)

Delete the above 2 snapshots (y/n)?
y
0 row(s) in 0.1520 seconds
2 snapshots successfully deleted.