OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

テーブル単体のリストア (7.2新機能)

公開日:
更新日:
アーキテクチャ
バックアップ・リカバリ
新バージョン/機能
#バックアップ
#リストア
#テーブル

はじめに

Vertica7.2より、フルバックアップから、指定したオブジェクトのみをリストア可能になりました。データベース全体のリストアは時間がかかる事も考えられるため、テーブルを誤って削除した場合など、特定オブジェクトを復旧したい場合に便利な機能です。指定可能なオブジェクトは、スキーマもしくはテーブルです。

テーブルを指定した場合のリストア動作

本機能を利用した場合の実行例をご紹介します。

構文

本機能を利用するには、リストアする時に 「–restore-objects」オプションを指定します。

vbr.py —task […] —restore-objects=[…] —config-file=[…]

【各オプションの説明】

オブション

説明

--task {backup | copycluster | init | listbackup | restore }

backup
構成ファイルに指定した内容をもとに「フルバックアップ」または「オブジェクトレベル」のオンラインバックアップを取得する。

restore
構成ファイルに指定した内容をもとに「フルバックアップ」または「オブジェクトレベル」のデータをリストアする。

copycluster
Verticaデータベースを別のVerticaクラスタへコピーする。

listbackup
構成ファイルに関連づけられた、既存のバックアップリストが表示される。リストアするバックアップ名を確認する場合に利用する。

init
構成ファイルで指定されているディレクトリを初期化する。最初のバックアップ取得前に、このオプションを指定し vbr.py を実行する必要がある。もし構成ファイルに指定されたディレクトリが存在しない場合は、このタイミングで作成される。

--restore-objects

「フルバックアップ」または「オブジェクトレベルのバックアップ」から、リストア対象のオブジェクト名を指定する。

--config-file

利用する構成ファイルを指定する。このファイルが存在しないと vbr.py の実行はできない。

実行結果

フルバックアップから「products」テーブルを指定し、リストアした場合の動作になります。

1. 現在のテーブル情報

//「customers」「products」「sales」の3テーブルが存在する状態
dbadmin=> \d
                 List of tables
 Schema |   Name    | Kind  |  Owner  | Comment
--------+-----------+-------+---------+---------
 store  | customers | table | dbadmin |
 store  | products  | table | dbadmin |
 store  | sales     | table | dbadmin |
(3 rows)

//削除対象テーブルのデータ値を確認
dbadmin=> select * from store.products;
 col1
------
 1
 2
 3
(3 rows)

2. フルバックアップの取得

//バックアップ取得先ディレクトリの初期化
$ vbr.py --task init --config-file ./backup_snapshot.ini
Initializing backup locations.
Backup locations initialized.

//フルバックアップの取得
$ vbr.py --task backup --config-file ./backup_snapshot.ini
Starting backup of database testdb.
Participating nodes: v_testdb_node0001.
Snapshotting database.
Snapshot complete.
Approximate bytes to copy: 53 of 447404783 total.
[==================================================] 100%
Copying backup metadata.
Finalizing backup.
Backup complete!

//取得されたバックアップの確認
$ vbr.py --task listbackup --config-file ./backup_snapshot.ini
backup                            backup_type   epoch   objects   include_patterns   exclude_patterns   nodes(hosts)                   version    file_system_type
backup_snapshot_20181109_084811   full          40                                                      v_testdb_node0001(testasrv1)   v9.1.1-3   [Linux]
backup_snapshot_20181109_052928   full          77                                                      v_testdb_node0001(testasrv1)   v9.1.1-3   [Linux]
backup_snapshot_20181109_052855   full          58                                                      v_testdb_node0001(testasrv1)   v9.1.1-3   [Linux]
backup_snapshot_20181109_052815   full          39                                                      v_testdb_node0001(testasrv1)   v9.1.1-3   [Linux]

3. テーブルの削除

//「products」テーブルを削除
dbadmin=> drop table store.products;
DROP TABLE

dbadmin=> \d
                 List of tables
 Schema |   Name    | Kind  |  Owner  | Comment
--------+-----------+-------+---------+---------
 store  | customers | table | dbadmin |
 store  | sales     | table | dbadmin |
(2 rows)

4. 復旧対象テーブルのリストア

//「products」テーブルを指定してリストア
$ vbr.py --task restore --restore-objects=store.products --config-file=backup_snapshot.ini
Starting object restore of database testdb.
Restoring from restore point: backup_snapshot_20181109_084811
Participating nodes: v_testdb_node0001.
Loading snapshot catalog from backup.
Objects to restore: store.products
Preprocessing snapshot...
Preprocessing complete.
Restoring objects: store.products
Approximate bytes to copy: 53.
Syncing data from backup to cluster nodes.
[==================================================] 100%
Finalizing restore.
Restore complete!

5. リストア後のテーブル情報

//正常にリストアされていることの確認
dbadmin=> \d
                 List of tables
 Schema |   Name    | Kind  |  Owner  | Comment
--------+-----------+-------+---------+---------
 store  | customers | table | dbadmin |
 store  | products  | table | dbadmin |
 store  | sales     | table | dbadmin |
(3 rows)

dbadmin=> select * from store.products;
 col1
------
 1
 2
 3
(3 rows)

参考情報

・Verticaのバックアップ方法
https://www.ashisuto.co.jp/cm/analytics-database/vertica_backup/

・既存のテーブルを上書きしないでリストアする方法 (7.2新機能)
https://www.ashisuto.co.jp/cm/analytics-database/coexist/

検証バージョンについて

この記事の内容はVertica 9.1で確認しています。