目次
はじめに
Verticaにはデータベースを管理するためのREST APIが用意されています。このAPIを利用することで、スクリプトやアプリケーションからデータベースの管理操作を行えます。
本記事ではデータベースの作成削除および起動停止のAPI実行例をご紹介します。
実施内容
サーバAから、Verticaがインストール済みのサーバBに対して以下のAPIリクエストを送信します。・データベースの作成
・データベースの停止
・データベースの起動
・データベースの削除
前提事項
・APIリクエスト送信元と送信先がネットワーク的に疎通可能である必要があります。・APIからの操作のため、サーバAにVerticaクライアントはインストール不要です。
・本記事ではcurlコマンドを使用してAPIリクエストを送信します。
・以下はサンプル手順のため「-k」オプションを使用しSSL証明書関連のエラーを無視しています。
本番利用の際は別途証明書の利用を検討ください。
APIリクエストの基本構文(curlを使用する場合)
1 |
curl -X リクエスト https://接続先IPアドレス:5444/ |
※リクエスト には以下いずれかを指定します。指定しない場合デフォルトでGETが指定されます。
GET
PUT
POST
DELETE
事前準備
APIキーの生成
Verticaがインストールされたサーバにて、APIキーを作成します。ここで作成したAPIキーを、APIを実行したいサーバから指定します。
1 2 3 4 5 6 7 8 9 10 |
構文 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… |
データベースが存在しないことを確認
1 2 3 4 |
サーバBにて以下実行し、データベースが存在しないことを確認 $ admintools -t list_allnodes Node | Host | State | Version | DB ------+------+-------+---------+---- |
データベースの作成
APIを実行したいサーバから、データベースを作成するAPIをcurlコマンドを利用して実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
構文 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 |
データベースの停止
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
構文 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 |
データベースの起動
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
構文 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 |
データベースの削除
※データベースを削除する場合は、データベースが停止している必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
構文 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 ------+------+-------+---------+---- |
参考情報
cURLhttps://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