💡

TiDB を使ってみよう!(ローカル環境編) - ローカル環境での検証方法

2024/04/03に公開

はじめに

PingCAPの小板橋です。はじめまして!
TiDBの入門記事から上級者編を取り扱う本アカウント第3回目はTiDB をローカル環境でサクッと検証したい時どうすればいいのかを見ていきましょう!

tiup playground

まずは、tiup playgroundというのものがあります。
これは公式から提供されているもので、ユーザが簡単にローカル環境にてTiDBを検証する際に利用することができます。

https://docs.pingcap.com/ja/tidb/stable/tiup-playground

tiup

tiup Playgroundを使用するには、まずはTiUPをローカルにインストールする必要があります。
このTiUPというのは、下記のPingCAPが公式で公開しているOSSになり、TiDBのコンポーネントをインストール、ダウンロードするためのツールになります。

https://github.com/pingcap/tiup

TiUPをインストールする

TiUPのインストールコマンドは下記になります。

> curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

下記のようにインストールをするとインストールされたパスが表示されるので、それをShellのprofileに食わします。

> source ${shellのprofile}
(例) source /Users/koitabashi/.zshrc

tiup playgroundを実行する

tiup playgroundを実行するには、下記のコマンドを実行します。
ただこれだけでいいのです。

> tiup playground

実際に実行すると下記のようにPDサーバー、TiKVサーバー、TiDBサーバといったコンポーネントが自動で立ち上がります。
また、TiDB Dashboard、Grafanaといったモニタリングツールも自動で立ち上がってくれます。

> tiup playground
Checking updates for component playground... Timedout (after 2s)
Using the version v8.0.0 for version constraint "".

If you'd like to use a TiDB version other than v8.0.0, cancel and retry with the following arguments:
	Specify version manually:   tiup playground <version>
	Specify version range:      tiup playground ^5
	The nightly version:        tiup playground nightly

Start pd instance:v8.0.0
Start tikv instance:v8.0.0
Start tidb instance:v8.0.0
Waiting for tidb instances ready
127.0.0.1:4000 ... Done
Start tiflash instance:v8.0.0
userConfig map[flash:map[proxy:map[config:/Users/koitabashi/.tiup/data/U8qKLKt/tiflash-0/tiflash_proxy.toml]] logger:map[level:debug]]
Waiting for tiflash instances ready
127.0.0.1:3930 ... Done

🎉 TiDB Playground Cluster is started, enjoy!

Connect TiDB:    mysql --comments --host 127.0.0.1 --port 4000 -u root
TiDB Dashboard:  http://127.0.0.1:2379/dashboard
Grafana:         http://127.0.0.1:3000

また、tiup playgroundを実行時に下記のようなメッセージが表示されていますが、つまりは、tiup playground <version>で実行すると起動するTiDBのバージョンを指定することもできるというわけです。

If you'd like to use a TiDB version other than v8.0.0, cancel and retry with the following arguments:
	Specify version manually:   tiup playground <version>
	Specify version range:      tiup playground ^5
	The nightly version:        tiup playground nightly

ちなみにTiDBのバージョンアップを確認するのは下記のコマンドです。

> tiup list tidb

TiDBへ接続してみよう!

いざ、TiDB Playgroundでローカルにて立ち上がった後は、ローカル環境にmysqlクライアントがなくてもtiup clientコマンドを使用するとクライアントコンポーネントをインストールしてくれます。

> tiup client

実行すると下記によう接続された状態でSQLを実行できます。

ローカルに起動したTiDBクラスター自体を操作してみよう

下記のコマンドを実行すると、起動したクラスターの情報を確認することができます。

> tiup playground display
Checking updates for component playground... Timedout (after 2s)
Pid    Role     Uptime
---    ----     ------
23973  pd       5m51.158130042s
23974  tikv     5m49.277869583s
23975  tidb     5m49.254897958s
23982  tiflash  5m38.822272125s

TiDBサーバーをスケールアウト/スケールイン

まずは、TiDBサーバーをスケールアウト/スケールインさせていきます。
増やす前は、TiDBサーバは上記の結果より1台いることが分かります。
下記のコマンドでは、ここに3台のTiDBサーバを追加していきます。
なので合計は4台となれば期待値通りです。

> tiup playground scale-out --db 3

成功しました。tiup playground displayを実行するとTiDBサーバーが4台になっていることが分かります。

ここから今度は、スケールインしていきましょう。

> tiup playground scale-in --pid xxxx

成功しました。tiup playground displayを実行するとTiDBサーバーが1台になっていることが分かります。

TiKVサーバーをスケールアウト

TiDBサーバと同じ容量でTiKVサーバーも操作していきましょう。
TiKVサーバーも3台増やしてみて、4台にしてみます。

> tiup playground scale-out --kv 3

成功しました。tiup playground displayを実行するとTiKVサーバーが1台になっていることが分かります。

PDサーバーをスケールアウト

TiDBサーバと同じ容量でPDサーバーも操作していきましょう。
まずはスケールアウトからです。

> tiup playground scale-out --pd 3

データの永続性

playgroundは揮発性(再起動するとデータが消える)のように見えるのですが、tagというオプションを指定すると、playground再起動後もデータベースの内容を保持できます。

-T, --tag string Specify a tag for playground

tidb-docker-compose

PingCAPの公式GitHubより公開されているものとして、tidb-docker-composeというものがあります。下記にRepositoryと合わせてドキュメントを公開しています。
ただ、このtidb-docker-composeは公式ドキュメントでも注意書きが書いてあり、Docker Composeは現在保守されていないようです。
TiDBを実稼働環境(ローカルとかではなく、開発環境等)での場合は、デプロイメントにdocker-composeを使用せず、KubernetesのTiUPまたはTiDB Operatorを使用してTiDBをデプロイすることをお勧めします。
ただ、ローカル環境でdockerを使いたいという要望はあると思います。
OSSとしても公開されているので、公式としては保守はされていないようですが、Forkして機能追加等していくこともできます。

https://docs.pingcap.com/tidb/v4.0/deploy-test-cluster-using-docker-compose

https://github.com/pingcap/tidb-docker-compose/tree/master

使用する際の要件は下記になります。
Docker >= 17.03
Docker Compose >= 1.6.0

ということで検証していきましょう。

tidb-docker-compose を使用してローカル環境でTiDBを操作していく

  • まずは、ローカルにリポジトリをcloneしていきます。
> git clone https://github.com/pingcap/tidb-docker-compose.git
  • ディレクトリをtidb-docker-composeに変更し、最新のTiDB Dockerイメージを取得します。
> cd tidb-docker-compose && docker-compose pull

  • TiDB クラスターを開始します。
> docker-compose up -d
  • MySQLクライアントを利用して、ログインしていきましょう。
> mysql -h 127.0.0.1 -P 4000 -u root

docker-tidb-playground(公式ではないが便利なもの)

最後に紹介するのが、tidb-playground をDocker化したツールのご紹介です。
こちらは、公式のRepositoryで公開はされていないものの、PingCAPの社員が作ったOSSになります。
ローカル開発環境(もしくは、CIなどのテスト環境)を構築するために使用できるシンプルな Docker ファイルを提供しています。

https://github.com/ti-click/docker-tidb-playground

docker-tidb-playgroundを使用してローカル環境でTiDBを操作していく

  • まずはツールをCloneします。
> git clone https://github.com/ti-click/docker-tidb-playground.git
  • その後起動してみましょう。
> docker compose up -d --build
  • 起動が完了した後にMySQLクライアントを利用し、ログインしていきます。
> mysql -u root -h 127.0.0.1 -P 4000 -D test -p

Tips

バージョンについては、.envファイルを直接編集します。

TIDB_VERSION=v6.5.0

まとめ

いかがだったでしょうか?
TiDBの世界は奥が深いです。引き続き様々な機能についてを深掘りブログ化していきたいと思います。

公式ブログ/ドキュメント

https://docs.pingcap.com/ja/tidb/stable/tiup-playground

https://github.com/pingcap/tiup

https://github.com/pingcap/tidb-docker-compose/tree/master

https://github.com/ti-click/docker-tidb-playground

Discussion