はじめに
Verticaのバックアップ方法をご紹介します。Verticaのバックアップ方法として、以下の方法が挙げられます。
・物理オンラインバックアップ
・CSVエクスポート
・CSVエクスポート
物理オンラインバックアップ
Verticaのバックアップユーティリティ(vbr.py)を使います。データベースを稼働した状態でVerticaのデータをバックアップします。この方法では、3つのバックアップ単位でバックアップを取得する事ができます。
・データベース単位
・スキーマ単位
・テーブル単位
・スキーマ単位
・テーブル単位
特徴
データベースを停止する事なく、バックアップが取得できます。また、バックアップ取得中でもデータのINSERT/COPY/DELETE/UPDATEが可能です。
バックアップ単位を選択する事ができるため、柔軟なバックアップ運用が可能です。
リストアポイント(デフォルト値は1)を設定する事で、[設定値(整数)+1]分の世代を管理します。
方法
1. バックアップ構成ファイルの作成
バックアップを行う場合は、まず最初に設定ファイルを作成します。
1 |
$ vi <任意の設定ファイル名> |
バックアップ設定ファイルの作成例(backup_test.ini)
1 |
$ vi /home/dbadmin/backup_scripts/backup_test.ini |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[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アドレス>]:<バックアップ保存ディレクトリ> |
また、バックアップをスケジューラ等で自動実行したい場合、パスワード入力を省略するパスワードファイルも併せて作成する必要があります。
1 |
$ vi <任意のパスワードファイル名> |
パスワードファイルの作成例(db_backup.pass)
1 |
$ vi /home/dbadmin/backup_scripts/db_backup.pass |
1 2 3 |
[Passwords] dbPassword = ***** #データベースのdbadminユーザのパスワードを指定します。 |
1 2 3 4 5 |
$ 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. バックアップを取得
バックアップ保存先のディレクトリがない場合は、予め作成しておきます。
1 |
$ mkdir /home/dbadmin/backups |
データベースのバックアップ環境を初期化します。
※Vertica 7.2から必須の手順です。
1 2 3 |
$ vbr.py --task init --config-file ./backup_test.ini Initializing backup locations. Backup locations initialized. |
データベースのバックアップを行います。
1 2 3 4 5 6 7 8 9 10 |
$ 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. バックアップデータの確認
取得したバックアップを確認します。
1 2 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などのシェルでコマンドを実行します)
1 |
$ vsql -F '区切り文字' -At -o 出力先 -c "エクスポート対象のSELECT文"; |
2. 任意のテーブルのDDLを出力
以下のコマンドで、テーブルのDDL(CREATE TABLE文)を出力します。(vsqlでデータベースにログインした状態でコマンドを実行します)
1 2 |
dbadmin=> SELECT EXPORT_OBJECTS('出力先','出力対象のテーブル名'); #出力対象のテーブル名は,(カンマ)で複数指定する事ができます。 |
以下のようにEXPORT_OBJECTS関数の第2引数を空白にすると、そのデータベースユーザがアクセス可能な全てのテーブル(仮想テーブルではない)のDDLを出力します。
1 |
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 本記事を公開
- 投稿タグ
- CSV, Vertica バックアップ