TiDB Cloud CLI
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