## モジュール 3: TiKV クラスターのデータバランス操作を開始し、データバランスの速度を調整いたします

+ 本モジュールでは、受講者は前のモジュールで発生した TiKV クラスターのスケールアウト後にバランスが取れていない問題を解決し、その速度を調整します。

### 手順 1. PD がバランススケジューリング機能を有効にしているか確認し、有効にします

+ PD コンポーネントの `balance-region-scheduler` を追加します。

   ```bash
   ~/.tiup/bin/tiup ctl:v${LAB:TIDB_VERSION} pd -u http://${HOST_PD1_PRIVATE_IP}:2379 scheduler show
   ```

   ```output
   Starting component ctl: /home/ec2-user/.tiup/components/ctl/v${LAB:TIDB_VERSION}/ctl pd -u http://10.90.2.178:2379 scheduler show
   [
   "evict-slow-store-scheduler",
   "balance-leader-scheduler",
   "balance-hot-region-scheduler"
   ]
   ```

   ```bash
   ~/.tiup/bin/tiup ctl:v${LAB:TIDB_VERSION} pd -u http://${HOST_PD1_PRIVATE_IP}:2379 scheduler add balance-region-scheduler
   ```

   ```output
   Starting component ctl: /home/ec2-user/.tiup/components/ctl/v${LAB:TIDB_VERSION}/ctl pd -u http://10.90.2.178:2379 scheduler add balance-region-scheduler
   Success! The scheduler is created.
   ```

   ```bash
   ~/.tiup/bin/tiup ctl:v${LAB:TIDB_VERSION} pd -u http://${HOST_PD1_PRIVATE_IP}:2379 scheduler show
   ```

   ```output
   Starting component ctl: /home/ec2-user/.tiup/components/ctl/v${LAB:TIDB_VERSION}/ctl pd -u http://10.90.2.178:2379 scheduler show
   [
   "balance-region-scheduler",
   "balance-leader-scheduler",
   "balance-hot-region-scheduler",
   "evict-slow-store-scheduler"
   ]
   ```

+ [Grafana 監視](http://${LAB:HOST_MONITOR1_PUBLIC_IP}:3000)にログインし、`Home` に進んでから `tidb-demo` を選択し、その後 `tidb-demo-PD` を選択してください `tidb-demo-PD` の下半分で `Scheduler` タブを開くと、PD コンポーネントの `balance-region-scheduler` が追加されているのが確認できます。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/2ad5a2ececf1dc8cac303e828270f34539539187.png)

+ 30 秒待機した後、`tidb-demo-PD` の上半分で `Online store progress` が `No Data`、`Left time` が `N/A`、`Current scaling speed` が `0 MB/s` であることが確認できます。これは、バランスがまだ開始されていないことを示しており、次に調査を続けます。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/adb4348802beb9d2722289e55e99d477906e6bc8.png)

### 手順 2. `region-schedule-limit` が `0` であるかどうかを調査し、設定を行います

+ `tidb-demo-PD` の下半分で `Operator` タブを開くと、`Scheduler operator create` パネルと `Scheduler operator finish` パネルの両方に `balance-region-scheduler`のオペレーターが生成されず、実行されていないことが確認できます。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/30ff56c740955c7475e0c10380d510e33a371e11.png)

+ `region-schedule-limit` を `2048` に調整します。

   ```bash
   ~/.tiup/bin/tiup ctl:v${LAB:TIDB_VERSION} pd -u http://${HOST_PD1_PRIVATE_IP}:2379 config set region-schedule-limit 2048
   ```

   ```output
   Starting component ctl: /home/ec2-user/.tiup/components/ctl/v${LAB:TIDB_VERSION}/ctl pd -u http://10.90.2.178:2379 config set region-schedule-limit 2048
   Success!
   ```

+ 再度 [Grafana 監視](http://${LAB:HOST_MONITOR1_PUBLIC_IP}:3000)の `tidb-demo-PD` に戻り、30 秒待機してから、`tidb-demo-PD` の下半分で `Operator` タブを開くと、`Scheduler operator create` パネルと `Scheduler operator finish` パネルの両方に `balance-region-scheduler` のオペレーターが生成され、実行されていることが確認できます。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/cd10d370eb1503fb94dbf7f852b70901556ab7e8.png)

+ さらに待機すると、`tidb-demo-PD` の上半分で `Online store progress`、`Left time`、および `Current scaling speed` にそれぞれ値が表示されます。これは、バランスが開始されたことを示していますが、その際、バランスの速度が非常に遅く、`Left time` も完了までに長い時間がかかることが表示されています。次に、バランスの速度を上げる必要があります。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/19b35aa528cf6ce53e18c83c652246dd38d60444.png)

+ `balance-region-scheduler` を追加し、`region-schedule-limit` を設定した後にデータバランスが開始される理由については、モジュール1の手順8を参照してください。

+ `tidb-demo-TiKV-Details` の `Cluster` タブでは、各TiKVノードの IO 使用率 `IO utilization` が現在比較的低いことが確認できます。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/c42203151614b13996cf5d789006b2f35e48ba10.png)

### 手順 3. TiKV クラスターのスケールアウト後のバランスを加速します

+ `tidb-demo-PD` の上半分で、`Online store progress`が 10% を超えるのを待ちます（注意：このステップは `Online store progress` が 10% から 20% の間に開始することをお勧めします。20% を超えると、次のステップを実施する時間がない可能性があります）。すべての TiKV ノードの `store limit` を 1 から 5 に設定し、TiKV のバランス実行速度を向上させます。

   ```bash
   ~/.tiup/bin/tiup ctl:v${LAB:TIDB_VERSION} pd -u http://${HOST_PD1_PRIVATE_IP}:2379 store limit all 5
   ```

   ```output
   Starting component ctl: /home/ec2-user/.tiup/components/ctl/v${LAB:TIDB_VERSION}/ctl pd -u http://10.90.2.178:2379 store limit all 5
   Success! Set store limit successfully.
   ```

+ すべての TiKV ノードの `store limit` が `5` に設定されていることを確認します。

   ```bash
   ~/.tiup/bin/tiup ctl:v${LAB:TIDB_VERSION} pd -u http://${HOST_PD1_PRIVATE_IP}:2379 store limit
   ```

   ```output
   Starting component ctl: /home/ec2-user/.tiup/components/ctl/v${LAB:TIDB_VERSION}/ctl pd -u http://10.90.2.178:2379 store limit
   {
      "1": {
         "add-peer": 5,
         "remove-peer": 5
      },
      "4": {
         "add-peer": 5,
         "remove-peer": 5
      },
      "576": {
         "add-peer": 5,
         "remove-peer": 5
      },
      "7": {
         "add-peer": 5,
         "remove-peer": 5
      }
   }
   ```

+ 再度[Grafana 監視](http://${LAB:HOST_MONITOR1_PUBLIC_IP}:3000)の `tidb-demo-PD` に戻り、10 秒待機します。`tidb-demo-PD` の `Operator` タブでは、`Scheduler operator create` パネルと `Scheduler operator finish` パネルの中で `balance-region-scheduler`の速度が上昇し始めていることが確認できます。これは、TiKV のオペレーター実行効率が向上したためです。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/cfac45c51fe095c95ee4be3df34f923994e4ec52.png)

+ `tidb-demo-TiKV-Details` の `Cluster` タブでは、各 TiKV ノードの IO 使用率 `IO utilization`が上昇し始めていることが確認できます。これは、新たに追加された TiKV ノードとソースとして選ばれた TiKV ノードが IO リソースをバランスに使用していることを示しており、これが既存のビジネス負荷に影響を与える可能性があります。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/c6d214e68fd635c0438e7915dc837424814fd5cd.png)

+ さらに待機し、`tidb-demo-PD` の上半分を観察すると、`Online store progress` のパーセンテージが加速して上昇し、`Left time` の値が小さくなり、`Current scaling speed`が上昇していることが確認できます。これは、Store limit の増加がバランスの速度を加速させることを示しています。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/2e3208e8936fd688605f28771aa8346ee0b4ed23.png)

### 手順 4. パラメータを調整し、TiKV クラスターのスケールアウト後にデータバランスの速度を遅くします

+ `tidb-demo-PD` の上半分で、`Online store progress` が 50% を超えるのを待ちます（注意：このステップは `Online store progress` が 50% から 60% の間に開始することをお勧めいたします。60% を超えると、次のステップを実施する時間がない可能性があります）。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/1bf8559bc784ca742d1fec69d1e80f509b3a145f.png)

+ バランスの速度を下げるために、すべての TiKV ノードの `store limit` を `1` に設定します。

   ```bash
   ~/.tiup/bin/tiup ctl:v${LAB:TIDB_VERSION} pd -u http://${HOST_PD1_PRIVATE_IP}:2379 store limit all 1
   ```

   ```output
   Starting component ctl: /home/ec2-user/.tiup/components/ctl/v${LAB:TIDB_VERSION}/ctl pd -u http://10.90.2.178:2379 store limit all 1
   Success! Set store limit successfully.
   ```

+ すべての TiKV ノードの `store limit` が `1` に設定されていることを確認します。

   ```bash
   ~/.tiup/bin/tiup ctl:v${LAB:TIDB_VERSION} pd -u http://${HOST_PD1_PRIVATE_IP}:2379 store limit
   ```

   ```output
   Starting component ctl: /home/ec2-user/.tiup/components/ctl/v${LAB:TIDB_VERSION}/ctl pd -u http://10.90.2.178:2379 store limit
   {
      "1": {
         "add-peer": 1,
         "remove-peer": 1
      },
      "4": {
         "add-peer": 1,
         "remove-peer": 1
      },
      "576": {
         "add-peer": 1,
         "remove-peer": 1
      },
      "7": {
         "add-peer": 1,
         "remove-peer": 1
      }
   }
   ```

+ 再度[Grafana 監視](http://${LAB:HOST_MONITOR1_PUBLIC_IP}:3000)の `tidb-demo-PD` に戻り、10 秒待機します。`tidb-demo-PD` の `Operator` タブでは、`Scheduler operator create` パネルと `Scheduler operator finish` パネルの中で `balance-region-scheduler` の速度が下降し始めていることが確認できます。これは、TiKV のオペレーター実行効率が低下したためです。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/247a958930cd5b9cb9c197cd48a45d6609cc2c6b.png)

+ `tidb-demo-TiKV-Details` の `Cluster` タブでは、各 TiKV ノードの IO 使用率 `IO utilization` が下降し始めていることが確認できます。これは、新たに追加された TiKVノードとソースとして選ばれた TiKVノードがバランスに使用する IO リソースが少なくなっていることを示しており、これにより既存のビジネス負荷に対する影響を回避できる可能性がありますが、スケールアウト後のバランス速度は遅くなります。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/27fd326a8002e4739f98bbdba4e5a5c538fb5666.png)

+ さらに待機し、`tidb-demo-PD` の上半分を観察すると、`Online store progress` のパーセンテージ上昇速度が遅くなり、`Left time` の値が長くなり、`Current scaling speed` が下降し始めることが確認できます。これは、Store limit の減少がバランスの速度を遅くすることを示しています。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/2c3f49858b070480f48a2cab770bae758732cdc1.png)

### 手順 5. TiKV クラスターのスケールアウト後のバランスが完了するのをお待ちください

+ 引き続きお待ちいただき、`tidb-demo-PD` の上半分における `Online store progress`、`Left time`、および `Current scaling speed` の変化を観察します。`Online store progress` が `No data` になるまでお待ちください。これは、スケールアウトが正式に完了したことを示します。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/d744c40ef5e03fe774d2abb27ec1145153fd65ed.png)

+ また、`store limit` を大きな値（例えば `20`）に調整し、バランスの速度を向上させることも可能です。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/800a2d65b07bf6bb389bc4361446833640c98b22.png)

+ 最終的に、`Online store progress` が `No data` となると、スケールアウトが正式に完了したことを示します。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/60f7c026e5b42076f2d766b1f8a3656d55f476d5.png)

+ `tidb-demo-TiKV-Details` の `Cluster` タブで `IO utilization` パネルを見つけ、時間範囲を拡張してスケールアウトプロセス全体を表示すると、TiKV クラスターの負荷状況が `store limit` の値によって変化することがわかります。

  ![70%](https://lab-static.pingcap.com/images/2025/7/24/8420e7c08ed1d71db8bd7cd9475d4b1834da1474.png)
