はじめに

本記事は、クエリの実行中に、ノードダウンが発生した場合の動作をご紹介します。

(*)クエリの実行開始前に、既にノードダウン中だった場合の動作は、「接続時フェイルオーバーの概要」をご覧ください。

複数ノード構成の実行結果

Verticaの構成について

Verticaの複数ノード構成は、3ノードのケースが多いため、構成は以下を前提としています。
項目
ノード数3
K-Safety1
接続時フェイルオーバー設定済み

条件

複数ノード構成の場合は、以下の条件によって、クエリの動作が異なります。
条件1:クエリの実行は、「レプリケーション」または「セグメンテーション」のどちらが対象だったか。(*1)
条件2:ノードダウンは、「イニシエータ」または「エグゼキュータ」のどちらが対象だったか。(*2)
(*1) 詳細は、「セグメンテーションとレプリケーションの概要」をご覧ください。
(*2) 詳細は、「複数ノード構成のアーキテクチャ」をご覧ください。

条件1,2 の実行イメージ

条件1:「レプリケーション」のプロジェクションが、SELECTの実行対象だった。


条件2:「イニシエーター」が、SELECTの実行中にダウンした。

実行結果

実行中の各クエリは、以下の動作になります。

〇:継続する、△:ロールバックされる、☓:エラーで失敗する
イニシエータがダウンした場合エグゼキュータがダウンした場合
レプリケーションセグメンテーションレプリケーションセグメンテーション
実行中クエリINSERT/COPY
SELECT
DELETE
UPDATE

「×」のエラーメッセージは、ノードダウンの対象が「イニシエータ」もしくは「エグゼキュータ」によって異なります。

「☓」: イニシエータノードだった場合のエラーメッセージ例
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
connection to server was lost
「☓」:エグゼキュータノードだった場合のエラーメッセージ例
WARNING 4539: Received no response from v_toyota_db_node0002 in abandon plan
WARNING 4539: Received no response from v_toyota_db_node0002 in roll back transaction
ERROR 4142: Node failure during execution
「△」:ロールバックされた場合のメッセージ例
WARNING 4539: Received no response from v_toyota_db_node0002 in abandon plan
WARNING 4539: Received no response from v_toyota_db_node0002 in roll back transaction
OUTPUT
———–
750046462
(1 row)

参考情報

データのロード中にノードダウンが発生した場合の動作
リカバリ中の「ロードバランス」と「接続時フェイルオーバー」の動作について

検証バージョンについて

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

更新履歴

2024/08/29 本記事を公開