TiDB Cloud Dedicatedのスケールアップ、スケールアウトをやってみた

TiDB Cloud Dedicatedのスケールアップ、スケールアウトをやってみた

Clock Icon2024.12.17

ゲームソリューション部の えがわ です。

本記事は「ゲーソル・ギョーソル Advent Calendar 2024」の17日目のエントリとして、TiDB Cloud Dedicatedのスケールアップ、スケールアウトについて確認してみます。

環境

  • TiDB Cloud Dedicated: 8.1.1
  • Kong Insomnia(リクエスト定期実行用)

やってみる

スケールアップやスケールアウト時の挙動も確認するため、常にサンプルアプリケーションからリクエストを実行しておきます。
サンプルアプリケーション(TODOアプリ)をローカル環境で起動し、データベースをTiDB Cloud Dedicatedにしています。
APIクライアントツールとしてKong Insomniaを使用して、一定間隔でリクエストを行います。
※TODOを格納するテーブルのIDにはオートインクリメントが設定されています。

スケールの変更方法

変更方法は「・・・」を押下しModifyを選択します。

tidb_dedicated_scale_03.png

変更はGUIで変更することが可能です。

tidb_dedicated_scale_04.png

スケールアップ+アウト

各コンポーネントのスペックと数を変更します。

項目 変更前 変更後
TiDB 4vCPU 16GiB x 1 8vCPU 16GiB x 2
TiKV 4vCPU 16GiB x 3 8vCPU 32GiB x 3

変更途中ですが、一定間隔でリクエストしてみます。
左がTiDBのコンソール画面、中央右側がAPIクライアントツールの画面です。
tidb-dedicated-scaleup.gif

問題なくリクエストが行えており、IDが単調増加しているのがわかります。

さらに、TiDBノードが1台完了した状態で一定間隔でリクエストしてみます。

tidb-dedicated-scaleup2.gif

IDが30,000台になっています。

これはオートインクリメントの範囲をTiDBノードがキャッシュしているためです。
TiDBノードのスケールアウトに伴い0~30,000までの範囲が失われ、30,001~採番が始まっています。

TiDBのオートインクリメントに関しては以下をご確認ください。
https://docs.pingcap.com/ja/tidb/stable/auto-increment

TiDBノードの変更が完了した状態でも一定間隔でリクエストしてみます。

tidb-dedicated-scaleup3.gif

IDが30,000台、60,000台となっています。
これも上記と同様にTiDBノード毎にID範囲をキャッシュしているためです。

スケーリング時間

先ほど行ったスケールアップ+アウトの時間を計測してみます。

項目 変更前 変更後
TiDB 4vCPU 16GiB x 1 8vCPU 16GiB x 2
TiKV 4vCPU 16GiB x 3 8vCPU 32GiB x 3

tidb_dedicated_scale_01.png

17分ほどかかりました。

参考としてさらにスケールアウトしてみます。

項目 変更前 変更後
TiDB 8vCPU 16GiB x 2 8vCPU 16GiB x 3
TiKV 8vCPU 32GiB x 3 8vCPU 32GiB x 6

tidb_dedicated_scale_02.png
3分ほどで完了しました。
追加するノード数にもよりますが、スケールアウトだけであれば短時間で完了することが可能です。

さいごに

TiDB Dedicatedのスケールアップ、スケールアウトについて確認してみました。
各ノードのスペックを変更しても、ダウンタイムが発生しないため気軽に変更を行えます。
この記事がどなたかの参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.