目次
はじめに
Verticaにはデータベース内のデータを取り扱う方法として、サーバのローカルディスクにデータを保存するEnterpriseモードと共有ストレージにデータを保存するEonモードが存在します。こちらの記事では、Enterpriseモードで作成されたVerticaデータベースをEonモードへマイグレーションする方法をAWSをベースにご紹介します。
なお、Eonモードの概要については以下の記事にて紹介していますので、あわせてご確認ください。
Eonモードの概要(Vertica 9.1新機能)
Eonモードを構成できる環境
Eonモードを構成できる環境は以下の通りです。分類 | 利用可能な環境 |
---|---|
クラウド環境 | 以下のいずれかを利用 ・AWS ・GCP ・Azure |
オンプレミス環境 | 以下のいずれかを利用 ・PureStorage ・MinIO ・HDFS |
推奨事項
有事の際に切り戻しができるようにサーバのシステムバックアップ、および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の場合] s3://<パス> [GCPの場合] gs://<パス> [HDFSの場合] webhdfs://<パス> |
depot‑location | Eonモードのデポを配置するパスを指定します。 | 例)/vertica/depot |
is‑dry‑run | trueの場合、マイグレーション前提条件を満たしているかチェックのみを行います。 flaseの場合、マイグレーションを実行します。 デフォルト:false | true/false |
マイグレーション方法詳細(ソースデータベース側)
以下の手順で利用する環境の情報は以下の通りです。項目 | 値 |
---|---|
環境 | AWS |
データベース名 | verticadb |
ノード数 | 3ノード |
S3ロケーション | s3://kka-verticadbbucket |
デポロケーション | /vertica/depot |
ターゲットデーベース IPアドレス | 192.168.0.203 192.168.0.156 192.168.0.175 |
なお、OSコマンドはOSユーザのdbadminユーザにて、SQLコマンドはすべてDBユーザのdbadminにて実行してください。
前提条件
以下の条件をすべて満たしていることを確認します。Verticaバージョン
マイグレーション対象のVerticaデータベースのバージョンが10.0以上であること。
1 2 3 4 5 6 7 8 9 10 |
# 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」であること。
1 2 3 4 5 6 7 8 |
# システムテーブル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) |
クラスター構成
データベースが「エラスティッククラスター」として構成されていること。
1 2 3 4 5 6 |
# システムテーブルELASTIC_CLUSTERから確認 VerticaDB=> SELECT is_enabled FROM elastic_cluster; is_enabled ------------ t (1 row) |
共有ロケーション
共有ロケーションが作成済みであること。データベースの構成要件
次の構成パラメータがデータベースレベルで設定されていること。構成環境 | 構成要件 |
---|---|
AWS | ・AWSRegion ・AWSAuth / IAM role ・AWSEnableHttps |
GCP | ・GCSEndpoint ・GCSAuth ・GCSEnableHttp |
Azure | ・共有ストレージの Azure Blob Storage の場所を設定するには、azb:// schema URI を使用する必要があります。 (URI の形式については、Azure Blob Storage Object Storeを参照してください) ・以下の認証方法のいずれかを選択して、ストレージロケーションへの Vertica アクセスを許可してください。 ‐マネージドアイデンティティを構成して、Azure VM にストレージロケーションへのアクセスを許可する。 ‐データベースレベルで AzureStorageCredentials と AzureStorageEndpointConfig 構成パラメーターを設定し、Vertica がストレージロケーションで認証できるようにする。 |
Pure Storage/ MinIO | ・AWSEndpoint ・AWSAuth / IAM role ・AWSEnableHttps ※Pure StorageとMinIOを使用してオンプレミスの共有ストレージに移行する場合、設定パラメーターAWSEnableHttpsをデータベースのTLS暗号化設定と互換性があるように設定します。 TLS を使用する場合は AWSEnableHttps=1、それ以外は 0とします。 設定に互換性がない場合、マイグレーションはエラーで返されます。 |
HDFS | ・ソースデータベースは、(該当する場合)高可用性(HA)およびKerberos認証の設定を含め、HDFSにアクセスするように構成されている必要があります。 ・データベースレベルで設定パラメータHadoopConfDirを設定します(非HA環境では必要ありません)。 |
非サポートプロジェクション
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」を指定して、ソースデータベースがマイグレーション条件を満たしているかチェックを行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ 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関数を使い、マイグレーションを実行します。
1 2 3 4 5 6 7 8 9 |
$ 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>
――――――――――――――――――――
ファイル名:auth_params.conf
――――――― ファイル内容 ―――――――
AWSAuth=<Access key ID>:<Secret access key>
AWSRegion=<Region ID>
――――――――――――――――――――
Eonデータベースの構成
admintools -t revive_dbを実行し、Eonデータベースを構成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ 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)」であることを確認します。
1 2 3 |
$ grep controlmode /opt/vertica/config/admintools.conf controlmode = pt2pt |
「controlmode = broadcast」と表示された場合は、データベースの起動に失敗するため、メッセージングモードを以下のコマンドで変更します。
$ admintools -t re_ip -d <データベース名> -T
Eonモードデータベースの起動
データベースを起動します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ 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 |
共有ストレージ内の不要なデータファイルの削除
共有ストレージ内にある不要なデータファイルの削除を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ 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) |
デポサイズの確認
デポのサイズを確認します。
1 2 3 4 5 6 7 |
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新機能)http://vertica-tech.ashisuto.co.jp/eonmode-overview/
・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のバージョンアップ方式について
http://vertica-tech.ashisuto.co.jp/version_upgrade_method/
検証バージョンについて
この記事の内容はVertica 24.3で確認しています。更新履歴
2024/08/27 バージョン24.3用に改訂2022/01/21 本記事を公開
- 投稿タグ
- 移行, migration, Eon, Eonモード, Enterprise, Enterpriseモード, マイグレーション