## モジュール 6: TiProxy を使用する場合の SQL レイヤーのスケールイン

![tiproxy-manga-cut-01.jpg 60%](https://lab-static.pingcap.com/images/2025/10/24/6808da6deffd703dcfe0cbdeaca1ecbe27afc51a.jpg)

`sysbench` ワークロードが実行されている間に SQL レイヤーのスケールインを行います。

### 手順 1. TiProxy が稼働していることを確認

- クラスタの状態を再度確認し、TiProxy コンポーネントが稼働中で 6000 ポートをリッスンしていることを確認します。

  ```bash
  ~/.tiup/bin/tiup cluster display tidb-demo | grep -i tiproxy
  ```

  ```output
  10.90.4.55:6000    tiproxy    10.90.4.55   6000/3080    linux/x86_64  Up    -    /tidb-deploy/tiproxy-6000
  ```

- sysbench の設定ファイルを再度確認し、ワークロードが TiProxy（6000 ポート）経由で発行されることを確認します。

  ```bash
  cat ./sysbench_config | grep -A1 mysql-host
  ```

  ```output
  mysql-host=10.90.4.55
  mysql-port=6000
  ```

### 手順 2. テストワークロードを実行

+ [ターミナル 2](ssh://monitor1-ssh#2) に切り替え、再度 `sysbench` ワークロードを実行します。ワークロードの実行中に次のステップに進んでください。完了を待つ必要はありません。

   ```bash
   sysbench \
    --config-file=sysbench_config oltp_read_only \
    --tables=6 \
    --table-size=1000000 run
   ```

   ```output
   sysbench 1.0.17 (using bundled LuaJIT 2.1.0-beta2)

   Running the test with following options:
   Number of threads: 14
   Report intermediate results every 5 second(s)
   Initializing random number generator from current time

   Initializing worker threads...

   Threads started!
   ...
   ```

### 手順 3. クラスタから TiDB サーバーを 1 台削除

+ [ターミナル 1](ssh://monitor1-ssh#1) で、ランダムに 1 台の TiDB サーバーを削除し、SQL レイヤーのスケールインを行います。

   ```bash
   ~/.tiup/bin/tiup cluster scale-in tidb-demo --node ${LAB:HOST_DB2_PRIVATE_IP}:4000 -y
   ```

   ```output
   ...
   Scaled cluster `tidb-demo` in successfully
   ```

### 手順 4. TiDB クラスタの状態を確認

+ TiDB クラスタに `tidb` サーバーが 1 台だけ残っていることを確認し、SQL レイヤーが 2 台から 1 台にスケールインされたことを検証します。

   ```bash
   ~/.tiup/bin/tiup cluster display tidb-demo
   ```

   ```output
   Cluster type:       tidb
   Cluster name:       tidb-demo
   Cluster version:    v${LAB:TIDB_VERSION}
   Deploy user:        ec2-user
   SSH type:           builtin
   Dashboard URL:      http://54.185.182.184:2379/dashboard
   Grafana URL:        http://10.90.4.216:3000
   ID                 Role          Host         Ports        OS/Arch       Status  Data Dir                      Deploy Dir
   --                 ----          ----         -----        -------       ------  --------                      ----------
   10.90.4.216:9093   alertmanager  10.90.4.216  9093/9094    linux/x86_64  Up      /tidb-data/alertmanager-9093  /tidb-deploy/alertmanager-9093
   10.90.4.216:3000   grafana       10.90.4.216  3000         linux/x86_64  Up      -                             /tidb-deploy/grafana-3000
   10.90.3.191:2379   pd            10.90.3.191  2379/2380    linux/x86_64  Up|L    /tidb-data/pd-2379            /tidb-deploy/pd-2379
   10.90.4.216:9090   prometheus    10.90.4.216  9090/12020   linux/x86_64  Up      /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090
   10.90.1.16:4000    tidb          10.90.1.16   4000/10080   linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
   10.90.3.112:20160  tikv          10.90.3.112  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
   10.90.3.213:20160  tikv          10.90.3.213  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
   10.90.3.40:20160   tikv          10.90.3.40   20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
   10.90.4.216:6000   tiproxy       10.90.4.216  6000/3080    linux/x86_64  Up      -                             /tidb-deploy/tiproxy-6000
   Total nodes: 10
   ```

### 手順 5. SQL レイヤーのスケールインがワークロードに影響しないことを確認

- [ターミナル 2](ssh://monitor1-ssh#2) に切り替え、スケールイン操作によってワークロードが中断されていないことを観察・確認します。

### まとめ

TiProxy のセッション管理機能のおかげで、TiDB インスタンスのスケールインやシャットダウン前に、TiProxy は接続を他の稼働中の TiDB インスタンスへオンラインで移行します。そのため、すべてのワークロード接続は中断されません。
