🔥

TiDB Cloud CLI

2024/09/03に公開

TiDB CloudにはTiDB Cloud CLI というTiDB Serverless クラスターを操作するためのCLIが用意されています。今までの記事では全てブラウザからマネージメントコンソールを操作していましたが、Clusterの作成、削除、Branchの作成等、TiDB Cloud CLIを用いることでTiDB Serverless Clusterの操作が可能です。またMySQL Clientを用いなくてもSQLを実行させることが出来ます。

またTiDB Cloud CLIを用いることでマネージメントコンソールからでは行えない、Clusterの名前変更が可能になります。

やってみる

TiDB Cloud CLIは、Linux,Mac,Windows(WSL)をサポートしており通常のVSCodeなどでは作業が行えません。このためAmazon Linux 2023 を用います。無料版のt2.smallでは作業が途中で停止しますので、t2.largeを用います。

インストール

まず以下のインストーラーをダウンロード&実行します。

curl https://raw.githubusercontent.com/tidbcloud/tidbcloud-cli/main/install.sh | sh
/home/ec2-user/.bash_profile has been modified to add ticloud to PATH
open a new terminal or source /home/ec2-user/.bash_profile to use it
Installed path: /home/ec2-user/.ticloud/bin/ticloud
===============================================
Have a try:     ticloud
===============================================

このままではパスが通っておらず若干不便なので、以下を実行してパスを通しておきます。

ln -s /home/ec2-user/.ticloud/bin/ticloud ./ticloud

これで./ticloudで実行できます。

API Keyの準備

マネージメントコンソールでAPI Keysを作成します。



クレデンシャルセットアップ

上記で作成されたAPI Keyを以下のコマンドでセットします。

./ticloud config create
Check the https://docs.pingcap.com/tidbcloud/api/v1beta#section/Authentication/API-Key-Management for more information about how to create API keys.
> Profile Name must not contain '.'
> Public Key (optional)
> Private Key (optional)

[ Submit ]

少しここのインターフェースはわかりづらいですが、まず適当な名前を入力してEnterを押します。
次に右クリックでPublic Keyをペーストした後Enterを入力します。
その次に右クリックでPrivate Keyをペーストした後Enterを二度入力します。
成功すると以下が表示されます。

Current profile has been changed to xxxx

次に以下のコマンドを実行し認証を行います。上記でCLIにクレデンシャルは設定していますが、それでだけでは使いない点に注意してください。

./ticloud auth login
Attempting to automatically open the authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this CLI, open the following URL:

 https://tidbcloud.com/oauth/device?user_code=PPJP-1G2N

 Confirmation Code:  PPJP-1G2N
Failed to open a browser:  exec: "xdg-open": executable file not found in $PATH

本来ならローカルのブラウザが起動しますが、Amazon Linux 2023にはローカル環境にブラウザが無いためエラーが出ています。 https://tidbcloud.com/oauth/device?user_code=PPJP-1G2Nに手元にブラウザでアクセスを行います。

Confirm Codeをクリックします。
組織を選んでConfirm Authorizationをクリックします。


CLI側では以下のエラーが出ていますが、問題なく認証が完了しています。現在まだこのCLIはベータですのでPingCap社にFeedBackさせて頂きました。

Error: failed to delete token: The name is not activatable

ではテストを行います。

./ticloud serverless list

を実行すると以下の通りClusterの情報が戻ってきます。

ID                    DisplayName  State   Version  Cloud  Region                  Type        
10950137148403125354  Cluster0     ACTIVE  v7.1.3   aws    Tokyo (ap-northeast-1)  SERVERLESS  

Cluster の名前変更

では次に以下を実行します。

./ticloud serverless update
Choose the cluster: Type to filter
> [ ] Cluster0(10950137148403125354)

Cluster0を選んでEnterを押します。

Choose the field to update: Type to filter
> [ ] displayName
  [ ] labels
  [ ] annotations

displayNameを選んでEnterを押します。
Rename後の名前を入力して2回Enterを押します。

SQLの実行

tidbcloud CLIにはShellの機能がありSQLを実行できます。

./ticloud serverless shell
> [x] renamedcluster(10950137148403125354)

Clusterを選択するとパスワードの入力が求められます。これは以下の画面から確認できる通常のMySQL用パスワードと同じです。

接続出来たら単純に以下のSQLを実行してみます。

use test;
CREATE TABLE Persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);
JErw8WQS1mQTQEY.root@renamedcluster/test=>use test;
USE
JErw8WQS1mQTQEY.root@renamedcluster/test=>CREATE TABLE Persons (
JErw8WQS1mQTQEY.root@renamedcluster/test(>    PersonID int,
JErw8WQS1mQTQEY.root@renamedcluster/test(>    LastName varchar(255),
JErw8WQS1mQTQEY.root@renamedcluster/test(>    FirstName varchar(255),
JErw8WQS1mQTQEY.root@renamedcluster/test(>    Address varchar(255),
JErw8WQS1mQTQEY.root@renamedcluster/test(>    City varchar(255)
JErw8WQS1mQTQEY.root@renamedcluster/test(>);
CREATE TABLE

以下の通りマネージメントコンソール上で無事テーブルが作成されていることがわかります。

exitで終了させることが出来ます。

その他コマンド

ticloudには以下のコマンドが備わっています。
API Keyやユーザーの作成、パスワードのリセット以外はマネージメントコンソール無しでServerless Cluster を管理可能です。

Available Commands:
  list           List all TiDB Serverless clusters
  create         Create a TiDB Serverless cluster
  describe       Describe a TiDB Serverless cluster
  update         Update a TiDB Serverless cluster
  delete         Delete a TiDB Serverless cluster
  branch         Manage TiDB Serverless branches
  shell          Connect to a TiDB Serverless cluster
  import         Manage TiDB Serverless data imports
  export         Manage TiDB Serverless exports
  spending-limit Set spending limit for a TiDB Serverless cluster
  region         List all available regions for TiDB Serverless

Discussion