TiUPを使用して TiDBクラスタをデプロイ
このガイドでは、 TiUPを使用して TiDB セルフマネージド クラスターを本番環境にデプロイする方法について説明します。
TiUPは、TiDB v4.0で導入されたクラスタ運用・保守ツールです。TiDBクラスタを管理するためのGo言語ベースのコンポーネントTiUPクラスターを提供します。TiUPクラスタを使用することで、 TiUPクラスタのデプロイ、起動、停止、破棄、スケーリング、アップグレード、TiDBクラスタパラメータの管理といった日常的なデータベース操作を簡単に実行できます。
TiUPは、TiDB、 TiFlash、TiCDC、および監視システムの導入もサポートしています。このガイドでは、さまざまなトポロジでTiDBクラスターを導入する方法を紹介します。
ステップ1. 前提条件と事前チェック
以下の文書を必ず読んでください。
さらに、 TiDBSecurityコンフィグレーションのベストプラクティス学習することをお勧めします。
ステップ2. 制御マシンにTiUPをデプロイ
TiUP をコントロール マシンに展開するには、オンライン展開とオフライン展開の 2 つの方法があります。
TiUPをオンラインでデプロイ
注記:
TiUP環境がオフラインになった場合は、デプロイメントのTiUPをオフラインでデプロイ参照してください。そうでない場合、 TiUPは正常に動作しません。
通常のユーザーアカウント(例:ユーザーtidb )を使用して制御マシンにログインします。その後のTiUPのインストールとクラスタ管理は、ユーザーtidbで実行できます。
次のコマンドを実行してTiUPをインストールします。
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | shTiUP環境変数を設定します。
グローバル環境変数を再宣言します。
source .bash_profileTiUPがインストールされているかどうかを確認します。
which tiup
TiUPクラスターコンポーネントをインストールします。
tiup clusterTiUPがすでにインストールされている場合は、 TiUPクラスターコンポーネントを最新バージョンに更新します。
tiup update --self && tiup update clusterUpdated successfully!表示されている場合、 TiUPクラスターは正常に更新されています。TiUPクラスターの現在のバージョンを確認します。
tiup --binary cluster
TiUPをオフラインでデプロイ
TiUPを使用して TiDB クラスターをオフラインでデプロイするには、このセクションで次の手順を実行します。
TiUPオフラインコンポーネントパッケージを準備する
方法1 :以下のリンクから、対象のTiDBバージョンのオフラインバイナリパッケージ(TiUPオフラインパッケージを含む)をダウンロードします。サーバーとツールキットパッケージの両方をダウンロードする必要があります。ダウンロードすることにより、 プライバシーポリシーに同意したものとみなされますのでご注意ください。
https://download.pingcap.org/tidb-community-server-{version}-linux-{arch}.tar.gz
https://download.pingcap.org/tidb-community-toolkit-{version}-linux-{arch}.tar.gz
ヒント:
リンク内の
{version}はTiDBのバージョン番号を示し、{arch}システムのアーキテクチャamd64またはarm64を示します。例えば、amd64アーキテクチャのv8.5.3のダウンロードリンクはhttps://download.pingcap.org/tidb-community-toolkit-v8.5.3-linux-amd64.tar.gzです。
方法2 : tiup mirror cloneを使用してオフラインコンポーネントパッケージを手動でパックします。詳細な手順は次のとおりです。
TiUPパッケージ マネージャーをオンラインでインストールします。
TiUPツールをインストールします。
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | shグローバル環境変数を再宣言します。
source .bash_profileTiUPがインストールされているかどうかを確認します。
which tiup
TiUPを使ってミラーを引きます。
インターネットにアクセスできるマシンで必要なコンポーネントを取得します。
tiup mirror clone tidb-community-server-${version}-linux-amd64 ${version} --os=linux --arch=amd64上記のコマンドは、現在のディレクトリに
tidb-community-server-${version}-linux-amd64名前のディレクトリを作成します。このディレクトリには、クラスターの起動に必要なコンポーネントパッケージが含まれます。tarコマンドを使用してコンポーネントパッケージをパックし、そのパッケージを分離された環境内の制御マシンに送信します。tar czvf tidb-community-server-${version}-linux-amd64.tar.gz tidb-community-server-${version}-linux-amd64tidb-community-server-${version}-linux-amd64.tar.gzは独立したオフライン環境パッケージです。
オフライン ミラーをカスタマイズするか、既存のオフライン ミラーの内容を調整します。
既存のオフライン ミラーを調整する場合 (コンポーネントの新しいバージョンを追加するなど)、次の手順を実行します。
オフラインミラーをプルする際に、コンポーネントやバージョン情報などのパラメータで特定の情報を指定することで、不完全なオフラインミラーを取得できます。例えば、 TiUP v1.12.3とTiUP クラスタ v1.12.3のオフラインミラーのみを含むオフラインミラーをプルするには、以下のコマンドを実行します。
tiup mirror clone tiup-custom-mirror-v1.12.3 --tiup v1.12.3 --cluster v1.12.3特定のプラットフォームのコンポーネントのみが必要な場合は、
--osまたは--archパラメータを使用して指定できます。「 TiUPを使用してミラーをプルする」の手順 2 を参照して、この不完全なオフライン ミラーを分離された環境内の制御マシンに送信します。
隔離環境内のコントロールマシン上の現在のオフラインミラーのパスを確認します。TiUPTiUPが最新バージョンの場合は、次のコマンドを実行して現在のミラーアドレスを取得できます。
tiup mirror show上記コマンドの出力で
showコマンドが存在しないと表示される場合は、古いバージョンのTiUPを使用している可能性があります。その場合は、$HOME/.tiup/tiup.tomlから現在のミラーアドレスを取得できます。このミラーアドレスを記録してください。以降の手順では、${base_mirror}このアドレスを参照するために使用されます。不完全なオフライン ミラーを既存のオフライン ミラーにマージします。
まず、現在のオフライン ミラー内の
keysディレクトリを$HOME/.tiupディレクトリにコピーします。cp -r ${base_mirror}/keys $HOME/.tiup/次に、 TiUPコマンドを使用して、不完全なオフライン ミラーを使用中のミラーにマージします。
tiup mirror merge tiup-custom-mirror-v1.12.3上記の手順が完了したら、コマンド
tiup listを実行して結果を確認します。このドキュメントの例では、コマンドtiup list tiupとtiup list clusterの両方の出力から、コマンドv1.12.3の対応するコンポーネントが利用可能であることが分かります。
オフラインTiUPコンポーネントをデプロイ
パッケージをターゲット クラスターの制御マシンに送信した後、次のコマンドを実行してTiUPコンポーネントをインストールします。
tar xzvf tidb-community-server-${version}-linux-amd64.tar.gz && \
sh tidb-community-server-${version}-linux-amd64/local_install.sh && \
source /home/tidb/.bash_profile
local_install.shスクリプトは自動的にtiup mirror set tidb-community-server-${version}-linux-amd64コマンドを実行し、現在のミラー アドレスをtidb-community-server-${version}-linux-amd64に設定します。
オフラインパッケージをマージする
ダウンロードリンク経由でオフラインパッケージをダウンロードする場合は、サーバーパッケージとツールキットパッケージをオフラインミラーにマージする必要がありますtiup mirror cloneコマンドを使用してオフラインコンポーネントパッケージを手動でパッケージ化する場合は、この手順を省略できます。
オフライン ツールキット パッケージをサーバーパッケージ ディレクトリにマージするには、次のコマンドを実行します。
tar xf tidb-community-toolkit-${version}-linux-amd64.tar.gz
ls -ld tidb-community-server-${version}-linux-amd64 tidb-community-toolkit-${version}-linux-amd64
cd tidb-community-server-${version}-linux-amd64/
cp -rp keys ~/.tiup/
tiup mirror merge ../tidb-community-toolkit-${version}-linux-amd64
ミラーを別のディレクトリに切り替えるには、 tiup mirror set <mirror-dir>コマンドを実行します。ミラーをオンライン環境に切り替えるには、 tiup mirror set https://tiup-mirrors.pingcap.comコマンドを実行します。
ステップ3. クラスタトポロジファイルを初期化する
次のコマンドを実行して、クラスター トポロジ ファイルを作成します。
tiup cluster template > topology.yaml
次の 2 つの一般的なシナリオでは、コマンドを実行して推奨されるトポロジ テンプレートを生成できます。
ハイブリッド展開の場合:複数のインスタンスが1台のマシンに展開されます。詳細については、 ハイブリッド展開トポロジ参照してください。
tiup cluster template --full > topology.yaml地理的に分散したデプロイメントの場合:TiDB クラスターは地理的に分散したデータセンターにデプロイされます。詳細については、 地理的に分散した展開トポロジ参照してください。
tiup cluster template --multi-dc > topology.yaml
vi topology.yaml実行して、構成ファイルの内容を確認します。
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb-deploy"
data_dir: "/tidb-data"
server_configs: {}
pd_servers:
- host: 10.0.1.4
- host: 10.0.1.5
- host: 10.0.1.6
tidb_servers:
- host: 10.0.1.7
- host: 10.0.1.8
- host: 10.0.1.9
tikv_servers:
- host: 10.0.1.1
- host: 10.0.1.2
- host: 10.0.1.3
monitoring_servers:
- host: 10.0.1.4
grafana_servers:
- host: 10.0.1.4
alertmanager_servers:
- host: 10.0.1.4
以下の例は、6つの一般的なシナリオを網羅しています。トポロジの説明と、対応するリンクにあるテンプレートに従って、設定ファイル(名前はtopology.yaml )を変更する必要があります。その他のシナリオについては、設定テンプレートを適宜編集してください。
| 応用 | コンフィグレーションタスク | コンフィグレーションファイルテンプレート | トポロジの説明 |
|---|---|---|---|
| OLTP | 最小限のトポロジをデプロイ | シンプルで最小限の構成テンプレート 完全な最小限の構成テンプレート | これは、tidb-server、tikv-server、pd-server を含む基本的なクラスター トポロジです。 |
| HTAP | TiFlashトポロジをデプロイ | シンプルなTiFlash構成テンプレート 完全なTiFlash構成テンプレート | これは、最小限のクラスタートポロジーに沿ってTiFlashを導入するものです。TiFlashは列指向のstorageエンジンであり、徐々に標準的なクラスタートポロジーになりつつあります。 |
| TiCDC使用して増分データを複製 | TiCDCトポロジをデプロイ | シンプルな TiCDC 構成テンプレート 完全な TiCDC 構成テンプレート | これは、最小限のクラスタトポロジに沿ってTiCDCをデプロイするためのものです。TiCDCは、TiDB、MySQL、Kafka、MQ、storageサービスなど、複数のダウンストリームプラットフォームをサポートしています。 |
| SparkでOLAPを使用する | TiSparkトポロジーをデプロイ | シンプルなTiSpark構成テンプレート 完全なTiSpark構成テンプレート | これは、最小限のクラスタトポロジーとともにTiSparkをデプロイするためのものです。TiSparkは、TiDB/TiKV上でApache Sparkを実行し、OLAPクエリに応答するために構築されたコンポーネントです。現在、 TiUPクラスタによるTiSparkのサポートは実験的段階です。 |
| 1台のマシンに複数のインスタンスをデプロイ | ハイブリッドトポロジをデプロイ | ハイブリッド展開用のシンプルな構成テンプレート ハイブリッド展開用の完全な構成テンプレート | デプロイメント トポロジは、ディレクトリ、ポート、リソース比率、およびラベルの追加構成を追加する必要がある場合にも適用されます。 |
| データセンター全体にTiDBクラスタをデプロイ | 地理的に分散した展開トポロジをデプロイ | 地理的に分散した展開用のコンフィグレーションテンプレート | このトポロジーでは、2つの都市に3つのデータセンターを配置するという典型的なアーキテクチャを例に挙げ、地理的に分散したデプロイメントアーキテクチャと、注意が必要な主要な構成について説明します。 |
注記:
- グローバルに有効にする必要があるパラメータについては、構成ファイルの
server_configsセクションで対応するコンポーネントのこれらのパラメータを構成します。- 特定のノードで有効にするパラメータについては、このノードの
configでこれらのパラメータを設定します。.構成のサブカテゴリ(例:log.slow-thresholdを示します。その他の形式については、 TiUP構成テンプレート参照してください。- ターゲットマシンに作成するユーザーグループ名を指定する必要がある場合は、 この例参照してください。
詳細な構成の説明については、次の構成例を参照してください。
ステップ4. デプロイメントコマンドを実行する
注記:
TiUP (
--userで指定) 経由でクラスターをデプロイするときに、キーまたはクロスパスワードを使用して初期化に使用するユーザーを安全に認証できます。
- 秘密鍵を使用する場合は、
-iまたは--identity_fileを通じて鍵のパスを指定します。- パスワードを使用する場合は、パスワード対話ウィンドウに入るために
-pフラグを追加します。- ターゲット マシンへのパスワードなしのログインが構成されている場合、認証は必要ありません。
通常、 TiUPが実際にプロセスを実行するために使用するユーザーとグループ (
topology.yamlで指定され、デフォルト値はtidb) は、次の例外を除き、ターゲット マシン上に自動的に作成されます。
topology.yamlで設定されたユーザー名は、ターゲット マシンに既に存在します。- コマンドラインで
--skip-create-userオプションを使用して、ユーザーの作成手順を明示的にスキップしました。
topology.yamlで合意したユーザーとグループが自動的に作成されるかどうかに関わらず、 TiUPは各マシン上でSSHキーのペアを自動的に生成し、そのユーザーに対してシークレットフリーのログインを設定します。このユーザーとSSHキーは、以降のすべての操作においてマシンを管理するために使用されます。一方、初期化に使用されたユーザー名とパスワードは、デプロイメント完了後は使用されません。
deployコマンドを実行する前に、 checkコマンドとcheck --applyコマンドを使用して、クラスター内の潜在的なリスクを検出し、自動的に修復します。
潜在的なリスクを確認します。
tiup cluster check ./topology.yaml --user root [-p] [-i /home/root/.ssh/gcp_rsa]自動修復を有効にする:
tiup cluster check ./topology.yaml --apply --user root [-p] [-i /home/root/.ssh/gcp_rsa]TiDB クラスターをデプロイ。
tiup cluster deploy tidb-test v8.5.3 ./topology.yaml --user root [-p] [-i /home/root/.ssh/gcp_rsa]
上記のコマンドtiup cluster deployでは、次のようになります。
tidb-testは、デプロイする TiDB クラスターの名前です。v8.5.3はデプロイする TiDB クラスタのバージョンです。2tiup list tidb実行すると、サポートされている最新バージョンを確認できます。topology.yamlは初期化構成ファイルです。--user root、クラスタのデプロイメントを完了するために、rootユーザーとしてターゲットマシンにログインすることを示します。4rootユーザーは、ターゲットマシンに対してsshとsudo権限を持つ必要があります。または、sshとsudo権限を持つ他のユーザーを使用してデプロイメントを完了することもできます。[-i]と[-p]オプションです。ターゲットマシンへのログインをパスワードなしで設定している場合、これらのパラメータは不要です。そうでない場合は、2つのパラメータのいずれかを選択してください。4[-i]、ターゲットマシンにアクセスできるルートユーザー(または--userで指定された他のユーザー)の秘密鍵です。8[-p]、ユーザーパスワードを対話的に入力するために使用されます。
出力ログの最後にDeployed cluster `tidb-test` successfully表示されます。これは、デプロイメントが成功したことを示します。
ステップ5. TiUPによって管理されているクラスターを確認する
tiup cluster list
TiUP は複数の TiDB クラスタの管理をサポートしています。上記のコマンドは、クラスタ名、デプロイメントユーザー、バージョン、秘密鍵情報など、現在TiUPによって管理されているすべてのクラスタの情報を出力します。
ステップ6. デプロイされたTiDBクラスタのステータスを確認する
たとえば、 tidb-testクラスターのステータスを確認するには、次のコマンドを実行します。
tiup cluster display tidb-test
予想される出力にはinactiveインスタンス ID、ロール、ホスト、リスニング ポート、ステータス (クラスターはまだ起動されていないため、ステータスはDownです)、およびディレクトリ情報が含まれます。
ステップ7. TiDBクラスターを起動する
TiUPクラスタv1.9.0以降、新しい起動方法としてセーフスタートが導入されました。この方法でデータベースを起動すると、データベースのセキュリティが向上します。この方法を使用することをお勧めします。
安全に起動すると、 TiUP はTiDB ルート ユーザーのパスワードを自動的に生成し、コマンド ライン インターフェイスでパスワードを返します。
注記:
- TiDBクラスタを安全に起動した後は、パスワードなしでrootユーザーを使用してTiDBにログインすることはできません。そのため、今後のログインのために、コマンド出力で返されたパスワードを記録しておく必要があります。
- パスワードは一度だけ生成されます。記録していない場合、または忘れた場合は、
rootパスワードを忘れたを参照してパスワードを変更してください。
方法1:安全なスタート
tiup cluster start tidb-test --init
出力が次のようであれば、起動は成功です。
Started cluster `tidb-test` successfully.
The root password of TiDB database has been changed.
The new password is: 'y_+3Hwp=*AWz8971s6'.
Copy and record it to somewhere safe, it is only displayed once, and will not be stored.
The generated password can NOT be got again in future.
方法2: 標準スタート
tiup cluster start tidb-test
出力ログにStarted cluster `tidb-test` successfullyが含まれていれば、起動は成功です。標準起動後、パスワードなしでrootユーザーを使用してデータベースにログインできます。
ステップ8. TiDBクラスタの実行状態を確認する
tiup cluster display tidb-test
出力ログにステータスUp表示されている場合、クラスターは正常に実行されています。
参照
TiDB クラスターとともにTiFlashデプロイした場合は、次のドキュメントを参照してください。
TiDB クラスターとともにTiCDCデプロイした場合は、データのストリーミングについては次のドキュメントを参照してください。
オンライン サービスを中断せずに TiDB クラスターをスケール アウトまたはスケール インする場合は、 TiUPを使用して TiDBクラスタをスケールする参照してください。