はじめに
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 本記事を公開