## モジュール 5：TiDB Dedicated クラスタのスケールイン/アウトまたはスケールアップ/ダウン

+ このモジュールでは、TiDB Dedicated クラスタを簡単にスケールイン/アウトまたはスケールアップ/ダウンできることを紹介します。
+ また、TiProxy が有効な場合、アプリケーションに再接続ロジックがなくても、スケールイン中にアプリケーションが接続のダウンタイムを経験しないことを実演します。

### 手順 1. `Modify` パネルを確認

+ 右上角の `...` をクリックし、`Modify` をクリックします。

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

+ TiDB Dedicated クラスタのスケールイン/アウトまたはスケールアップ/ダウンのオプションを確認します。今はクラスタをスケールインしないでください。

### 手順 2. スキーマを準備

+ [Terminal 1](ssh://monitor1-ssh#1) に移動し、サンプルデータをインポートします。

  ```sql
  USE test
  CREATE TABLE `users` (
    `id` int,
    `name` varchar(100),
    `balance` int
  );
  INSERT INTO users VALUES (1, 'Alice', 10);
  INSERT INTO users VALUES (2, 'Bob', 20);
  ```

  ```sql
  exit
  ```

### 手順 3. コードを読む

+ `demo_tiproxy_no_reconn.py` では、5 つの接続が初期化されます。理論的には、TiProxy によって 3 つの TiDB サーバーノードにバランスされるはずです。
+ コード自体には接続切断を処理するロジックがありません。これは TiProxy なしでスケールインする際に発生する可能性があります。
+ ここでは TiProxy が使用されているため、プログラムを実行してもエラーメッセージが出力されることはありません。

### 手順 4. 接続情報を更新

+ `demo_tiproxy_no_reconn.py` で、接続情報を更新します

  ```output
  conn = connect(
    database="test",
    host="<host_address>",
    port=4000,
    user="root",
    password="<your password>",
    ssl_ca="/home/ubuntu/ca.pem",
    ssl_verify_cert=True,
    ssl_verify_identity=True,
  )
  ```

### 手順 5. パッケージをインストール

  ```bash
  sudo apt-get update
  sudo apt install python3.12-venv -y
  python3 -m venv myenv
  source myenv/bin/activate
  pip install --upgrade mysql-connector-python
  ```

  ```output
  ...
  Downloading mysql_connector_python-9.4.0-cp312-cp312-manylinux_2_28_x86_64.whl (33.9 MB)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 33.9/33.9 MB 69.8 MB/s eta 0:00:00
  Installing collected packages: mysql-connector-python
  Successfully installed mysql-connector-python-9.4.0
  ```

### 手順 6. `demo_tiproxy_no_reconn.py` を実行

  ```bash
  python3 demo_tiproxy_no_reconn.py
  ```

  ```output
  ...
  Thread 1: Committed. Alice balance updated to: 4
  Thread 4: Committed. Alice balance updated to: 5
  Thread 2: Committed. Alice balance updated to: 9
  Thread 5: Committed. Alice balance updated to: 6
  Thread 3: Committed. Alice balance updated to: 9
  Thread 1: Committed. Alice balance updated to: 10
  Thread 4: Committed. Alice balance updated to: 1
  Thread 2: Committed. Alice balance updated to: 3
  ...
  ```

### 手順 7. TiDB サーバーを 1 台スケールイン

+ TiDB Cloud Web UI に移動し、TiDB サーバーをスケールインします

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

+ スケールインは完了まで 5 分以上かかる場合があります。
+ スケールイン中は、ターミナル出力を観察してください。エラーメッセージが出力されることはないはずです。
+ 詳細については、こちらの演習を参照してください：[Database Scaling In and Scaling Out](/labs/demo_009)。

### 手順 8. ワークロードを停止

+ [Terminal 1](ssh://monitor1-ssh#1) で、`ctrl` + `c` を使用します。

### 手順 9. `TiDB Cloud Dedicated` クラスタを削除

+ `Overview` に移動し、`...` をクリックして、クラスタを削除します。

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