はじめに

Verticaにはデータベース内のデータを取り扱う方法として、サーバのローカルディスクにデータを保存するEnterpriseモードと共有ストレージにデータを保存するEonモードが存在します。
こちらの記事では、Enterpriseモードで作成されたVerticaデータベースをEonモードへマイグレーションする方法をAWSをベースにご紹介します。

なお、Eonモードの概要については以下の記事にて紹介していますので、あわせてご確認ください。
Eonモードの概要(Vertica 9.1新機能)

Eonモードを構成できる環境

Eonモードを構成できる環境は以下の通りです。
分類利用可能な環境
クラウド環境以下のいずれかを利用
・AWS
・GCP
・Azure
オンプレミス環境以下のいずれかを利用
・P​​ureStorage
・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‑locationEonモードのデポを配置するパスを指定します。例)/vertica/depot
is‑dry‑runtrueの場合、マイグレーション前提条件を満たしているかチェックのみを行います。
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以上であること。

※バージョン条件を満たさない場合は、目標とするバージョンまでバージョンアップを行います。
 参考:Verticaのバージョンアップ方式について

ノードタイプ/ノードステータス

Verticaデータベースを構成するすべてのノードがノードタイプ「PERMANENT」、もしくは「EPHEMERAL」であり、ステータスが「UP」であること。


クラスター構成

データベースが「エラスティッククラスター」として構成されていること。


共有ロケーション

共有ロケーションが作成済みであること。

データベースの構成要件

次の構成パラメータがデータベースレベルで設定されていること。
構成環境構成要件
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」を指定して、ソースデータベースがマイグレーション条件を満たしているかチェックを行います。


マイグレーションの実行

MIGRATE_ENTERPRISE_TO_EON関数を使い、マイグレーションを実行します。


マイグレーション方法詳細(ターゲットデータベース側)

以下の手順は、コマンドにて 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>
――――――――――――――――――――

Eonデータベースの構成

admintools -t revive_dbを実行し、Eonデータベースを構成します。


データベースのメッセージングモードの確認

データベースのメッセージングモードが「point-to-point(pt2pt)」であることを確認します。


「controlmode = broadcast」と表示された場合は、データベースの起動に失敗するため、メッセージングモードを以下のコマンドで変更します。

$ admintools -t re_ip -d <データベース名> -T


Eonモードデータベースの起動

データベースを起動します。


共有ストレージ内の不要なデータファイルの削除

共有ストレージ内にある不要なデータファイルの削除を行います。


デポサイズの確認

デポのサイズを確認します。


※サイズ調整が必要な場合は、以下のマニュアルを参照してください。
 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 本記事を公開