EnterpriseモードからEonモードへデータベースをマイグレーションする方法
はじめに
Verticaにはデータベース内のデータを取り扱う方法として、サーバのローカルディスクにデータを保存するEnterpriseモードと共有ストレージにデータを保存するEonモードが存在します。
こちらの記事では、Enterpriseモードで作成されたVerticaデータベースをEonモードへマイグレーションする方法をAWSをベースにご紹介します。
なお、Eonモードの概要については以下の記事にて紹介していますので、あわせてご確認ください。
Eonモードの概要(Vertica 9.1新機能)
Eonモードを構成できる環境
Eonモードを構成できる環境は以下の通りです。
分類 | 利用可能な環境 |
|---|---|
クラウド環境 | 以下のいずれかを利用 |
オンプレミス環境 | 以下のいずれかを利用 |
推奨事項
有事の際に切り戻しができるようにサーバのシステムバックアップ、およびvbrを利用したVerticaデータベースのバックアップを取得することを推奨します。
マイグレーション方法概要
マイグレーションの流れ
Eonモードへのマイグレーションは以下の流れで行います。
マイグレーション時に使用する主要コマンド
VerticaにはEnterpriseモードからEonモードへマイグレーションするための関数が用意されています。
なお、以下の関数はVertica 10.0以降で利用することができます。
関数
MIGRATE_ENTERPRISE_TO_EON (‘communal‑storage‑location’, ‘depot‑location’ [, is‑dry‑run])
パラメータ
パラメータ | 説明 | 設定値/例 |
|---|---|---|
communal‑storage‑location | 共有ストレージのパスを指定します。 | [AWS, PureStorage, MinIOの場合] |
depot‑location | Eonモードのデポを配置するパスを指定します。 | 例)/vertica/depot |
is‑dry‑run | trueの場合、マイグレーション前提条件を満たしているかチェックのみを行います。 | true/false |
マイグレーション方法詳細(ソースデータベース側)
以下の手順で利用する環境の情報は以下の通りです。
項目 | 値 |
|---|---|
環境 | AWS |
データベース名 | verticadb |
ノード数 | 3ノード |
S3ロケーション | s3://kka-verticadbbucket |
デポロケーション | /vertica/depot |
ターゲットデーベース | 192.168.0.203 |
なお、OSコマンドはOSユーザのdbadminユーザにて、SQLコマンドはすべてDBユーザのdbadminにて実行してください。
前提条件
以下の条件をすべて満たしていることを確認します。
Verticaバージョン
マイグレーション対象のVerticaデータベースのバージョンが10.0以上であること。
# VERSION()関数にて確認
$ vsql -w password
Welcome to vsql, the Vertica Analytic Database interactive terminal.
VerticaDB=> SELECT VERSION();
VERSION
-------------------------------------
Vertica Analytic Database v24.3.0-0
(1 row)※バージョン条件を満たさない場合は、目標とするバージョンまでバージョンアップを行います。
参考:Verticaのバージョンアップ方法について
ノードタイプ/ノードステータス
Verticaデータベースを構成するすべてのノードがノードタイプ「PERMANENT」、もしくは「EPHEMERAL」であり、ステータスが「UP」であること。
# システムテーブルNODESから確認
VerticaDB=> SELECT node_name, node_type, node_state FROM nodes;
node_name | node_type | node_state
----------------------+-----------+------------
v_verticadb_node0001 | PERMANENT | UP
v_verticadb_node0002 | PERMANENT | UP
v_verticadb_node0003 | PERMANENT | UP
(3 rows)クラスター構成
データベースが「エラスティッククラスター」として構成されていること。
# システムテーブルELASTIC_CLUSTERから確認
VerticaDB=> SELECT is_enabled FROM elastic_cluster;
is_enabled
------------
t
(1 row)共有ロケーション
共有ロケーションが作成済みであること。
データベースの構成要件
次の構成パラメータがデータベースレベルで設定されていること。
構成環境 | 構成要件 |
|---|---|
AWS | ・AWSRegion |
GCP | ・GCSEndpoint |
Azure | ・共有ストレージの Azure Blob Storage の場所を設定するには、azb:// schema URI を使用する必要があります。 |
Pure Storage/ | ・AWSEndpoint |
HDFS | ・ソースデータベースは、(該当する場合)高可用性(HA)およびKerberos認証の設定を含め、HDFSにアクセスするように構成されている必要があります。 |
非サポートプロジェクション
Eonモードでサポートされていない以下の4タイプのプロジェクションが存在しないこと。
この項目はMIGRATE_ENTERPRISE_TO_EON関数を実行した際に検出されます。
次項の手順でマイグレーション条件チェックを実行し、問題が検出された場合はこちらの解決方法を参考にしてください。
プロジェクションが無効な理由 | 説明 | 解決方法 |
|---|---|---|
Inconsistent with cluster segmentation. | クラスタにノードが追加され、プロジェクションデータのデータ分散が新しいクラスタ分割要件と一致していない場合に発生 | クラスタ、もしくはテーブルのリバランスを実行します。 |
Does not support elastic segmentation. | プロジェクションがNODESオプションで作成された、もしくはエラスティックセグメンテーションが無効になっているデータベースで作成された場合に発生 | プロジェクションを削除、もしくは再作成してすべてのノードで利用できるようにします。 |
Defined with a GROUPED clause. | 複数のカラムを1つのROSコンテナに統合している(GROUPED句を使ったプロジェクションを作成した)場合に発生 | プロジェクションを削除する、もしくはGROUPED句を使わずにプロジェクションを再作成します。 |
Data stored in unbundled storage containers. | バージョン 7.2 でストレージコンテナのバンドルが導入される前に作成された Vertica データベースでのみ発生 | COMPACT_STORAGE関数を使い、データベース内のストレージコンテナを束ねます。 |
マイグレーション条件チェック(ドライラン)
MIGRATE_ENTERPRISE_TO_EON関数の第3パラメータに「true」を指定して、ソースデータベースがマイグレーション条件を満たしているかチェックを行います。
$ vsql -w password
Welcome to vsql, the Vertica Analytic Database interactive terminal.
VerticaDB=> SELECT MIGRATE_ENTERPRISE_TO_EON('s3://kka-verticadbbucket', '/vertica/depot', true);
## マイグレーション条件を満たしている場合の出力 ##
MIGRATE_ENTERPRISE_TO_EON
----------------------------------------------------------------
v_verticadb_node0001,v_verticadb_node0002,v_verticadb_node0003
(1 row)
## マイグレーション条件を満たしていない場合の出力 ##
ERROR 9729: Inconsistent projections, grouped ROSes, or projections with grouped columns have been found. See error log at [/vertica/catalog/verticadb/v_verticadb_node0001_catalog/migrate_enterprise_to_eon_error.log]
HINT: Please retry after addressing problematic projections
※エラーが表示された場合はエラーメッセージ内容とカタログディレクトリに出力されるmigrate_enterprise_to_eon_error.logを参照し、エラー原因を取り除いてください。マイグレーションの実行
MIGRATE_ENTERPRISE_TO_EON関数を使い、マイグレーションを実行します。
$ vsql -w password
Welcome to vsql, the Vertica Analytic Database interactive terminal.
VerticaDB=> SELECT MIGRATE_ENTERPRISE_TO_EON('s3://kka-verticadbbucket', '/vertica/depot', false);
MIGRATE_ENTERPRISE_TO_EON
----------------------------------------------------------------
v_verticadb_node0001,v_verticadb_node0002,v_verticadb_node0003
(1 row)マイグレーション方法詳細(ターゲットデータベース側)
以下の手順は、コマンドにて Eonデータベースを構成する方法です。
事前準備
・ソースデータベースと同数の新しいサーバを用意し、Verticaクラスタを構成します。
(=install_verticaの実行)
推奨されるHWスペックやインスタンスタイプは以下のマニュアルにてご確認ください。
Configuring your Vertica cluster for Eon Mode
・新しいサーバから共有ストレージが参照可能になるよう各環境の設定を行います。
・データベース構成時に共有ロケーション参照のために必要となる認証ファイルをサーバ上に作成します。
<AWS環境の場合の例>
ファイル名:auth_params.conf
――――――― ファイル内容 ―――――――
AWSAuth=<access key="" id="">:<secret access="" key="">
AWSRegion=<region id="">
――――――――――――――――――――
</region></secret></access>
Eonデータベースの構成
admintools -t revive_dbを実行し、Eonデータベースを構成します。
$ admintools -t revive_db \
-x auth_params.conf \
--communal-storage-location=s3://kka-verticadbbucket \
-d VerticaDB \
-s 192.168.0.203,192.168.0.156,192.168.0.175
--force
Attempting to retrieve file: [s3://kka-verticadbbucket/metadata/VerticaDB/cluster_config.json]
Validated 3-node database VerticaDB defined at communal storage s3://kka-verticadbbucket.
Cluster lease has expired.
Preparation succeeded all hosts
Calculated necessary addresses for all nodes.
Starting to bootstrap nodes. Please wait, databases with a large catalog may take a while to initialize.
>>Calling bootstrap on node v_verticadb_node0002 (192.168.0.156)
>>Calling bootstrap on node v_verticadb_node0003 (192.168.0.175)
STATUS: vertica.engine.api.load_remote_catalog is still running on 3 hosts: 192.168.0.203, 192.168.0.156, 192.168.0.175 as of 2024-08-26 04:49:20. See /opt/vertica/log/adminTools.log for full details.
STATUS: vertica.engine.api.load_remote_catalog is still running on 3 hosts: 192.168.0.203, 192.168.0.156, 192.168.0.175 as of 2024-08-26 04:49:30. See /opt/vertica/log/adminTools.log for full details.
STATUS: vertica.engine.api.load_remote_catalog is still running on 3 hosts: 192.168.0.203, 192.168.0.156, 192.168.0.175 as of 2024-08-26 04:49:40. See /opt/vertica/log/adminTools.log for full details.
Load Remote Catalog succeeded on all hosts
Database revived successfully.データベースのメッセージングモードの確認
データベースのメッセージングモードが「point-to-point(pt2pt)」であることを確認します。
$ grep controlmode /opt/vertica/config/admintools.conf
controlmode = pt2pt「controlmode = broadcast」と表示された場合は、データベースの起動に失敗するため、メッセージングモードを以下のコマンドで変更します。
$ admintools -t re_ip -d <データベース名> -T
Eonモードデータベースの起動
データベースを起動します。
$ admintools -t start_db -d verticadb -p password --force
Going with traditional slower startup
This is the first startup after a revive,
checking cluster lease to ensure that the communal location is available.
Attempting to retrieve file: [s3://kka-verticadbbucket/metadata/VerticaDB/cluster_config.json]
Cluster lease has expired.
Starting nodes:
v_verticadb_node0001 (192.168.0.203)
v_verticadb_node0002 (192.168.0.156)
v_verticadb_node0003 (192.168.0.175)
WARNING: the --force option can delete corrupted data
If you have corrupted data in all nodes, this operation may lead to data loss.
If you do not want to continue, please use Ctrl-C to cancel within 10 seconds.
Starting Vertica on all nodes. Please wait, databases with a large catalog may take a while to initialize.
Node Status: v_verticadb_node0001: (DOWN) v_verticadb_node0002: (DOWN) v_verticadb_node0003: (DOWN)
Node Status: v_verticadb_node0001: (DOWN) v_verticadb_node0002: (DOWN) v_verticadb_node0003: (DOWN)
Node Status: v_verticadb_node0001: (DOWN) v_verticadb_node0002: (DOWN) v_verticadb_node0003: (DOWN)
Node Status: v_verticadb_node0001: (UP) v_verticadb_node0002: (UP) v_verticadb_node0003: (UP)
Syncing catalog on VerticaDB with 2000 attempts.
Database VerticaDB: Startup Succeeded. All Nodes are UP共有ストレージ内の不要なデータファイルの削除
共有ストレージ内にある不要なデータファイルの削除を行います。
$ vsql -w password
Welcome to vsql, the Vertica Analytic Database interactive terminal.
dbadmin=> SELECT CLEAN_COMMUNAL_STORAGE('true');
CLEAN_COMMUNAL_STORAGE
-----------------------------------------------------------------------------------------------------------------------------------------
CLEAN COMMUNAL STORAGE
Total leaked files: 0
Files have been queued for deletion.
Check communal_cleanup_records for more information.
(1 row)デポサイズの確認
デポのサイズを確認します。
dbadmin=> SELECT node_name, location_label, location_path, max_size, disk_percent FROM storage_locations WHERE location_usage = 'DEPOT' ORDER BY node_name;
node_name | location_label | location_path | max_size | disk_percent
----------------------+-----------------+-----------------------------------------------------+--------------+--------------
v_verticadb_node0001 | auto-data-depot | /vertica/depot/VerticaDB/v_verticadb_node0001_depot | 379468656640 | 60%
v_verticadb_node0002 | auto-data-depot | /vertica/depot/VerticaDB/v_verticadb_node0002_depot | 379468656640 | 60%
v_verticadb_node0003 | auto-data-depot | /vertica/depot/VerticaDB/v_verticadb_node0003_depot | 379468656640 | 60%
(3 rows)※サイズ調整が必要な場合は、以下のマニュアルを参照してください。
Depot Management
以上でEonモードへのマイグレーションは完了です。
注意事項
・マイグレーション後のEonモードのシャード数はソースデータベースのノード数と同じになります。
(ソースデータベースが3ノード構成だった場合、マイグレーション後のシャード数は3)
・以下の項目については移行されません。
‐障害グループとストレージポリシー(Eonモードでは設定不要)
‐外部プロシージャ(Eonモードでの使用不可)
‐ネットワーク設定に関するカタログオブジェクト(ロードバランスグループ、ネットワークアドレス、ルーティングルール、サブネット)※マイグレーション後に改めて設定してください
・上記実行例はAWSを基準に記載しているため、その他の環境は次項の参考情報のマニュアルをご確認ください。
参考情報
・Eonモードの概要(Vertica 9.1新機能)
https://www.ashisuto.co.jp/cm/analytics-database/eonmode-overview.html
・Migrating an Enterprise Database to Eon Mode
https://docs.vertica.com/24.3.x/en/eon/migrating-an-enterprise-db-to-eon/
・Creating a Database in Eon Mode
https://docs.vertica.com/24.3.x/en/eon/create-db-eon/
・Configuring Your Vertica Cluster for Eon Mode
https://docs.vertica.com/24.3.x/en/eon/configuring-your-cluster-eon/
・Depot Management
https://docs.vertica.com/24.3.x/en/eon/depot-management/
・Vertica on Microsoft Azure
https://docs.vertica.com/24.3.x/en/setup/set-up-on-cloud/on-azure/
・Azure Blob Storage Object Store
https://docs.vertica.com/24.3.x/en/sql-reference/file-systems-and-object-stores/azure-blob-storage-object-store/
・MIGRATE_ENTERPRISE_TO_EON
https://docs.vertica.com/24.3.x/en/sql-reference/functions/management-functions/eon-functions/migrate-enterprise-to-eon/
・Verticaのバージョンアップ方法について
https://www.ashisuto.co.jp/cm/analytics-database/verup.html
検証バージョンについて
この記事の内容はVertica 24.3で確認しています。
更新履歴
2025/06/24 参考、参考情報のリンクを「Verticaのバージョンアップ方式について」から
「Verticaのバージョンアップ方法について」に変更
2024/08/27 バージョン24.3用に改訂
2022/01/21 本記事を公開
