MySQL vs. TiDB-分散トランザクションの比較検証(6): TiDBクラスタの導入

##### [前回] [MySQL vs. TiDB-分散トランザクションの比較検証(5): TiDBの基本](https://qiita.com/mingchun_zhao/items/be53b1f63b8967fcbe40)

## はじめに

早速、TiDBをインストールし、動かしてみます。

## 検証環境

TiDBクラスタ環境を構築します。
果たして、ノートPCにクラスタ導入できるでしょうか。

```
CPU: Intel(R) Core(TM) 3.30GHz(4コア8スレッド)
メモリ: 16 GB
OS: Ubuntu 20.04 LTS
```

Ubuntuは、Windows 10で以下のように管理者権限で導入しました。

```
> wsl --install -d Ubuntu-20.04
```

## 環境構築のシナリオ

単一Linuxサーバーに、テスト用TiDBクラスターをすばやくローカル展開します。
この環境で、TiDBの基本アーキテクチャと、TiDB/TiKV/PD/監視コンポーネントなどコンポーネント操作を学習できるようです。

## インストール手順

PingCAP社の[ローカルテストクラスタのデプロイ](https://docs.pingcap.com/tidb/stable/quick-start-with-tidb#Linux)を参考にしました。

### 1. TiUPのダウンロードとインストール

```shell
$ curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 6660k  100 6660k    0     0  8517k      0 --:--:-- --:--:-- --:--:-- 8517k
Successfully set mirror to https://tiup-mirrors.pingcap.com
Detected shell: bash
Shell profile:  /home/zhao/.bash_profile
Installed path: /home/zhao/.tiup/bin/tiup
===============================================
Have a try:     tiup playground
===============================================
```

### 2. 環境変数設定を反映

```
$ source ~/.bash_profile
```

### 3. クラスタを起動

TiDBテストクラスタは、通常以下の構成が必要とのことです。
- TiDBインスタンス、2つ
- TiKVインスタンス、3つ
- PDインスタンス、3つ
- TiFlashインスタンス、1つ

```
$ tiup playground --db 2 --pd 3 --kv 3
```

いくつかコンポーネントがインストールされ、最後に

```
CLUSTER START SUCCESSFULLY, Enjoy it ^-^
To connect TiDB: mysql --comments --host 127.0.0.1 --port 4001 -u root -p (no password)
To connect TiDB: mysql --comments --host 127.0.0.1 --port 4000 -u root -p (no password)
To view the dashboard: http://127.0.0.1:2379/dashboard
PD client endpoints: [127.0.0.1:2379 127.0.0.1:2382 127.0.0.1:2384]
To view the Prometheus: http://127.0.0.1:9090
To view the Grafana: http://127.0.0.1:3000
```

と表示されたら、成功です。

### 4. 別端末から、TiUPクライアントを使ってTiDBに接続

TiUPクライアントをインストール。

```
$ tiup client
```

エンドポイント選択画面で、4000を選択しました。

```
Choose a endpoint to connect
SqO0bRV mysql://root@127.0.0.1:4000
SqO0bRV mysql://root@127.0.0.1:4001
```

クライアントはmysqlドライバーが使用されているようです。

```
Connected with driver mysql (5.7.25-TiDB-v6.0.0)
Type "help" for help.

my:root@127.0.0.1:4000=>
```

試しに、showコマンド実行してみると

```
my:root@127.0.0.1:4000=> show databases;
      Database
--------------------
 INFORMATION_SCHEMA
 METRICS_SCHEMA
 PERFORMANCE_SCHEMA
 mysql
 test
(5 rows)
```

MySQLでお馴染みのデータベース一覧が表示されました。
TiDBはMySQLと親和性高そうです。

### 5. TiDBのPrometheusダッシュボード

Prometheus(プロメテウス)とは
- イベント監視とアラート通知に利用される無料のアプリケーション・ソフトウェア
- 時系列データベースをHTTPプル方式でリアルタイムに構築し、柔軟なクエリーとアラート機能を提供

ブラウザから`http://127.0.0.1:9090`にアクセスします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/94651c38-982b-3073-98d3-f472a5bb8829.png)

### 6. TiDBダッシュボード

ブラウザから`http://127.0.0.1:2379/dashboard`にアクセスします。
デフォルトユーザは`root`、パスワードなしです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/318c50cd-da64-2a93-5055-ec85c56dee5e.png)

### 7. TiDBのGrafanaダッシュボード

Grafana(グラファナ)とは
- 分析およびインタラクティブな可視化を可能とするWebアプリケーション
- オープンソースで、マルチプラットフォームで動作可能
- サポート対象データソースに接続し、Webブラウザ上でチャート/グラフ/アラート機能を提供

ブラウザから`http://127.0.0.1:3000`にアクセスします。
デフォルトユーザーとパスワードともに`admin`。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/117fde7f-2e71-272f-1132-db3a16cd2618.png)

### 8. (Optional)分析用データをTiFlashにロード

### 9. テスト終了時、TiDBクラスタの停止

Ctrl + C でプロセス停止してから、
以下のコマンドでクラスタをクリーンアップ。
```
tiup clean --all
```

## 終わりに

テスト用のTiDBクラスタ環境をサクッと構築できました。
次回は、本題のトランザクション検証を予定しています。
お楽しみに。

##### [次回] [MySQL vs. TiDB-分散トランザクションの比較検証(7): TiDB分散トランザクションの理論](https://qiita.com/mingchun_zhao/items/d9834fdfd4ceb6ec656b)