はじめに
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. 現在のテーブル情報
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//「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. フルバックアップの取得
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
//バックアップ取得先ディレクトリの初期化 $ 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. テーブルの削除
1 2 3 4 5 6 7 8 9 10 11 |
//「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. 復旧対象テーブルのリストア
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//「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. リストア後のテーブル情報
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//正常にリストアされていることの確認 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のバックアップ方法http://vertica-tech.ashisuto.co.jp/vertica_backup/
・既存のテーブルを上書きしないでリストアする方法 (7.2新機能)
http://vertica-tech.ashisuto.co.jp/coexist/