※このブログは2020年4月29日に公開された英語ブログ「Get a TiDB Cluster Up in Only One Minute」の拙訳です。
著者: Heng Long (PingCAPのソフトウェアエンジニア)
トランスクリエーター: Caitin Chen; 編集者: Tom Dewan
TiDBは、ハイブリッドトランザクション/分析処理(HTAP)ワークロードに対応したオープンソースの分散型NewSQLデータベースです。さまざまな業界の1,000社近くの企業が実稼働環境でTiDBを利用しています。
しかし、TiDBのインストールは難しいとの声を一部のユーザーから聞きます。TiDBのテストクラスタをセットアップしようとしたものの、あまりにも複雑に見えるため、あきらめてしまった人もいるかもしれません。あるいは、TiDBを利用するのが初めてで、自社のアプリケーションを分散データ環境に適応させたいと考えているものの、実稼働クラスタをセットアップするだけのためにわざわざ時間をかけて分散型データベースのエキスパートになる余裕などないかもしれません。
このような状況はすべて過去のものになります。TiDB 4.0に、コンポーネントマネージャーであるTiUPが導入されました。これにより、簡単なコマンドをいくつか実行するだけで、TiDBクラスタを効率的にインストールおよび設置することができます。TiUPを利用すれば、クラスタをわずか1分で立ち上げることができます! ユーザーのニーズや経験度にかかわらず、最短の学習期間でクラスタを立ち上げ、短期間のうちに稼働させることができます。また、TiUPはTiDBのいわゆる「App Store」であり、ユーザーは、一元化されたインターフェースを通じてさまざまなTiDBツールを管理できます。
TiUPは、コマンドラインインターフェースを採用しているので、rustup、gcloud、UNIXをよく利用しているユーザーならば、違和感なくスムーズに利用できるでしょう。
TiUPが導入される前:習熟するのが大変
TiUPが導入される前は、TiDBクラスタのセットアップに習熟するのは骨の折れることでした。TiDBのクラスタは、TiDB、TiKV、Placement Driver(PD)のTiDBコアコンポーネントと、Prometheus、Grafana、Node Explorerの3つのモニタリングコンポーネントで構成されています。各コンポーネントについて、次の事項を理解しておく必要がありました。
- 起動パラメータ
- ポート構成
- 起動シーケンス
- インタラクティブポート構成
例えば、3つのPDインスタンス、3つのTiDBインスタンス、4つのTiKVインスタンスの合計10のインスタンスを持った、ローカルデバッグクラスタを作成するとします。この3つのPDインスタンスの起動パラメータは以下のようになります。
$ bin / pd-server --name = pd-0
--data-dir = data / Rt1J27k / pd-0 / data
--peer-urls = http: //127.0.0.1: 2380
--advertise-peer-urls = http: //127.0.0.1: 2380 --client-urls = http: //127.0.0.1: 2379 --advertise-client-urls = http: //127.0.0.1: 2379 --log-file = data / Rt1J27k / pd-0 / pd.log --initial-cluster = pd-0 = http: //127.0.0.1: 2380, pd-1 = http: //127.0.0.1: 2381, pd-2 = http: //127.0.0.1: 2383
$ bin / pd-server --name = pd-1
--data-dir = data / Rt1J27k / pd-1 / data
--peer-urls = http: //127.0.0.1: 2381 --advertise-peer-urls = http: //127.0.0.1:2381 --client-urls = http: //127.0.0.1: 2382 --advertise-client-urls = http: //127.0.0.1: 2382 --log-file = data / Rt1J27k / pd -1 / pd.log --initial-cluster = pd-0 = http: //127.0.0.1: 2380, pd-1 = http: //127.0.0.1: 2381, pd-2 = http: //127.0. 0.1: 2383
$ bin / pd-server --name = pd-2
--data-dir = data / Rt1J27k / pd-2 / data
--peer-urls = http: //127.0.0.1: 2383 --advertise- peer-urls = http: //127.0. 0.1: 2383 --client-urls = http: //127.0.0.1: 2384 --advertise-client-urls = http: //127.0.0.1: 2384 --log-file = data / Rt1J27k / pd-2 / pd .log --initial-cluster = pd-0
TiDBのエキスパートであっても、上記の複雑なコマンドを解読するのは容易ではありません。しかも、これらはまだPDインスタンス向けのみのコマンドです。TiDB、TiKV、モニタリングコンポーネント向けのコマンドにはまだ手を付けていません。
とりあえず、この最初の課題をクリアし、どうにかクラスタを構築できたとしましょう。すると今度は2番目の課題に直面します。いくつかのテストを行うため、データをクラスタに取り込むにはどうすればいいのでしょうか。それにはTiDB Data Migration(DM)コンポーネントが必要です。しかし、それらのツールはどこでダウンロードできるのでしょうか。どうやって使うのでしょうか。
次のように自問するようになります。「私は最新の分散型データを活用したいのだろうか、それとも分散型データベースのエキスパートになりたいのだろうか?」
TiUP:容易に習熟できるように
TiUPを使えば、クラスタを簡単にインストールし、設定することができます。TiUPは、以下の機能を備えています。
- TiDBエコシステムのすべてのコンポーネントを配信。TiDBのインストールに必要なものすべてを1つ場所で入手することができます。オンラインで「足りないピース」を探してダウンロードする必要はもうありません。
- 各コンポーネントを一貫性のあるユーザーエクスペリエンスに体系化。TiUPでは、1つの一連のシンプルなコマンドと、1つの基本構文を使用します。したがって、コンポーネントごとに一連のコマンドを学習する必要はありません。
まず、TiUPをインストールしましょう。TiUPのホームページに移動してください。2行のシェルスクリプトをご覧ください。
1行目は、TiUPをインストールするためのものです。
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
2行目は、シングルマシンクラスタを実行するためのものです。
tiup playground
前述したクラスタ(3つのPDインスタンス、3つのTiDBインスタンス、4つのTiKVインスタンス)をセットアップできるように、2行目のシェルスクリプトを変更してみましょう。どれほど簡単なのかがわかると思います。
- クラスタを起動します。
tiup playground --pd 3 --db 3 --kv 4
- クラスタの起動中に、モニタリングを設定します。
tiup playground --pd 3 --db 3 --kv 4 --monitor
- 実行したいTiDBクラスタバージョンを開始します。
tiup playground v3.0.10
- 最新の機能を得られるよう、TiUPが最新のリリースバージョン(v4.0.0-rc)を使用するように指定します。このコマンドによって、この一連の機能の名称を「example-features」と指定します。これで、この一連の機能をクライアントに割り当てる際、このタグを使用できます。
tiup --tag example-features playground v4.0.0-rc
- 先ほど開始したクラスタに接続します。以下のコマンドを実行し、クライアントをプレイグラウンドクラスタに接続します。
example-features
は、プレイグラウンドに付けたタグです。クライアントは、TiUPに対応するこのタグに自動的に接続されます。tiup client example-features
TiUPが持つ他の機能
TiUPの機能は、クラスタのインストールと設定だけではありません。以下の機能も備えています。
- コンポーネントのインストール、アップデート、アンインストール (
tiup install <component>
,tiup update <component>
,tiup uninstall <component>
) - TiUPのアンインストール、ならびにダウンロードされたすべてのコンポーネントやコンポーネントが実行されたときに生成されたデータの消去 (
tiup uninstall --self
) - コンポーネントリストの表示(
tiup list
) - 稼働しているコンポーネントのステータス表示 (
tiup status
) - アプリケーションが実行されたときに生成された一時データの削除 (
tiup clean
)
TiUPを使えば、多くのTiDBコンポーネントをインストールすることができます。さらに、TiUPは、「現状のまま」で利用できます。すぐにインストールでき、デーモンはありません。
大きな可能性を秘めた好スタートを切る
TiDBのエコロジーは、TiDB、TiKV、PDだけに留まりません。データの移行、モニタリング、同期、バックアップ、リストアを行うコンポーネントも提供しています。TiUPは、単なるコンポーネント管理ツールとして機能するだけではなく、エコシステムも形成しています。AppleのApp Storeを使ってアプリをインストールすることに慣れている人ならば、TiUPがTiDBのエクスペリエンスを改善する可能性があることを理解できるでしょう。
当社は、時間をかけてTiUPを強化し、多くの試行錯誤を経たツールをTiDBのエコシステムから取り入れ、これらのツールをさらに利用しやすくしていきます。これらのツールには以下のものが含まれます。
- TPC-Cパフォーマンスベンチマーキング(
tiup bench tpcc
) - TPC-Hパフォーマンスベンチマーキング (
tiup bench tpch
) - ワンストップの実稼働クラスタのメンテナンスとスケールインやスケールアウトのための統合型クラスタツール(
tiup cluster
)
当社は、TiUPプロジェクトをオープンソース化しました。TiDBのコミュニティと協力してこのエコシステムを改善し、さまざまなユースケースに対応できる新コンポーネントを開発していきたいと考えています。このコミュニティでは、自身の成果を共有したり、特定のシナリオに対応できるコンポーネントを記述することによって、同じニーズを持つユーザーを支援したりできます。SlackのTiDBコミュニティにぜひ参加していただき、ユーザーエクスペリエンスに関するアドバイスやフィードバックをご提供ください。
※App Storeは米国等の国で登録された、Apple Inc.の商標です。
TiDB Cloud Dedicated
TiDB Cloudのエンタープライズ版。
専用VPC上に構築された専有DBaaSでAWSとGoogle Cloudで利用可能。
TiDB Cloud Serverless
TiDB Cloudのライト版。
TiDBの機能をフルマネージド環境で使用でき無料かつお客様の裁量で利用開始。