OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

REST APIを利用したデータベースの管理操作(作成/削除/起動/停止)

公開日:
技術情報
基本操作
クライアント
#起動
#停止

はじめに

Verticaにはデータベースを管理するためのREST APIが用意されています。
このAPIを利用することで、スクリプトやアプリケーションからデータベースの管理操作を行えます。
本記事ではデータベースの作成削除および起動停止のAPI実行例をご紹介します。

実施内容

サーバAから、Verticaがインストール済みのサーバBに対して以下のAPIリクエストを送信します。
・データベースの作成
・データベースの停止
・データベースの起動
・データベースの削除

前提事項

・APIリクエスト送信元と送信先がネットワーク的に疎通可能である必要があります。
・APIからの操作のため、サーバAにVerticaクライアントはインストール不要です。
・本記事ではcurlコマンドを使用してAPIリクエストを送信します。
・以下はサンプル手順のため「-k」オプションを使用しSSL証明書関連のエラーを無視しています。
本番利用の際は別途証明書の利用を検討ください。

APIリクエストの基本構文(curlを使用する場合)

curl -X リクエスト https://接続先IPアドレス:5444/

※リクエスト には以下いずれかを指定します。指定しない場合デフォルトでGETが指定されます。
GET
PUT
POST
DELETE

事前準備

APIキーの生成

Verticaがインストールされたサーバにて、APIキーを作成します。
ここで作成したAPIキーを、APIを実行したいサーバから指定します。

構文
apikeymgr --user ユーザー名 --app vertica --create --secure admin

実行例
$ apikeymgr --user dbadmin --app vertica --create --secure admin
 Requestor      : dbadmin
 Application    : vertica
 API Key        : X3/0YTpJqYwyjAQ/IQC2muaIFf3j/w/upnz/Gg ★APIキーが生成されている
 Security level : admin
 Synchronizing cluster…

データベースが存在しないことを確認

サーバBにて以下実行し、データベースが存在しないことを確認
$ admintools -t list_allnodes
  Node | Host | State | Version | DB
 ------+------+-------+---------+----

データベースの作成

APIを実行したいサーバから、データベースを作成するAPIをcurlコマンドを利用して実行します。

構文 
curl -X POST -H "VerticaApiKey:APIキー" -k "https://接続先IPアドレス:5444/databases?name=データベース名&passwd=DBパスワード&catalog=カタログディレクトリ&data=データディレクトリ&port=5433"

実行例
$ curl -X POST -H "VerticaApiKey:X3/0YTpJqYwyjAQ/IQC2muaIFf3j/w/upnz/Gg" -k "https://10.1.1.57:5444/databases?name=testdb&passwd=testdb&catalog=%2Fhome%2Fdbadmin%2Ftestdb&data=%2Fhome%2Fdbadmin%2Ftestdb&port=5433" | jq .
   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                  Dload  Upload   Total   Spent    Left  Speed
 100   152  100   152    0     0    961      0 --:--:-- --:--:-- --:--:--   968
 {
   "jobid": "CreateDatabase-testdb-2021-04-27 10:25:21.380895",
   "resource": "/jobs/CreateDatabase-testdb-2021-04-27 10:25:21.380895",
   "userid": "dbadmin"
 }

データベースが作成されたことを確認

$ admintools -t list_allnodes
  Node              | Host      | State | Version          | DB
 -------------------+-----------+-------+------------------+--------
  v_testdb_node0001 | 10.1.1.57 | UP    | vertica-10.1.0.2 | testdb

データベースの停止

構文
curl -X DELETE -H "https://接続先IPアドレス:5444/databases/データベース名/hosts/DBに登録されているIPアドレス/process" 

実行例
$ curl -X DELETE -H "VerticaApiKey:X3/0YTpJqYwyjAQ/IQC2muaIFf3j/w/upnz/Gg" -k "https://10.1.1.57:5444/databases/testdb/hosts/10.1.1.57/process" | jq .
   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                  Dload  Upload   Total   Spent    Left  Speed
 100   119  100   119    0     0    506      0 --:--:-- --:--:-- --:--:--   508
 {
   "id": "StopDatabase-testdb-2021-04-27 10:48:32.681055",
   "url": "/jobs/StopDatabase-testdb-2021-04-27 10:48:32.681055"
 }

停止していることを確認
$ admintools -t list_allnodes
  Node              | Host      | State | Version          | DB
 -------------------+-----------+-------+------------------+--------
  v_testdb_node0001 | 10.1.1.57 | DOWN  | vertica-10.1.0.2 | testb

データベースの起動

構文
curl -X POST -H "VerticaApiKey:APIキー" -k "https://接続先IPアドレス:5444/databases/データベース名/process?user_id=ユーザー名&passwd=パスワード"  

実行例
$ curl -X POST -H "VerticaApiKey:X3/0YTpJqYwyjAQ/IQC2muaIFf3j/w/upnz/Gg" -k "https://10.1.1.57:5444/databases/testdb/process?user_id=dbadmin&passwd=testdb" | jq .
   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                  Dload  Upload   Total   Spent    Left  Speed
 100   121  100   121    0     0    423      0 --:--:-- --:--:-- --:--:--   424
 {
   "id": "StartDatabase-testdb-2021-04-27 10:51:29.077134",
   "url": "/jobs/StartDatabase-testdb-2021-04-27 10:51:29.077134"
 }

起動していることを確認
$ admintools -t list_allnodes
  Node              | Host      | State | Version          | DB
 -------------------+-----------+-------+------------------+--------
  v_testdb_node0001 | 10.1.1.57 | UP    | vertica-10.1.0.2 | testdb

データベースの削除

※データベースを削除する場合は、データベースが停止している必要があります。

構文
curl -X DELETE -H "VerticaApiKey:APIキー" -k "https://接続先IPアドレス:5444/databases/データベース名" 

実行例
$ curl -X DELETE -H "VerticaApiKey:X3/0YTpJqYwyjAQ/IQC2muaIFf3j/w/upnz/Gg" -k "https://10.1.1.57:5444/databases/testdb" | jq .
   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                  Dload  Upload   Total   Spent    Left  Speed
 100   119  100   119    0     0    523      0 --:--:-- --:--:-- --:--:--   524
 {
   "id": "DropDatabase-testdb-2021-04-27 10:53:03.397473",
   "url": "/jobs/DropDatabase-testdb-2021-04-27 10:53:03.397473"
 }

データベースが削除されたことを確認
$ admintools -t list_allnodes
  Node | Host | State | Version | DB
 ------+------+-------+---------+----

参考情報

cURL
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/ConnectingToVertica/ManagementAPI/cURL.htm

Rest APIs for the Agent
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/ConnectingToVertica/ManagementAPI/RestAPIsForTheAgent.htm

VerticaAPIKey
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/ConnectingToVertica/ManagementAPI/VerticaAPIKey.htm

検証バージョンについて

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

更新履歴

2021/04/27 本記事を公開