はじめに

通常、Vertica のデータベース停止操作をした場合、ユーザセッションが存在すると NOTICE 2519 が発生し、操作が中断されます。
この記事では、ユーザの接続有無に関わらず即時にデータベースを停止する方法をご紹介します。

※通常のデータベースの停止方法は以下の記事をご参照ください。

データベースの停止、起動方法(admintools)
コマンドラインによるadmintoolsの操作方法
データベースの停止、起動方法(Management Console)

前提事項

データベースを即時停止した場合、実行中の SQL は停止され、未 COMMIT の操作は自動的にロールバックされます。
また、データベース停止時に自動的に Moveout 処理が実行されるため、COMMIT 済みの情報は保証されます。

なお、ユーザの SQL 実行完了まで待機したうえでデータベースを停止するコマンドやオプションはありません。

※Moveout の詳細は、以下の記事をご参照ください。
MoveoutとMergeout

即時停止する方法:コマンドライン+admintools 編

コマンド構文

OS の dbadmin ユーザから、以下のコマンドを実行します。
admintools -t stop_db -d <データベース名> [-p <パスワード>] -F
コマンドラインから実行する admintools コマンドの詳細はマニュアルをご参照ください。
Writing Administration Tools Scripts

実行例

即時停止する方法:vsql 編

コマンド構文

vsql にて dbadmin ユーザに接続し、以下のコマンドを実行します。
SELECT SHUTDOWN(‘オプション’);

指定可能なオプション

指定可能なオプションは以下の通りです。
オプション説明備考
true接続ユーザが存在する場合でも、データベースの停止操作を実行する即時停止の場合はこちらのオプションを使用
false接続ユーザが存在する場合、メッセージが表示され、停止操作を中断するデフォルト動作


SHUTDOWN コマンドの詳細はマニュアルをご参照ください。
Database Management Function – SHUTDOWN

実行例

強制停止する方法

上記の即時停止コマンドが実行できない場合やハングが疑われる場合は、以下のコマンドを実行します。

コマンド構文

OS の dbadmin ユーザから、以下のコマンドを実行します。
admintools -t stop_node -s <ホスト名/IPアドレス>

実行例

コマンド補足

“stop_node”コマンドは、vertica プロセスに対し SIGTERM シグナルを送信し、プロセスを停止します。
この時、自動的に Moveout 処理が実行されるため、COMMIT済みの情報は保証されます。
また、実行例では全ノードを停止していますが、特定のノードのみを停止することも可能です。

注意事項

“stop_node”コマンドの他に”kill_node”コマンドが存在しますが、こちらは vertica プロセスに対し SIGKILL シグナルを送信し、プロセスを停止します。
Moveout 処理が実行されないため、データの不整合が発生する可能性があります。
必要な場合を除き、こちらのコマンドの実行は推奨しません。

参考情報

○データベースの停止、起動方法(admintools)
http://vertica-tech.ashisuto.co.jp/stop_start_database_admintools/

○コマンドラインによるadmintoolsの操作方法
http://vertica-tech.ashisuto.co.jp/admintools_commandline/

○データベースの停止、起動方法(Management Console)
http://vertica-tech.ashisuto.co.jp/mc_start_stop/

○Writing Administration Tools Scripts
https://www.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/AdministratorsGuide/AdminTools/WritingAdministrationToolsScripts.htm

○Database Management Function – SHUTDOWN
https://www.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/VerticaFunctions/SHUTDOWN.htm

検証バージョンについて

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