はじめに
TiDB Serverlessは実はCLIからも操作することができます。
この記事では便利なTiDB Cluod CLIの紹介をします。MacOSを利用していますが、Linux/WSLでも同じように使えると思います。
インストールと設定
TiDB Cloud CLIのインストール
TiDB Cloud CLIのセットアップツールを使う方法と、TiUPを利用する方法があります。TiUPを利用した場合はTiUPのサブコマンドとして利用することになります。今回は、セットアップツールを利用してセットアップします。ターミナルからcurlでセットアップスクリプトを取得し実行します。
curl https://raw.githubusercontent.com/tidbcloud/tidbcloud-cli/main/install.sh | sh
シェルを自動判別して、PATH環境変数にticloudコマンドの場所を追記しています。再読み込みします。
source ~/.zshrc
これでticloudコマンドが利用できるはずです。
APIキーの取得
TiDB Cloud コンソールからAPIキーを発行します。TiDB Cloudにログインし、左下にあるビルのアイコンから、Organization Settings
を選びます。
API Keys
と書かれたタブをクリックして、Create API Key
ボタンを押します。
APIキーが生成されます。PublicとPrivateの両方のキーをメモしておきます。
プロファイルの作成
ターミナルに戻り、ticloudコマンドを使ってプロファイルを作成します。
> 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.
> demo # プロファイル名
> XXPUBLIC # APIキー Public
> •••••••••••••••••••••••••••••••••••• #APIキー Private
なおプロファイル名は大文字を指定しても全て小文字になるようです。
プロファイルが作成できたら、これをアクティブプロファイルにします。
ticloud config use demo
オートコンプリート設定(オプション)
TiUPもそうなのですが、TiDBのCLIはだいたいオートコンプリートが設定できるようになっています。ticloudコマンドも可能です。詳細は ticloud completion zsh -h
で確認できますが、ここではセッションでオートコンプリートを有効にします。
source <(ticloud completion zsh); compdef _ticloud ticloud
これでサブコマンド入力前やコマンド途中でのTabを使った補完がきくようになります。便利〜とおもいきや、後述のようにticloudはinteractiveモードがあり、オプションをinteractiveに指定出来るのであまり必要ないかもしれません。
ticloud 利用法
ここからは順に使い方を見ていきます。
クラスタ操作 - ticloud cluster
クラスタを作成したり、削除したりする基本コマンドです。
connect-info -- Get connection string for the specified cluster
create -- Create one cluster in the specified project
delete -- Delete a cluster from your project
describe -- Describe a cluster
list -- List all clusters in a project
基本はcreate, connect-info でしょうか。見ていきます。
> ticloud cluster create
Choose the cluster type:
> [x] SERVERLESS
Choose the cloud provider:
> [x] AWS
Choose the cloud region:
> [x] ap-northeast-1
> mycluster
> ••••••••
[ Submit ]
●∙∙ Waiting for cluster to be ready
Cluster 100XXXXXXXXXXXXX is ready.
クラスタの作成は ticloud cluster createでインタラクティブに実施できます。現在のところSERVERLESSにしか対応しておらず、SERVERLESSはAWS固定なのでリージョンの指定くらいです。TiDB Cloudコンソールでのcluster作成と異なり、パスワードの指定が可能です。
> ticloud cluster connect-info
Choose the cluster
> [x] mycluster(100XXXXXXXXXXXXX)
Choose the client
> [x] MySQL CLI
Choose the operating system
> [x] macOS/Alpine (Detected)
mysql -u 'XXXXXXXXXXX.root' -h gateway01.ap-northeast-1.prod.aws.tidbcloud.com -P 4000 -D test --ssl-mode=VERIFY_IDENTITY --ssl-ca=/etc/ssl/cert.pem --comments -p${password}
connect-infoでは、接続するためのコマンドラインや接続文字列を取得できます。実は後述のconnectサブコマンドがあるのでticloud自体から接続出来てしまうのですが、その他のツールや言語からの接続の確認に便利です。
接続 - ticloud connect
ticloudからTiDB clusterに接続します。内部的にusqlを利用しているようで、コマンドの操作感はmysql cliとは異なります。
> ticloud connect
Choose the cluster
> [x] mycluster(100XXXXXXXXXXXXX)
? Use the default user? Yes
Current user: XXXXXXXXXXXX.root
Enter password:
Connected with driver mysql (5.7.25-TiDB-v6.6.0-serverless)
Type "help" for help.
XXXXXXXXXXX.root@mycluster/test=>
データインポート - ticloud import
ticloudからローカル、S3にあるファイルのインポートを行えます。また、mysql cliを使ったMySQLからのデータインポートにも対応しているようです。(初めて知りました)
cancel Cancel a data import task
describe Describe a data import task
list List data import tasks
start Start an import task
適当なCSVファイルをインポートしてみます。
> ticloud import start local employees_data.csv
Choose the cluster
> [x] mycluster(100XXXXXXXXXXXXX)
Choose the data format:
> [x] CSV
> test
> employees
[ Submit ]
? Do you need to custom CSV format? No
∙●∙ Uploading file
File has been uploaded
∙∙● Starting import task
Import task 1188766 started.
テーブルは存在していませんでしたが、CSVファイルのヘッダから作成してくれるようです。ただ、インポート後に定義を確認したところ、TiDB Cloudコンソールでは指定できるようなPrimary Keyの設定などはできません。テーブルをあらかじめ作るか、柔軟に設定したければTiDB Cloudコンソールを利用した方がよさそうです。
アップロードジョブの状況は、listで確認できます。
> ticloud import list
Choose the cluster
> [x] mycluster(100XXXXXXXXXXXXX)
ID Type Status CreatedAt Source DataFormat Size
1188766 LOCAL COMPLETED 2023-12-18T12:51:47.000Z employees_data.csv CSV 0 B
まとめ
TiDB Cloud cli (ticloud) の設定と利用について説明しました。他にもオプションがありますが、ヘルプやインタラクティブモードがかなり親切であまり苦労せず利用できそうです。是非試してみてください。