TiDB Cloudのデモンストレーション動画をYoutubeに投稿しました

2024.02.05

こんにちは、ゲームソリューション部のsoraです。
今回は、TiDB Cloudのデモンストレーション動画をYoutubeに投稿したことについて書いていきます。
実際に投稿したデモ動画は以下です。

全体の流れ

デモンストレーションの全体の流れとしては、TiDB CloudでServerlessクラスタを作成して、EC2インスタンスからMySQL CLIで接続してSQLを実行しました。
また、TiDB Cloud上でChat2Queryを使用してSQLを実行したり、TiDB Cloudの各機能について、画面を見つつ説明をしています。

TiDB Cloud デモンストレーション

クラスタ作成

TiDBのアーキテクチャは以下で、クラスタはこの要素をまとめた単位です。
TiDB Architecture | PingCAP Archived Docs から引用

Serverlessであれば、TiDB・TiKV・TiFlashがそれぞれ何台なのかといったクラスタを構成する要素を設定する必要がなく、オートスケーリングされます。
設定項目について、Serverlessでは、Spending Limitにて1か月にクラスタが使用できる金額上限設定をすることができます。
無料枠内で使用したい場合は、$0.00に設定すると良いです。

Dedicatedであれば、TiDB・TiKV・TiFlashのそれぞれの台数を指定して、スケールする際も手動で指定する必要があります。

クラスタがAvailableになれば作成完了です。
Overviewにて、Request Unitsの秒ごとの消費や使用しているストレージサイズ、SQLクエリに関する情報を確認することができます。

クラスタへの接続

作成したクラスタへ接続するために、OverViewのConnectにて接続情報を表示します。
接続方式はパブリック接続、PrivateLink、(Dedicatedのみ)VPCピアリングでの接続が可能です。
Go、Rails、Python、Nodejsなどの言語やフレームワーク、MySQLやMariaDBなどのクライアントを指定することで、接続コマンドやコードが表示されます。
パスワードは、Generate Passwordから生成することができます。

EC2から接続してデータベースを確認してみると、デフォルトで存在するデータが確認できます。

$ {TiDB Cloud上で表示された接続コード(MySQL CLI)}

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| INFORMATION_SCHEMA |
| PERFORMANCE_SCHEMA |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.01 sec)

データインポート

データのインポートもTiDB CloudのGUI上で実行できます。
ソースとしてはローカルとS3を指定することができ、データフォーマットとしてはCSV・Parquet・Aurora Snapshot・SQL Fileが選択可能です。
ソースをS3にする場合は、アクセスするためのIAMロールかアクセスキーが必要です。
ローカルのCSVファイルでインポートしてみます。

SQL実行(CLI・Chat2Query)

インポートしたデータに対して、SQLを実行してデータの確認をします。
EC2から接続してデータを確認してみると、インポートしたデータが追加されていることが確認できます。

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| INFORMATION_SCHEMA |
| PERFORMANCE_SCHEMA |
| mysql              |
| prefectures        |
| test               |
+--------------------+
5 rows in set (0.01 sec)

mysql> USE prefectures;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>
mysql>
mysql> SHOW TABLES;
+-----------------------+
| Tables_in_prefectures |
+-----------------------+
| prefectures_table     |
+-----------------------+
1 row in set (0.01 sec)

mysql> SELECT * FROM prefectures_table;
+------------+---------------------+----------+
| prefecture | prefectural_capital | area     |
+------------+---------------------+----------+
| Aichi      | Nagoya              | Chubu    |
| Akita      | Akita               | Tohoku   |
| Aomori     | Aomori              | Tohoku   |
| Chiba      | Chiba               | Kanto    |
| Ehime      | Matsuyama           | Shikoku  |
| Fukui      | Fukui               | Chubu    |
| Fukuoka    | Fukuoka             | Kyushu   |
| Fukushima  | Fukushima           | Tohoku   |
| Gifu       | Gifu                | Chubu    |
| Gunma      | Maebashi            | Kanto    |
| Hiroshima  | Hiroshima           | Chugoku  |
| Hokkaido   | Sapporo             | Hokkaido |
| Hyogo      | Kobe                | Kinki    |
| Ibaraki    | Mito                | Kanto    |
| Ishikawa   | Kanazawa            | Chubu    |
| Iwate      | Morioka             | Tohoku   |
| Kagawa     | Takamatsu           | Shikoku  |
| Kagoshima  | Kagoshima           | Kyushu   |
| Kanagawa   | Yokohama            | Kanto    |
| Kochi      | Kochi               | Shikoku  |
| Kumamoto   | Kumamoto            | Kyushu   |
| Kyoto      | Kyoto               | Kinki    |
| Mie        | Tsu                 | Kinki    |
| Miyagi     | Sendai              | Tohoku   |
| Miyazaki   | Miyazaki            | Kyushu   |
| Nagano     | Nagano              | Chubu    |
| Nagasaki   | Nagasaki            | Kyushu   |
| Nara       | Nara                | Kinki    |
| Niigata    | Niigata             | Chubu    |
| Oita       | Oita                | Kyushu   |
| Okayama    | Okayama             | Chugoku  |
| Okinawa    | Naha                | Kyushu   |
| Osaka      | Osaka               | Kinki    |
| Saga       | Saga                | Kyushu   |
| Saitama    | Saitama             | Kanto    |
| Shiga      | Otsu                | Kinki    |
| Shimane    | Matsue              | Chugoku  |
| Shizuoka   | Shizuoka            | Chubu    |
| Tochigi    | Utsunomiya          | Kanto    |
| Tokushima  | Tokushima           | Shikoku  |
| Tokyo      | Tokyo               | Kanto    |
| Tottori    | Tottori             | Chugoku  |
| Toyama     | Toyama              | Chubu    |
| Wakayama   | Wakayama            | Kinki    |
| Yamagata   | Yamagata            | Tohoku   |
| Yamaguchi  | Yamaguchi           | Chugoku  |
| Yamanashi  | Kofu                | Chubu    |
+------------+---------------------+----------+
47 rows in set (0.00 sec)

エンジニアであれば、このデータの確認方法で良いのですが、SQLの知識がない場合はデータを確認するのも一苦労です。
TiDB CloudにはSQLをAIで自動生成するChat2Queryという機能にて、文章からSQLを自動生成することが可能です。
使用するデータベースを指定して、"--"の後に指示を入れることでSQLが提案されます。
日本語でも指示することが可能です。

メトリクス確認

各メトリクスもTiDB Cloud上で確認することができます。
Diagnosisでは、スロークエリの確認・レイテンシーや使用したRUなどの実行したSQLに関する詳細な情報を確認することができます。



Metricsでは、Overviewで表示されているメトリクスに加えて、いくつかのより詳細なメトリクスを確認することができます。


Eventsでは、クラスタ内で発生したイベントのログを確認することができます。

バックアップ・リストア

バックアップリストアもTiDB Cloud上で行うことができます。
Serverlessでは、デフォルトで毎日2時にバックアップを取得し、31日間を保持する設定となっています。
保持期間は7日から90日まで設定が可能です。
Serverlessでは手動バックアップはサポートされておらず自動バックアップのみ可能ですが、Dedicatedでは手動バックアップも取得することが可能です。
Serverlessではインプレースでのリストアのみ対応しており、現状のクラスタを上書きする形でリストアされます。
Serverlessではベータ版ではありますが、ポイントインタイムリカバリを使用して、過去90日以内の任意の時点の特定の状態にリストアすることも可能です。

ちなみに、Dedicatedでは削除されたクラスタのバックアップからのリストアも可能です。
削除されたクラスタのバックアップは、対象のプロジェクトのProject SettingsのRecycle Binで確認することができます。
自動バックアップについては、クラスタの削除日からデフォルト設定では1週間保持されます。

最後に

今回は、TiDB Cloudのデモンストレーション動画をYoutubeに投稿したことを記事にしました。
どなたかの参考になると幸いです。