はじめに

Verticaデータベースのコピーの作り方を紹介します。
ここでは、バックアップユーティリティ(vbr.py)のCOPY CLUSTER機能を使ってデータベースのコピーを行います。
そのために、2セットのVerticaシステムを用意します。
片方を通常の業務で使うサーバ(コピー元)、もう片方をコピーのターゲットサーバ(コピー先)とします。

矢印


このCOPY CLUSTER機能のメリットとして、本番機と同じデータを別の筐体にコピーする事で、本番機に余計な負荷をかけずにテストをしたいケースなどに活用できます。
また、COPY CLUSTER機能のための特別なライセンスは必要ないため、リーズナブルにデータベースのコピーを作成する事ができます。

前提条件

このCOPY CLUSTER機能を実装するにあたって、以下の前提条件があります。

・ディレクトリ(Verticaカタログ、データ、temp)をコピー元とコピー先とで同一にする。
・クラスタを構成するノード数は、コピー元とコピー先とで同じノード数にする。
・データベース名は、コピー元とコピー先とで同じデータベース名にする。
・コピー先のデータベースは空の状態にする。
・ノード名(v_mart_node0001など)は、コピー元とコピー先とで同じノード名にする。
・コピー元とコピー先はネットワーク疎通ができる
・データベースアドミニストレーター(dbadmin)は全てのノードで同じアカウントにする。
・データベースアドミニストレーター(dbadmin)は全てのノード間で、パスワードレスでSSH接続ができる。
・コピーできるのはフルバックアップのバックアップのみ。
(オブジェクトレベルのバックアップは使用できません)


手順

COPY CLUSTER機能でデータベースのコピーを実施します。
ここでは、1台構成のコピー元サーバ(node1)、1台構成のコピー先サーバ(node2)を作成する事にします。

1. 2セットのVerticaシステムの準備

Verticaソフトウェアをnode1とnode2の両方にインストールしておきます。

2. データベースの作成

Admintoolsを使って、node1とnode2の両方でデータベースを作成します。
この時、データベース名、データファイルとカタログのパスなどは同一にします。
以下の例では、データベース名に「ssbm」、カタログ用パスに「/home/dbadmin/」、データ用パスに「/home/dbadmin/」、データベースのパスワードに「ssbm」を指定しています。

[node1での操作]


[node2での操作]



3. SSHのパスワードレス設定

dbadminユーザ(OSユーザ)ですべてのノードにパスワードレスでSSH接続できるようにします。
まずは、以下の手順でSSHの認証用キーを作成します。

次に、公開キーをauthorized_keysファイルにコピーします。

次に、authorized_keysファイルを全ノードに配布します。
最終的に、全ノードの公開キーを含んだauthorized_keysファイルをすべてのノードが持った状態にします。

[node1での操作]

[node2での操作]


パスワードレスでSSH接続ができる事を確認します。

[node1での操作]

[node2での操作]


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

コピー元であるnode1でバックアップ構成ファイルを作成します。
ここでは、/home/dbadmin/backup_confディレクトリに置くことにします。
バックアップ構成ファイルのファイル名は、copy_database.iniとします。

[node1での操作]


COPY CLUSTER機能のために設定すべきポイントは以下のパラメータです。

Specify objects (no default): オブジェクトレベルのバックアップはできないためフルバックアップにします。
Backup host name (no default): コピー先のホスト名を入力します。

5. バックアップ構成ファイルの配布

node1と同じパス(/home/dbadmin/backup_conf/)に配布します。
パックアップ用のパスワードファイルを作成している場合は、それも配布します。

[node1での操作]


6. コピー先のデータベースの停止

COPY CLUSTERを実行するには、コピー先のデータベースを停止する必要があります。

[node2での操作]


7. データベースにデータロード

ここまでの手順でCOPY CLUSTERの準備は整いました。
しかし、この時点のデータベースは空っぽの状態ですので動作確認のためにテーブルを作成しデータをロードします。
ここでは、LINEORDERテーブルを作成し、データをロードすることにします。
[node1での操作]



8. データベースのコピー

データベースのコピーを開始します。


9. コピー結果の確認

コピー元に作成したテーブルとそのデータが、コピー先に正常にコピーされているかを確認します。
ここでは、テーブルデータのレコード数を確認する事にします。

[node1での操作]



[node2での操作]
node2のデータベースは停止した状態ですので、データベースを起動します。


node1とnode2のレコード数が同じである事が確認できました。
これより、正常にコピーできている事が確認できました。

まとめ

このようにVerticaでは簡単にデータベースのコピーを作成することができます。
しかし、コピーするデータベースのサイズが大きければ大きいほど、コピー処理の所要時間も大きくなります。そのような場合には、コピー元とコピー先間のネットワーク帯域を大きくするなどの対策が必要です。

参考

Copying the Database to Another Cluster

検証バージョンについて

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