OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

Verticaのバックアップ方法

公開日:
更新日:
バックアップ・リカバリ
#バックアップ

はじめに

Verticaのバックアップ方法をご紹介します。Verticaのバックアップ方法として、以下の方法が挙げられます。

・物理オンラインバックアップ
・CSVエクスポート

物理オンラインバックアップ

Verticaのバックアップユーティリティ(vbr.py)を使います。データベースを稼働した状態でVerticaのデータをバックアップします。この方法では、3つのバックアップ単位でバックアップを取得する事ができます。

・データベース単位
・スキーマ単位
・テーブル単位

特徴

データベースを停止する事なく、バックアップが取得できます。
また、バックアップ取得中でもデータのINSERT/COPY/DELETE/UPDATEが可能です。
バックアップ単位を選択する事ができるため、柔軟なバックアップ運用が可能です。
リストアポイント(デフォルト値は1)を設定する事で、[設定値(整数)+1]分の世代を管理します。

方法

1. バックアップ構成ファイルの作成

バックアップを行う場合は、まず最初に設定ファイルを作成します。

 $ vi <任意の設定ファイル名>

バックアップ設定ファイルの作成例(backup_test.ini)

$ vi /home/dbadmin/backup_scripts/backup_test.ini
[Database]
dbName = testdb
#データベース名を設定します。

[Misc]
snapshotName = backup_test
#任意のスナップショット名を指定します。

restorePointLimit = 2
#リストアポイント(増分バックアップ時の世代数)を指定します。

passwordFile = /home/dbadmin/backup_scripts/db_backup.pass
#パスワードファイル名を指定します。

[Mapping]
v_testdb_node0001 = [172.16.60.25]:/home/dbadmin/backups
v_testdb_node0002 = [172.16.60.26]:/home/dbadmin/backups
v_testdb_node0003 = [172.16.60.27]:/home/dbadmin/backups
#v_<DB名>_<ノード名> = [<バックアップ保存先のIPアドレス>]:<バックアップ保存ディレクトリ>

また、バックアップをスケジューラ等で自動実行したい場合、パスワード入力を省略するパスワードファイルも併せて作成する必要があります。

 $ vi <任意のパスワードファイル名>

パスワードファイルの作成例(db_backup.pass)

 $ vi /home/dbadmin/backup_scripts/db_backup.pass
[Passwords]
dbPassword = *****
#データベースのdbadminユーザのパスワードを指定します。
$ chown dbadmin:verticadba /home/dbadmin/backup_scripts/db_backup.pass
$ chmod 600 /home/dbadmin/backup_scripts/db_backup.pass
$ ls -l /home/dbadmin/backup_scripts/db_backup.pass
-rw------- 1 dbadmin verticadba 5  4月  5 19:52 /home/dbadmin/backup_scripts/db_backup.pass
#パスワードファイルは、Vertica管理ユーザ(dbadmin)/グループ(verticadba)、読み書き可能(600)で作成する必要があります

2. バックアップを取得

バックアップ保存先のディレクトリがない場合は、予め作成しておきます。

$ mkdir /home/dbadmin/backups

データベースのバックアップ環境を初期化します。
※Vertica 7.2から必須の手順です。

$ vbr.py --task init --config-file ./backup_test.ini
Initializing backup locations.
Backup locations initialized.

データベースのバックアップを行います。

$ vbr.py --task backup --config-file ./backup_test.ini
Starting backup of database testdb.
Participating nodes: v_testdb_node0001, v_testdb_node0002, v_testdb_node0003.
Snapshotting database.
Snapshot complete.
Approximate bytes to copy: 95566399 of 95566399 total.
[==================================================] 100%
Copying backup metadata.
Finalizing backup.
Backup complete!

3. バックアップデータの確認

取得したバックアップを確認します。

$ vbr.py --task listbackup --config-file ./backup_test.ini
backup                            epoch   objects   hosts(nodes)                                                                      file_system_type
backup_snapshot_20170217_105700   153               v_testdb_node0001(172.16.60.25), v_testdb_node0002(172.16.60.26), v_testdb_node0003(172.16.60.27)   [Linux]

なお、ここでリストされる行は、vbrで世代管理されているバックアップデータです。
管理される世代数は「リストアポイントで指定した整数+1」です。

CSVエクスポート

vsqlでアウトプットフォーマットオプションを使用して、テーブルデータをCSVに出力します。

特徴

バックアップとして出力したファイルがCSVのため、データの中を確認する事ができます。
Verticaのバックアップユーティリティ(vbr.py)で管理ができないため、バックアップデータの世代管理(古いバックアップデータの削除など)はユーザ自身で行う必要があります。

方法

1. 任意のテーブルデータをCSVに出力

以下のコマンドで、テーブルデータを出力します。
(bashなどのシェルでコマンドを実行します)

$ vsql -F '区切り文字' -At -o 出力先 -c "エクスポート対象のSELECT文";

2. 任意のテーブルのDDLを出力

以下のコマンドで、テーブルのDDL(CREATE TABLE文)を出力します。
(vsqlでデータベースにログインした状態でコマンドを実行します)

dbadmin=> SELECT EXPORT_OBJECTS('出力先','出力対象のテーブル名');
#出力対象のテーブル名は,(カンマ)で複数指定する事ができます。

以下のようにEXPORT_OBJECTS関数の第2引数を空白にすると、そのデータベースユーザがアクセス可能な全てのテーブル(仮想テーブルではない)のDDLを出力します。

dbadmin=> SELECT EXPORT_OBJECTS('出力先','');

参考情報

バックアップデータの管理方法
バックアップの正常性を確認する方法
vbrによるバックアップ/リストア時にワイルドカードを使用する
Verticaのオンラインバックアップで、AWSのS3に直接バックアップを取得する方法
バックアップリストアのタスク実行をシミュレーションする方法
SELECT結果をCSV出力する方法
SELECT結果をCSV出力する方法(その2)

検証バージョンについて

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

更新履歴

2022/09/22 一部コマンドを修正
2022/04/07 v11.0用に改訂、全体的に体裁を修正、バックアップ中の実行可能処理にCOPYを追加、
        パスワードファイルの権限設定コマンドを追加、参考情報のリンクを追加
2022/01/20 パスワードファイルの作成例を修正
2021/07/14 Vertica10.1用に修正、パスワードファイルの権限について注記を追加
2019/11/28 一部コマンドを修正
2015/04/23 本記事を公開