# TiUP を使用した TiDB クラスタのデプロイ

## 概要

この演習では、TiUPユーティリティをインストールし、TiUPを使用してTiDBクラスタをデプロイし、TiDBクラスタの実行状態を確認します。TiDBサーバに接続し、TiDBクラスタの開始/停止を行い、設定ファイルを確認します。以下の図はTiDBクラスタのデプロイメントトポロジーを示しています。

  ![60%](https://lab-static.pingcap.com/quick-demo/demo_010_en.png)

### 所要時間

+ この演習は約 90 分程度かかります。

> [!TIP]
> 演習環境を起動するには、**開始**をクリックしてください。
> 環境の準備が整ったら、下部のツールバーで **次のモジュール** を選択して **モジュール 1** に進みます。
> そして、ステップバイステップの演習ガイドに従って、ハンズオン環境に接続し、タスクを開始してください。

## モジュール 1: TiUP のインストールと演習環境への慣れ

### 手順 1. リモート Linux マシンに接続する

+ ここをクリック - [ターミナル 1](ssh://monitor1-ssh#1) で、ハンズオン演習用に割り当てられた仮想マシンに接続された新しいターミナルを開きます。

+ ログイン後に表示されるバナー：

    ```output
     ,     #_
    ~\_  ####_        Amazon Linux 2
    ~~  \_#####\
    ~~     \###|      
    ~~       \#/ ___
    ~~       V~' '->
    ~~~         /    A newer version of Amazon Linux is available!
     ~~._.   _/
        _/ _/       Amazon Linux 2023, GA and supported until 2028-03-15.
      _/m/'           https://aws.amazon.com/linux/amazon-linux-2023/
    ```

### 手順 2. 演習リソース情報を取得する

+ `ec2-user` のホームディレクトリにとどまり、`hosts-env.sh` ファイルの内容をIPアドレス情報のために確認してください。あなたの出力は `sample_output` と異なるかもしれません。
   
   ```bash
   cat hosts-env.sh
   ```
   ```output
   export HOST_MONITOR1_PRIVATE_IP=10.90.4.19
   export HOST_MONITOR1_PUBLIC_IP=44.234.33.106
   export HOST_CM_PRIVATE_IP=10.90.4.19
   export HOST_CM_PUBLIC_IP=44.234.33.106
   export HOST_PD1_PRIVATE_IP=10.90.1.197
   export HOST_PD1_PUBLIC_IP=18.236.76.37
   export HOST_PD2_PRIVATE_IP=10.90.3.218
   export HOST_PD2_PUBLIC_IP=18.237.226.109
   export HOST_PD3_PRIVATE_IP=10.90.2.84
   export HOST_PD3_PUBLIC_IP=18.237.105.199
   export HOST_DB1_PRIVATE_IP=10.90.3.216
   export HOST_DB1_PUBLIC_IP=34.222.212.46
   export HOST_DB2_PRIVATE_IP=10.90.2.245
   export HOST_DB2_PUBLIC_IP=54.188.31.139
   export HOST_KV1_PRIVATE_IP=10.90.1.94
   export HOST_KV1_PUBLIC_IP=35.87.137.198
   export HOST_KV2_PRIVATE_IP=10.90.2.38
   export HOST_KV2_PUBLIC_IP=35.91.214.228
   export HOST_KV3_PRIVATE_IP=10.90.3.112
   export HOST_KV3_PUBLIC_IP=54.184.160.176
   export HOST_TIFLASH1_PRIVATE_IP=10.90.4.28
   export HOST_TIFLASH1_PUBLIC_IP=34.223.94.92
   ```

+ 接続したLinux上でノードIPアドレスの変数を設定してください。

   ```bash
   source ./hosts-env.sh
   ```

+ 演習ガイドの上部にある<kbd>Resources</kbd> タブをいつでもクリックすることにより、すべての演習リソース情報にアクセスできます。

### 手順 3. TiUP のダウンロードとインストール - TiDB クラスタ管理ユーティリティ

+ ターミナルプロンプトで次のコマンドを入力して `tiup` ユーティリティをインストールします。環境によっては `tiup` が事前にインストールされている場合もあります。
   
   ```bash
   curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
   ```

   ```output
   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 5152k  100 5152k    0     0  14.8M      0 --:--:-- --:--:-- --:--:-- 14.8M
   Successfully set mirror to https://tiup-mirrors.pingcap.com
   Detected shell: bash
   Shell profile:  /home/ec2-user/.bash_profile
   Installed path: /home/ec2-user/.tiup/bin/tiup
   ===============================================
   Have a try:     tiup playground
   ===============================================
   ```

### 手順 4. TiUP 環境変数をセットアップ

+ ターミナルプロンプトで次のコマンドを入力してください。
   
   ```bash
   source .bash_profile
   ```

### 手順 5. TiUP ミラーをローカルフォルダーに変更

+ 接続されたLinux上で、ローカルTiUPミラーがフォルダー`tidb-community-server-tidb_version-linux-amd64` に設定されていることを確認してください。この設定は、ハンズオン演習のためにすでに[クローンされています](https://docs.pingcap.com/tidb/stable/production-deployment-using-tiup)。

   ```bash
   tiup mirror set tidb-community-server-tidb_version-linux-amd64
   tiup mirror show
   ```
   ```output
   Successfully set mirror to /home/ec2-user/tidb-community-server-tidb_version-linux-amd64
   /home/ec2-user/tidb-community-server-tidb_version-linux-amd64
   ```

+ ローカルTiUPミラーのセットアップに関する詳細については、[TiUPドキュメント](https://docs.pingcap.com/tidb/stable/production-deployment-using-tiup)を参照してください。これで、TiDBクラスタをデプロイする準備が整いましたので、次の練習に進んでください。


### 手順 6. `tiup cluster` を実行して TiUP クラスタコンポーネントがすでにインストールされているかどうかを確認

+ ターミナルプロンプトで次のコマンドを入力して、結果を確認します。`tiup cluster` コマンドは構成されたTiUPミラーから `cluster` コンポーネントをインストールすることができます。
   
   ```bash
   tiup cluster
   ```
   ```output
   Checking updates for component cluster... Deploy a TiDB cluster for production

   Usage:
   tiup cluster [command]

   Available Commands:
   check       Perform preflight checks for the cluster.
   deploy      Deploy a cluster for production
   start       Start a TiDB cluster
   stop        Stop a TiDB cluster
   restart     Restart a TiDB cluster
   scale-in    Scale in a TiDB cluster
   scale-out   Scale out a TiDB cluster
   destroy     Destroy a specified cluster
   clean       (EXPERIMENTAL) Cleanup a specified cluster
   upgrade     Upgrade a specified TiDB cluster
   display     Display information of a TiDB cluster
   prune       Destroy and remove instances that is in tombstone state
   list        List all clusters
   audit       Show audit log of cluster operation
   import      Import an exist TiDB cluster from TiDB-Ansible
   edit-config Edit TiDB cluster config
   show-config Show TiDB cluster config
   reload      Reload a TiDB cluster's config and restart if needed
   patch       Replace the remote package with a specified package and restart the service
   rename      Rename the cluster
   enable      Enable a TiDB cluster automatically at boot
   disable     Disable automatic enabling of TiDB clusters at boot
   replay      Replay previous operation and skip successed steps
   template    Print topology template
   tls         Enable/Disable TLS between TiDB components
   meta        backup/restore meta information
   rotatessh   rotate ssh keys on all nodes
   help        Help about any command
   completion  Generate the autocompletion script for the specified shell

   Flags:
   -c, --concurrency int     max number of parallel tasks allowed (default 5)
      --format string       (EXPERIMENTAL) The format of output, available values are [default, json] (default "default")
   -h, --help                help for tiup
      --ssh string          (EXPERIMENTAL) The executor type: 'builtin', 'system', 'none'.
      --ssh-timeout uint    Timeout in seconds to connect host via SSH, ignored for operations that don't need an SSH connection. (default 5)
   -v, --version             version for tiup
      --wait-timeout uint   Timeout in seconds to wait for an operation to complete, ignored for operations that don't fit. (default 120)
   -y, --yes                 Skip all confirmations and assumes 'yes'

   Use "tiup cluster help [command]" for more information about a command.
   ```

### 手順 7. プライベートキー/パブリックキーがすでにセットアップされていることを確認

+ この演習では、プライベートキー/パブリックキーペアは演習環境で準備されています。自分の環境で演習後にプライベートキー/パブリックキーペアを準備するには、`ssh-keygen` を使用する必要があります。

+ プライベートキーは `~/.ssh` ディレクトリの下にあり、プライベートキーファイルの権限は読み取り専用です。このプライベートキーを使用してTiDBクラスタをデプロイします。
   
   ```bash
   ls -l /home/ec2-user/.ssh/pe-class-key-oregon.pem
   ```
   ```output
   -r-------- 1 ec2-user ec2-user 1674 May 25 04:09 /home/ec2-user/.ssh/pe-class-key-oregon.pem
   ```

+ 対応するパブリックキーはこの演習の各ノードの `~/.ssh/authorized_keys` ファイルにあるので、パスワードなしで任意のノードにSSH接続できます。

   ```bash
   cat ~/.ssh/authorized_keys | grep oregon
   ```
   ```output
   ssh-rsa AAAAB3Nza..........FvuLk3f5/Wsdx7jdNrP pe-class-key-oregon
   ```

## モジュール 2: TiDBクラスタのデプロイ

### 手順 1. トポロジーファイルを確認

+ TiDBクラスタをデプロイするために使用するトポロジーファイル `solution-topology-ten-nodes.yaml` を確認します。 `sample_output` に示されているIPアドレスはあなたのものとは異なります。
   
   ```bash
   cat solution-topology-ten-nodes.yaml
   ```
   ```output
   global:
     user: "ec2-user"
     ssh_port: 22
     deploy_dir: "/tidb-deploy"
     data_dir: "/tidb-data"
     arch: "amd64"
   server_configs:
     pd:
       replication.location-labels: ["region","zone"]
       replication.max-replicas: 3
   pd_servers:
     - host: 10.90.3.184
       client_port: 2379
       peer_port: 2380
       advertise_client_addr: "http://35.88.150.142:2379"
       config:
         server.labels:
           region: oregon
           zone: az1
     - host: 10.90.3.28
       client_port: 2379
       peer_port: 2380
       advertise_client_addr: "http://18.236.135.17:2379"
       config:
         server.labels:
           region: oregon
           zone: az1
     - host: 10.90.3.247
       client_port: 2379
       peer_port: 2380
       advertise_client_addr: "http://34.219.57.252:2379"
       config:
         server.labels:
           region: oregon
           zone: az1
   tidb_servers:
     - host: 10.90.1.164
       port: 4000
       status_port: 10080
       deploy_dir: /tidb-deploy/tidb-4000
       log_dir: /tidb-deploy/tidb-4000/log
     - host: 10.90.1.14
       port: 4000
       status_port: 10080
       deploy_dir: /tidb-deploy/tidb-4000
       log_dir: /tidb-deploy/tidb-4000/log
   tikv_servers:
     - host: 10.90.3.197
       port: 20160
       status_port: 20180
       config:
         server.labels:
           region: oregon
           zone: az1
     - host: 10.90.3.39
       port: 20160
       status_port: 20180
       config:
         server.labels:
           region: oregon
           zone: az1
     - host: 10.90.3.82
       port: 20160
       status_port: 20180
       config:
         server.labels:
           region: oregon
           zone: az1
   tiflash_servers:
     - host: 10.90.4.194
       tcp_port: 9000
       flash_service_port: 3930
       deploy_dir: /tidb-deploy/tiflash-9000
       data_dir: /tidb-data/tiflash-9000
       log_dir: /tidb-deploy/tiflash-9000/log
   monitoring_servers:
     - host: 10.90.4.156
   grafana_servers:
     - host: 10.90.4.156
   alertmanager_servers:
     - host: 10.90.4.156
   ```

### 手順 2. 必要なパッケージのインストール

+ 全てのクラスターノードで `numactl` がインストールされていることを確認してください（このタスクは教室環境ですでに完了しているはずなので、実際にすべてのノードでインストールを実行する必要はありません）。`TiKV server 1` で次のコマンドをターミナルプロンプトで入力して `numactl` をインストールします（`SSH`のプロンプトに対して`yes`と入力してください）。
   
   ```bash
   ssh -i ~/.ssh/pe-class-key-oregon.pem ec2-user@${HOST_KV1_PRIVATE_IP}
   ```
   ```output
      ,     #_
      ~\_  ####_        Amazon Linux 2
     ~~  \_#####\
     ~~     \###|       
     ~~       \#/ ___
      ~~       V~' '->
       ~~~         /    新しいバージョンのAmazon Linuxが利用可能です！
         ~~._.   _/
            _/ _/       Amazon Linux 2023、GAで2028-03-15までサポート。
          _/m/'           https://aws.amazon.com/linux/amazon-linux-2023/
   ```
   ```bash
   sudo yum -y install numactl
   ```
   ```output
   Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
   amzn2-core                                                                                                                                 | 3.6 kB  00:00:00     
   60 packages excluded due to repository priority protections
   Package numactl-2.0.9-7.amzn2.x86_64 already installed and latest version
   Nothing to do
   ```

+ `TiKV server 1` からログオフして、TiUPコントロールマシンのプロンプトに戻ります。
   
   ```bash
   exit
   ```

### 手順 3. `tiup cluster check` を使用してシステム要件を確認する

+ クラスターデプロイメント前提条件のシステム設定を確認します。ターミナルプロンプトで次のコマンドを入力して、結果を確認します。一部の項目がシステムチェックに合格しなかったことがわかります。この問題には次のステップで対処します。
   
   ```bash
   tiup cluster check ./solution-topology-ten-nodes.yaml \
    --user ec2-user \
    -i /home/ec2-user/.ssh/pe-class-key-oregon.pem
   ```
   ```output
   + Detect CPU Arch Name
     - Detecting node 10.90.2.90 Arch info ... ⠙ Shell: host=10.90.2.90, sudo=false, command=`uname -m`
     - Detecting node 10.90.2.231 Arch info ... ⠙ Shell: host=10.90.2.231, sudo=false, command=`uname -m`
     - Detecting node 10.90.2.138 Arch info ... ⠙ Shell: host=10.90.2.138, sudo=false, command=`uname -m`
     - Detecting node 10.90.2.242 Arch info ... ⠙ Shell: host=10.90.2.242, sudo=false, command=`uname -m`
   ...
   10.90.2.97   sysctl        Fail    fs.file-max = 376482, should be greater than 1000000
   10.90.2.97   sysctl        Fail    net.core.somaxconn = 4096, should be greater than 32768
   10.90.2.97   sysctl        Fail    net.ipv4.tcp_syncookies = 1, should be 0
   10.90.2.97   sysctl        Fail    vm.swappiness = 60, should be 0
   10.90.2.97   service       Pass    service firewalld not found, ignore
   10.90.2.97   command       Pass    numactl: policy: default
   10.90.2.97   timezone      Pass    time zone is the same as the first PD machine: UTC
   10.90.2.97   os-version    Pass    OS is Amazon Linux 2 
   10.90.2.97   memory        Pass    memory size is 4096MB
   10.90.2.97   limits        Fail    soft limit of 'nofile' for user 'ec2-user' is not set or too low
   10.90.2.97   limits        Fail    hard limit of 'nofile' for user 'ec2-user' is not set or too low
   10.90.2.97   limits        Fail    soft limit of 'stack' for user 'ec2-user' is not set or too low
   10.90.2.97   selinux       Pass    SELinux is disabled
   10.90.2.97   thp           Fail    THP is enabled, please disable it for best performance
   ```

### 手順 4. 失敗したチェックの自動修正を実行する

+ ターミナルプロンプトで次のコマンドを入力して、結果を確認します。
   
   ```bash
   tiup cluster check ./solution-topology-ten-nodes.yaml \
    --user ec2-user \
    -i /home/ec2-user/.ssh/pe-class-key-oregon.pem \
    --apply
   ```
   ```output
   ...
   10.90.3.79   cpu-governor  Warn    Unable to determine current CPU frequency governor policy, auto fixing not supported
   10.90.3.79   sysctl        Fail    will try to set 'fs.file-max = 1000000'
   10.90.3.79   sysctl        Fail    will try to set 'net.core.somaxconn = 32768'
   10.90.3.79   sysctl        Fail    will try to set 'net.ipv4.tcp_syncookies = 0'
   10.90.3.79   sysctl        Fail    will try to set 'vm.swappiness = 0'
   + Try to apply changes to fix failed checks
     - Applying changes on 10.90.2.231 ... Done
     - Applying changes on 10.90.2.138 ... Done
     - Applying changes on 10.90.2.242 ... Done
     - Applying changes on 10.90.2.158 ... Done
     - Applying changes on 10.90.1.56 ... Done
     - Applying changes on 10.90.4.138 ... Done
     - Applying changes on 10.90.2.90 ... Done
     - Applying changes on 10.90.1.169 ... Done
     - Applying changes on 10.90.4.126 ... Done
     - Applying changes on 10.90.2.95 ... Done
   ```

### 手順 5. 名前を `tidb-demo` とした TiDB クラスタをデプロイする

+ ターミナルプロンプトで次のコマンドを入力して、結果を確認します。コマンドに`--yes`を含めて実行しています。`--yes`を使用しないと、デプロイ中にクラスタートポロジーの確認が求められます。
   
   ```bash
   tiup cluster deploy tidb-demo tidb_version ./solution-topology-ten-nodes.yaml \
    --user ec2-user \
    -i /home/ec2-user/.ssh/pe-class-key-oregon.pem \
    --yes
   ```
   ```output
   + Detect CPU Arch Name
     - Detecting node 10.90.2.90 Arch info ... ⠙ Shell: host=10.90.2.90, sudo=false, command=`uname -m`
     - Detecting node 10.90.2.231 Arch info ... ⠙ Shell: host=10.90.2.231, sudo=false, command=`uname -m`
     - Detecting node 10.90.2.138 Arch info ... ⠙ Shell: host=10.90.2.138, sudo=false, command=`uname -m`
     - Detecting node 10.90.2.242 Arch info ... ⠙ Shell: host=10.90.2.242, sudo=false, command=`uname -m`
   ...
   クラスター `tidb-demo` のデプロイが完了しました。次のコマンドを使用して開始できます: `tiup cluster start tidb-demo --init`
   ```

## モジュール 3: デプロイした TiDB クラスタのステータスをチェック

### 手順 1. TiUP を使用して TiDB クラスタのステータスをチェック

+ TiUPコントロールマシンで、TiUPが管理しているクラスタを確認してください。
   
   ```bash
   tiup cluster list
   ```
   ```output
   Name       User      Version  Path                                                     PrivateKey
   ----       ----      -------  ----                                                     ----------
   tidb-demo  ec2-user  vtidb_version   /home/ec2-user/.tiup/storage/cluster/clusters/tidb-demo  /home/ec2-user/.tiup/storage/cluster/clusters/tidb-demo/ssh/id_rsa
   ```

+ デプロイされたTiDBクラスタのステータスを確認してください。すべてのコンポーネントがまだ実行されていません。
   
   ```bash
   tiup cluster display tidb-demo
   ```
   ```output
   Cluster type:       tidb
   Cluster name:       tidb-demo
   Cluster version:    vtidb_version
   Deploy user:        ec2-user
   SSH type:           builtin
   Grafana URL:        http://10.90.4.138:3000
   ID                 Role          Host         Ports                            OS/Arch       Status  Data Dir                      Deploy Dir
   --                 ----          ----         -----                            -------       ------  --------                      ----------
   10.90.4.138:9093   alertmanager  10.90.4.138  9093/9094                        linux/x86_64  Down    /tidb-data/alertmanager-9093  /tidb-deploy/alertmanager-9093
   10.90.4.138:3000   grafana       10.90.4.138  3000                             linux/x86_64  Down    -                             /tidb-deploy/grafana-3000
   10.90.2.138:2379   pd            10.90.2.138  2379/2380                        linux/x86_64  Down    /tidb-data/pd-2379            /tidb-deploy/pd-2379
   10.90.2.231:2379   pd            10.90.2.231  2379/2380                        linux/x86_64  Down    /tidb-data/pd-2379            /tidb-deploy/pd-2379
   10.90.2.90:2379    pd            10.90.2.90   2379/2380                        linux/x86_64  Down    /tidb-data/pd-2379            /tidb-deploy/pd-2379
   10.90.4.138:9090   prometheus    10.90.4.138  9090/12020                       linux/x86_64  Down    /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090
   10.90.1.169:4000   tidb          10.90.1.169  4000/10080                       linux/x86_64  Down    -                             /tidb-deploy/tidb-4000
   10.90.1.56:4000    tidb          10.90.1.56   4000/10080                       linux/x86_64  Down    -                             /tidb-deploy/tidb-4000
   10.90.4.126:9000   tiflash       10.90.4.126  9000/8123/3930/20170/20292/8234  linux/x86_64  N/A     /tidb-data/tiflash-9000       /tidb-deploy/tiflash-9000
   10.90.2.158:20160  tikv          10.90.2.158  20160/20180                      linux/x86_64  N/A     /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
   10.90.2.242:20160  tikv          10.90.2.242  20160/20180                      linux/x86_64  N/A     /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
   10.90.2.95:20160   tikv          10.90.2.95   20160/20180                      linux/x86_64  N/A     /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
   Total nodes: 12
   ```

### 手順 2. TiDB クラスタを開始する

+ TiDBクラスタを標準のスタートアップモードで開始します（データベースのrootユーザーのパスワードは空です）。このステップでは、データベースのrootユーザーのパスワードをランダムに生成するために `--init` オプションを使用していません。

   ```bash
   tiup cluster start tidb-demo
   ```
   ```output
   ...
   Started cluster `tidb-demo` successfully
   ```

+ 開始されたTiDBクラスタのステータスを確認してください。TiDBダッシュボードとGrafanaのURLも表示されます。次のステップに進んでください。

   ```bash
   tiup cluster display tidb-demo
   ```
   ```output
   Cluster type:       tidb
   Cluster name:       tidb-demo
   Cluster version:    vtidb_version
   Deploy user:        ec2-user
   SSH type:           builtin
   Dashboard URL:      http://34.222.39.121:2379/dashboard
   Grafana URL:        http://10.90.4.138:3000
   ID                 Role          Host         Ports                            OS/Arch       Status  Data Dir                      Deploy Dir
   --                 ----          ----         -----                            -------       ------  --------                      ----------
   10.90.4.138:9093   alertmanager  10.90.4.138  9093/9094                        linux/x86_64  Up      /tidb-data/alertmanager-9093  /tidb-deploy/alertmanager-9093
   10.90.4.138:3000   grafana       10.90.4.138  3000                             linux/x86_64  Up      -                             /tidb-deploy/grafana-3000
   10.90.2.138:2379   pd            10.90.2.138  2379/2380                        linux/x86_64  Up|L    /tidb-data/pd-2379            /tidb-deploy/pd-2379
   10.90.2.231:2379   pd            10.90.2.231  2379/2380                        linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
   10.90.2.90:2379    pd            10.90.2.90   2379/2380                        linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
   10.90.4.138:9090   prometheus    10.90.4.138  9090/12020                       linux/x86_64  Up      /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090
   10.90.1.169:4000   tidb          10.90.1.169  4000/10080                       linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
   10.90.1.56:4000    tidb          10.90.1.56   4000/10080                       linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
   10.90.4.126:9000   tiflash       10.90.4.126  9000/8123/3930/20170/20292/8234  linux/x86_64  Up      /tidb-data/tiflash-9000       /tidb-deploy/tiflash-9000
   10.90.2.158:20160  tikv          10.90.2.158  20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
   10.90.2.242:20160  tikv          10.90.2.242  20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
   10.90.2.95:20160   tikv          10.90.2.95   20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
   Total nodes: 12
   ```

### 手順 3. TiDB ダッシュボードと Grafana ダッシュボードでクラスタステータスをチェック

+ TiDBダッシュボードにブラウザでログインし、usernameとpasswordはTiDBの`root`ユーザーと同じです。標準のスタートアップを選択した場合、パスワードは空です。ホームページにはTiDBクラスタのノード情報が表示されます。

+ また、Grafanaダッシュボードでクラスタのステータスを確認することもできます。ステップ2で表示されたGrafana URLにはノード`monitor`のプライベートIPアドレスが含まれています。
   それをノード`monitor`の対応するパブリックIPアドレスに変更し、URLをブラウザに入力します。`monitor`のアドレス情報は<kbd>Resources</kbd>ボタンをクリックすることで確認できます。Grafanaのデフォルトのuserおよびpasswordはどちらも`admin`です。

  ![40](https://lab-static.pingcap.com/quick-demo/Grafana_aa_001_20220615.png)

## モジュール 4: TiDB インスタンスに接続する

### 手順 1. リモート Linux から TiDB インスタンスに接続する

+ リモートLinuxに接続しているSSHセッションから。TiDBインスタンスに接続し、パスワードを変更します。`root`がパスワードを持っている場合、オプション `-p` を提供する必要があります。そうでない場合、`-p` オプションは省略できます。

   ```bash
   mysql -h ${HOST_DB1_PRIVATE_IP} --port 4000 -u root
   ```
   ```output
   mysql> 
   ```

### 手順 2. SQL クエリを実行

+ TiDBクラスタのバージョンを確認します。

  ```sql
  SELECT TIDB_VERSION(), VERSION(), NOW()\G
  ```
  ```output
  *************************** 1. row ***************************
  TIDB_VERSION(): Release Version: v8.1.1
  Edition: Community
  Git Commit Hash: a7df4f9845d5d6a590c5d45dad0dcc9f21aa8765
  Git Branch: HEAD
  UTC Build Time: 2024-08-22 05:50:03
  GoVersion: go1.21.13
  Race Enabled: false
  Check Table Before Drop: false
  Store: tikv
       VERSION(): 8.0.11-TiDB-v8.1.1
           NOW(): 2025-01-19 14:20:05
  1 row in set (0.00 sec)
  ```

### 手順 3. mysql クライアントから Linux プロンプトに戻る

   ```sql
   EXIT;
   ```
   ```output
   Bye
   ```

## モジュール 5: TiDB 構成ファイルのレビュー

### 手順 1. トポロジー構成 YAML をレビュー

+ TiUPコントロールマシンで、クラスタートポロジーと設定ファイルの位置をレビューします。完了したら、`:q!`とタイプしてLinuxのOSプロンプトに戻ります。

   ```bash
   tiup cluster edit-config tidb-demo
   ```
   ```output
   global:
     user: ec2-user
     ssh_port: 22
     ssh_type: builtin
     deploy_dir: /tidb-deploy
     data_dir: /tidb-data
     os: linux
     arch: amd64
     systemd_mode: system
   ...
   alertmanager_servers:
   - host: 10.90.4.138
     ssh_port: 22
     web_port: 9093
     cluster_port: 9094
     deploy_dir: /tidb-deploy/alertmanager-9093
     data_dir: /tidb-data/alertmanager-9093
     log_dir: /tidb-deploy/alertmanager-9093/log
     arch: amd64
     os: linux
   ```

### 手順 2. TiDB サーバー1上の TiDB サーバー構成ディレクトリを確認

+ TiDBサーバー1に接続して構成ディレクトリをリストします。`ssh`のプロンプトが表示された場合は`yes`と入力してください。
   
   ```bash
   ssh -i ~/.ssh/pe-class-key-oregon.pem ec2-user@${HOST_DB1_PRIVATE_IP} ls -l /tidb-deploy/tidb-4000/
   ```
   ```output
   total 0
   drwxr-xr-x 2 ec2-user ec2-user 25 May 25 04:16 bin
   drwxr-xr-x 2 ec2-user ec2-user 23 May 25 04:16 conf
   drwxr-xr-x 3 ec2-user ec2-user 90 May 25 04:21 log
   drwxr-xr-x 2 ec2-user ec2-user 25 May 25 04:16 scripts
   ```

### 手順 3. TiKV サーバー1上の TiKV サーバー構成ディレクトリを確認

+ TiKVサーバー1に接続して`TiKVサーバー`のデプロイメントディレクトリの内容を表示します。`ssh`のプロンプトが表示された場合は`yes`と入力してください。
   
   ```bash
   ssh -i ~/.ssh/pe-class-key-oregon.pem ec2-user@${HOST_KV1_PRIVATE_IP} ls -l /tidb-deploy/
   ```
   ```output
   total 0
   drwxr-xr-x 6 ec2-user ec2-user 55 May 25 04:16 monitor-9100
   drwxr-xr-x 6 ec2-user ec2-user 55 May 25 04:16 tikv-20160
   ```

+ TiKVサーバー1に接続して`TiKVサーバー`構成ディレクトリの内容を表示します。

   ```bash
   ssh -i ~/.ssh/pe-class-key-oregon.pem ec2-user@${HOST_KV1_PRIVATE_IP} ls -l /tidb-deploy/tikv-20160/
   ```
   ```output
   total 0
   drwxr-xr-x 2 ec2-user ec2-user 25 May 25 04:16 bin
   drwxr-xr-x 2 ec2-user ec2-user 23 May 25 04:16 conf
   drwxr-xr-x 2 ec2-user ec2-user 45 May 25 04:20 log
   drwxr-xr-x 2 ec2-user ec2-user 25 May 25 04:16 scripts
   ```

+ TiKVサーバー1に接続して`TiKVサーバー`データディレクトリの内容を表示します。

   ```bash
   ssh -i ~/.ssh/pe-class-key-oregon.pem ec2-user@${HOST_KV1_PRIVATE_IP} ls -l /tidb-data/
   ```
   ```output
   total 0
   drwxr-xr-x 2 ec2-user ec2-user   6 May 25 04:16 monitor-9100
   drwxr-xr-x 6 ec2-user ec2-user 164 May 25 04:20 tikv-20160
   ```

   ```bash
   ssh -i ~/.ssh/pe-class-key-oregon.pem ec2-user@${HOST_KV1_PRIVATE_IP} ls -l /tidb-data/tikv-20160/
   ```
   ```output
   total 1048672
   drwxr-xr-x 2 ec2-user ec2-user        134 May 25 04:20 db
   drwxr-xr-x 4 ec2-user ec2-user         33 May 25 04:20 import
   -rw-r--r-- 1 ec2ユーザー ec2ユーザー      20330 May 25 04:20 last_tikv.toml
   -rw-r--r-- 1 ec2ユーザー ec2ユーザー          0 May 25 04:20 LOCK
   -rw-r--r-- 1 ec2ユーザー ec2ユーザー          0 May 25 04:20 raftdb.info
   drwxr-xr-x 2 ec2ユーザー ec2ユーザー         82 May 25 04:20 raft-engine
   -rw-r--r-- 1 ec2ユーザー ec2ユーザー      75538 May 25 04:20 rocksdb.info
   drwxr-xr-x 2 ec2ユーザー ec2ユーザー          6 May 25 04:21 snap
   -rw-r--r-- 1 ec2ユーザー ec2ユーザー 1073741824 May 25 04:20 space_placeholder_file
   ```

### 手順 4. Placement Driverサーバー1上で Placement Driver サーバー構成ディレクトリを確認

+ Placement Driverサーバー1に接続し、`PDサーバー`構成ファイルディレクトリの内容を表示します。`ssh`のプロンプトが表示された場合は`yes`と入力してください。
   
   ```bash
   ssh -i ~/.ssh/pe-class-key-oregon.pem ec2-user@${HOST_PD1_PRIVATE_IP} ls -l /tidb-deploy/
   ```
   ```output
   total 0
   drwxr-xr-x 6 ec2-user ec2-user 55 May 25 04:16 monitor-9100
   drwxr-xr-x 6 ec2-user ec2-user 55 May 25 04:16 pd-2379
   ```

   ```bash
   ssh -i ~/.ssh/pe-class-key-oregon.pem ec2-user@${HOST_PD1_PRIVATE_IP} ls -l /tidb-deploy/pd-2379/
   ```
   ```output
   total 0
   drwxr-xr-x 2 ec2-user ec2-user 23 May 25 04:16 bin
   drwxr-xr-x 2 ec2-user ec2-user 21 May 25 04:16 conf
   drwxr-xr-x 2 ec2-user ec2-user 41 May 25 04:20 log
   drwxr-xr-x 2 ec2-user ec2-user 23 May 25 04:16 scripts
   ```

+ Placement Driverサーバー1に接続し、`PDサーバー`データファイルディレクトリの内容を表示します。
   
   ```bash
   ssh -i ~/.ssh/pe-class-key-oregon.pem ec2-user@${HOST_PD1_PRIVATE_IP} ls -l /tidb-data/
   ```
   ```output
   total 0
   drwxr-xr-x 2 ec2-user ec2-user  6 May 25 04:16 monitor-9100
   drwxr-xr-x 5 ec2-user ec2-user 57 May 25 04:20 pd-2379
   ```

   ```bash
   ssh -i ~/.ssh/pe-class-key-oregon.pem ec2-user@${HOST_PD1_PRIVATE_IP} ls -l /tidb-data/pd-2379/
   ```
   ```output  
   total 0
   drwxr-xr-x 2 ec2ユーザー ec2ユーザー 85 May 25 04:20 hot-region
   drwx------ 4 ec2ユーザー ec2ユーザー 29 May 25 04:20 member
   drwxr-xr-x 2 ec2ユーザー ec2ユーザー 85 May 25 04:20 region-meta
   ```

### 手順 5. TiDB クラスタを停止する
   
   ```bash
   tiup cluster stop tidb-demo --yes
   ```
   ```output
   + [ Serial ] - SSHKeySet: privateKey=/home/ec2-user/.tiup/storage/cluster/clusters/tidb-demo/ssh/id_rsa, publicKey=/home/ec2-user/.tiup/storage/cluster/clusters/tidb-demo/ssh/id_rsa.pub
   + [Parallel] - UserSSH: user=ec2-user, host=10.90.2.95
   + [Parallel] - UserSSH: user=ec2-user, host=10.90.2.90
   + [Parallel] - UserSSH: user=ec2-user, host=10.90.2.158
   + [Parallel] - UserSSH: user=ec2-user, host=10.90.1.169
   + [Parallel] - UserSSH: user=ec2-user, host=10.90.1.56
   + [Parallel] - UserSSH: user=ec2-user, host=10.90.4.126
   + [Parallel] - UserSSH: user=ec2-user, host=10.90.4.138
   + [Parallel] - UserSSH: user=ec2-user, host=10.90.4.138
   + [Parallel] - UserSSH: user=ec2-user, host=10.90.4.138
   + [Parallel] - UserSSH: user=ec2-user, host=10.90.2.138
   + [Parallel] - UserSSH: user=ec2-user, host=10.90.2.242
   + [Parallel] - UserSSH: user=ec2-user, host=10.90.2.231
   + [ Serial ] - StopCluster
   ...
   Stopped cluster `tidb-demo` successfully
   ```

+ リモートLinuxからログアウトします。

  ```bash
  exit
  ```

## 結論

分散SQLデータベース管理の世界では、クラスタコンポーネントの効率的な管理が不可欠です。TiUPは、クラスタ管理タスクにシンプルさと機敏さをもたらすTiDBエコシステムの一部として導入されました。TiDB 4.0の導入以来、TiUPはユーザーがTiDBクラスタ操作を行う際の方法を革新し、非常に少ない労力でタスクを管理・実行できるようにしました。

TiUPの主な魅力の一部はそのインストールプロセスの簡単さにあります。DarwinとLinuxの両方のオペレーティングシステムで、1行のコマンドラインでTiUPをインストールすることができます。これにより、TiUPが指定された `$HOME/.tiup` ディレクトリにインストールされ、システム環境変数を設定してシームレスなアクセスを可能にするプロセスが簡略化されます。

```hbsptform
{
  "ui": {
    "titleLevel": 3
  },
  "portalId": "4466002",
  "formId": "62bfb32a-a60a-4f9d-b2dc-1107a93db568",
  "region": "na1",
  "sfdcCampaignId": "701RC00000NdFlAYAV"
}
```