はじめに
本記事は Open Source Conference 2025 Day2(2025/2/22)において PingCAP株式会社 Executive Technical Advisor 長谷川誠氏 が講演された「”TiDB” をKubernetesで動かしてみよう!2025年最新版」のレポートです。
公式セッション紹介
TiDBは水平方向のスケーラビリティと強力な一貫性、そしてMySQLとの互換性による高い可用性を備えた、クラウドネイティブ思考で設計されたOSSの分散型SQLデータベースプラットフォームです。
Kubernetesとの相性も大変良く、運用者はコストをかけずに構築・運用することが可能です。
本セッションではTiDB Operatorを使用してTiDBをKubernetes上に展開する方法や運用する際のポイントをご紹介いたします。
(引用:「TiDB」をKubernetesで動かしてみよう! 2025年最新版)
発表資料
※2025/2/23時点では未公開
概要/おすすめポイント
TiDBのメリット・デメリットやk8s上で利用するためのTIPSがちりばめられていたので、最近流行のTiDBに興味がある方や k8s 上でデータベースを動かすことに興味ある方は確認されてみてはと思いました。
セッション内容の紹介
PingCAP社の紹介
TiDBの開発元。
TiDBで利用している TiKV、Chaos Mesh を オープンソースとしてCNCFへ寄贈。
2021年4月に 日本法人が設立されている。
TiDBの紹介
TiDBはHTAPをサポートするオープンソースのNewSQLで、MySQLとの互換性がある。
次の三つの形態で利用が可能。
- TiDB Cloud(フルマネージド)
- 一部無償での利用も可能
- TiDB Self Managed(自己管理)
- k8s上での利用もサポートされる
- TiDB Community(コミュニティ版、無償)
- サポートはない
TiDBの特徴
- Horizontal Scalability(水平拡張)
- SQL処理部分とストレージの分離がなされているためそれぞれで水平拡張が可能
- 無停止での水平拡張が可能
- https://docs.pingcap.com/ja/tidb/stable/tidb-architecture
- MySQL Compatible Syntax(MySQL 互換)
- MySQL 5.7、8.0と互換(8.4は未)
- 既存のMySQLクライアント・ライブラリはそのまま利用可能
- 完全互換ではない(https://docs.pingcap.com/ja/tidb/stable/mysql-compatibility)
- Distributed Transactions(分散トランザクション)
- Cloud Native(クラウドネイティブ志向)
- 複数のコンポーネントからできており、それぞれが独立しているためクラウド環境、k8sと親和性が高い
- Minimize ETL(OLTP と OLAPのサポート)
- TiFlashというコンポーネントを動かすことで分析が可能、分析用のデータベースにデータを移す必要がない
- High Availability(高可用性)
- コンポーネントはそれぞれ冗長化が可能
- 自動的に負荷分散が行われる
TiDBの苦手な点
- データが分散配置されているためネットワークレイテンシがかかる(環境にもよるが数msecは難しい)
- キャッシュを利用するなど、システムとして対策
- データが3重化されているためストレージコストがかかる
- ストアドプロシージャやトリガー、UDFには未対応
TiDBの運用管理
- TiUPという構築・運用管理ツールがある(https://github.com/pingcap/tiup)
- yamlを読み込ませることで自動構築が可能
- ssh での接続が必要になる
- TiUPではベンチマークやデモデータの登録が可能
- yamlを読み込ませることで自動構築が可能
TiUPは仮想・物理サーバにのみ対応、k8sには未対応となる。
k8sでのTiDB
TiDB Operatorを利用することで k8s 上での管理が可能、TiDB Operator は k8s 上で動くコントローラー、次のコマンドのように kubectl にyaml(k8sのカスタムリソースTidbClusterで定義)を読み込ませることでTiUPと同じような構築が可能に。
$ kubectl apply -f tidb_cluster.yaml
TiDB Operatorの利用TIPS
- 各コンポートネントがバラけるようにAffinity/AntiAffinityの適切な設定が必要
- 設定が複雑なので tidb-scheduler を利用することで自動的に設定が可能
- クラウドのゾーン分散などもtidb-schedulerで定義が可能
- Advanced StatefulSetを利用することで欠番などを利用した分散が可能に
- 別途インストールが必要
- バックアップ・リカバリもOperatorの設定で実施が可能
- クラウドのオブジェクトストレージなどもバックアップ先として指定が可能
セッションまとめ
- TiDBはHTAPワークロードをサポートするオープンソースのNewSQLデータベース
- MySQLとの互換性、水平方向のスケーラビリティ、強力な一貫性、および高可用性を持っている
TiDB Monitorを利用することで個別にPrometheusやGrafanaを設定することなくダッシュボードの確認が可能となる。
まとめ・感想
TiDB自体はだいぶ紹介事例も積み重ねられてきており、先日のデブサミでも mixi2 の事例 が、昨年のGoogle Cloud Nextでは menu の事例 が紹介されていました。
今回は事例紹介ではなく、基本的な話から k8s での運用・構築に向けての話でしたので、利用に向けて最初に確認しておくような形でも良いかもしれません。
2025/3(?)にTiDBの運用管理本が出るみたいなので、興味ある方は是非チェックしてみましょう!