はじめに
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
------+------+-------+---------+----参考情報
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 本記事を公開