はじめに

Vertica7.2より、既存テーブルが存在する場合も上書きせず、別スキーマにリストア可能となりました。誤ってテーブルのデータを削除してしまった場合、リストアしたテーブルと既存テーブルを同時に保持できるため、データの差分をチェックすることができます。

イメージ図

① 「sales」テーブルのデータをオペレーションミスで誤って削除しました。
別スキーマ1-4

② フルバックアップより「sales」テーブルをリストアします。
別スキーマ2

③ 既存の「store」スキーマではなく「backup_snapshot_20160129070309_store」スキーマが、新しく作成されてリストアされます。
別スキーマ3

④ 「store」スキーマと「backup_snapshot_20160129070309_store」スキーマの「sales」テーブルの結果を比較し、データの差分を確認できます。
別スキーマ4-2
※最新データではなく、「バックアップ時点」のデータと比較ができます。

リストアのモード

本機能を利用するには、構成ファイルの設定時に「objectRestoreMode」パラメータで「coexist」を指定します。

構成ファイルの設定例
[Misc]
snapshotName = backup_snapshot
restorePointLimit = 1
objectRestoreMode = coexist

「objectRestoreMode」で指定可能な各モードの説明です。
種類説明
createOrReplaceデフォルト値。対象テーブルが存在しない場合、オンラインバックアップから対象テーブルをリストアする。既に対象テーブルが存在する場合、データを置き換えてリストアする。(Vertica7.1以前の overwrite=true に相当)
create対象テーブルが存在しない場合、オンラインバックアップから対象テーブルをリストアする。既に対象テーブルが存在する場合、エラーを返して、そのテーブルのリストアをスキップする。(7.1以前の overwrite=false に相当)
coexist<backup>_<timestamp>_<object_name> 形式のスキーマが作成され、そのスキーマ内に対象テーブルがリストアされる。スキーマが分離されるので、既存テーブルとリストアされたテーブルが共存できる。


「coexis」を利用した場合の動作

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

1.「バックアップ/リストア用」の構成ファイル作成


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


3. テーブルのレコード削除


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


5. 既存とリストアしたテーブルの差分チェック


参考情報

・Verticaのバックアップ方法
http://vertica-tech.ashisuto.co.jp/vertica_backup/

・テーブル単体のリストア (7.2新機能)
http://vertica-tech.ashisuto.co.jp/restore_objects/

検証バージョンについて

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