TiUPを使用してTiDBクラスタをデプロイする

実際の運用環境で利用するインストール方法である。

TiUPは、TiDB 4.0で導入されたクラスタ運用保守ツールである。TiUPは、Golangで書かれたクラスタ管理コンポーネントであるTiUP Clusterを提供する。TiUP Clusterを使用すると、TiDBクラスタのデプロイ、開始、停止、削除、スケーリング、アップグレードを含む日常的なデータベース作業を簡単に実行し、TiDBクラスタのパラメータを管理できる。

TiUPはTiDB、TiFlash、TiDB Binlog、TiCDC、監視システムのデプロイをサポートする。この文書では、さまざまなトポロジのTiDBクラスタをデプロイする方法を紹介する。

Step 1. 前提条件と事前確認

次の文書を確認してほしい。

Step 2. 制御システムにTiUPをデプロイする

オンラインデプロイまたはオフラインデプロイのいずれかの方法で、制御システムにTiUPをデプロイできる。

TiUPツールのインストール

1. TiUPツールをインストールする

まず、オンライン環境で次のコマンドを実行し、TiUPをインストールする。

curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
% curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
100 6988k  100 6988k    0     0  3433k      0  0:00:02  0:00:02 --:--:-- 3442k
WARN: adding root certificate via internet: https://tiup-mirrors.pingcap.com/root.json
You can revoke this by remove /Users/user/.tiup/bin/7b8e153f2e2d0928.root.json
Successfully set mirror to https://tiup-mirrors.pingcap.com
Detected shell: zsh
Shell profile:  /Users/user/.zshrc
/Users/user/.zshrc has been modified to add tiup to PATH
open a new terminal or source /Users/user/.zshrc to use it
Installed path: /Users/user/.tiup/bin/tiup
===============================================
Have a try:     tiup playground
===============================================

2. グローバル環境変数を再宣言する

source .bash_profile
% source .bash_profile

3. TiUPがインストールされているか確認する

which tiup
% which tiup
/Users/user/.tiup/bin/tiup

TiUPオンラインクラスタデプロイ

1. TiUP Clusterコンポーネントをインストールする

tiup cluster
% tiup cluster
tiup is checking updates for component cluster ...timeout!
The component `cluster` version  is not installed; downloading from repository.
download https://tiup-mirrors.pingcap.com/cluster-v1.11.0-darwin-arm64.tar.gz 8.31 MiB / 8.31 MiB 100.00% 6.73 MiB/s
Starting component `cluster`: /Users/user/.tiup/components/cluster/v1.11.0/tiup-cluster
Deploy a TiDB cluster for production

Usage:
tiup cluster [command]

Available Commands:
check       Perform preflight checks for the cluster.
deploy      Deploy a cluster for production
start       Start a TiDB cluster
stop        Stop a TiDB cluster
restart     Restart a TiDB cluster

... 中略 ...

Use "tiup cluster help [command]" for more information about a command.

初回実行時はサーバーからダウンロードされることを確認できる。

2. TiUP Clusterがすでにインストールされている場合、次のTiUPコマンドでコンポーネントを最新バージョンへ更新する

tiup update --self && tiup update cluster
% tiup update --self && tiup update cluster
download https://tiup-mirrors.pingcap.com/tiup-v1.11.0-darwin-arm64.tar.gz 6.82 MiB / 6.82 MiB 100.00% 2.76 MiB/s
Updated successfully!
component cluster version v1.11.0 is already installed
Updated successfully!

上のように「Updated successfully!」と表示されれば、TiUP Clusterは正常に更新されている。

3. TiUP Clusterの現在バージョンを確認する

tiup --binary cluster
% tiup --binary cluster
/Users/user/.tiup/components/cluster/v1.11.0/tiup-cluster

TiUPオフラインクラスタデプロイ

TiUPを使用してオフライン環境でTiDBクラスタをデプロイするには、次のように実行する。

1. TiUPオフラインコンポーネントパッケージを準備する

TiUPオフラインコンポーネントパッケージを準備するには、tiup mirror cloneを使用してオフラインコンポーネントパッケージを取得できる。

1-1. TiUPを使用してmirrorを取得する

インターネットにアクセスできるシステムで必要なコンポーネントを取得する。

tiup mirror clone tidb-community-server-${version}-linux-amd64 ${version} --os=linux --arch=amd64

実際に実行すると、次のように進む。

% tiup mirror clone tidb-community-server-v1.11.0-linux-amd64 v1.11.0 --os=linux --arch=amd64
Start to clone mirror, targetDir is tidb-community-server-v1.11.0-linux-amd64, source mirror is https://tiup-mirrors.pingcap.com, selectedVersions are [v1.11.0]
If this does not meet expectations, please abort this process, read `tiup mirror clone --help` and run again
Arch [amd64]
OS [linux]
PCC linux/amd64 v1.11.0 not found, using 1.0.1 instead.
alertmanager linux/amd64 v1.11.0 not found, using v0.17.0 instead.
blackbox_exporter linux/amd64 v1.11.0 not found, using v0.21.1 instead.
br linux/amd64 v1.11.0 not found, using v6.3.0 instead.

... 中略 ...

download https://tiup-mirrors.pingcap.com/tispark-v2.4.1-any-any.tar.gz 22.36 MiB / 22.36 MiB 100.00% 8.30 MiB/s
download https://tiup-mirrors.pingcap.com/tiup-v1.11.0-linux-amd64.tar.gz 6.92 MiB / 6.92 MiB 100.00% 5.94 MiB/s
download https://tiup-mirrors.pingcap.com/tiup-linux-amd64.tar.gz 6.92 MiB / 6.92 MiB 100.00% 5.84 MiB/s

上のコマンドは、現在ディレクトリにtidb-community-server-${version}-linux-amd64というディレクトリを作成する。このディレクトリには、クラスタを起動するために必要なコンポーネントパッケージが含まれている。

1-2. tarコマンドを使用してコンポーネントパッケージを圧縮し、隔離環境の制御コンピュータへ転送する
tar czvf tidb-community-server-${version}-linux-amd64.tar.gz tidb-community-server-${version}-linux-amd64
% tar czvf tidb-community-server-v1.11.0-linux-amd64.tar.gz tidb-community-server-v1.11.0-linux-amd64

圧縮で作成されたtidb-community-server-${version}-linux-amd64.tar.gzファイルは、独立したオフライン環境パッケージである。

1-3. オフラインミラーをカスタマイズする、または既存オフラインミラーの内容を調整する

既存オフラインミラーを調整するには、たとえばコンポーネントの新バージョンを追加するには、次の手順を実行する。

オフラインミラーを取得するとき、コンポーネントやバージョン情報などのパラメータで特定情報を指定し、不完全なオフラインミラーを取得できる。
たとえば、次のコマンドを実行して、TiUP v1.10.0とTiUP Cluster v1.10.0だけを含むオフラインミラーを取得できる。

tiup mirror clone tiup-custom-mirror-v1.10.0 --tiup v1.10.0 --cluster v1.10.0

特定プラットフォーム向けのコンポーネントだけが必要な場合は、--osまたは--archパラメータで指定できる。

前述の「1-2」を参照し、この未完成のオフラインミラーを隔離環境の制御システムへ転送する。

隔離環境で、制御システムの現在のオフラインミラーパスを確認する。TiUPツールが新しいバージョンの場合、次のコマンドで現在のミラーアドレスを取得できる。

tiup mirror show
% tiup mirror show
https://tiup-mirrors.pingcap.com

上のコマンド出力で該当するshowコマンドがないと表示された場合、古いバージョンのTiUPを使用している可能性がある。
その場合は、$HOME/.tiup/tiup.tomlファイルの内容を確認すると、現在のミラーアドレスを確認できる。

% cat ~/.tiup/tiup.toml
mirror = "https://tiup-mirrors.pingcap.com"

このミラーアドレスを記録しておく。次の手順で${base_mirror}がこのアドレスを参照するために使用される。

未完成のオフラインミラーを既存のオフラインミラーにマージする。 まず、現在のオフラインミラーのkeysディレクトリを$HOME/.tiupディレクトリにコピーする。

cp -r ${base_mirror}/keys $HOME/.tiup/

次に、TiUPコマンドを使用して、未完成のオフラインミラーを使用中のミラーにマージする。

tiup mirror merge tiup-custom-mirror-v1.10.0

上の手順が完了したら、tiup listコマンドを実行して結果を確認する。この文書の例では、tiup list tiuptiup list clusterの出力が、v1.10.0の該当コンポーネントを使用できることを示す。

オフライン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 set <mirror-dir>コマンドを実行する。ミラーをオンライン環境へ切り替えるには、tiup mirror set https://tiup-mirrors.pingcap.comコマンドを実行する。

Step 3. クラスタトポロジファイルを初期化する

次のコマンドを実行してクラスタトポロジファイルを作成する。

tiup cluster template > topology.yaml
% tiup cluster template > topology.yaml
tiup is checking updates for component cluster ...
Starting component `cluster`: /Users/user/.tiup/components/cluster/v1.11.0/tiup-cluster template

次の二つの一般的なシナリオでは、コマンドを実行して推奨トポロジテンプレートを生成できる。

  • ハイブリッドデプロイの場合: 複数インスタンスが単一コンピュータにデプロイされる。詳細はハイブリッドデプロイトポロジを参照してほしい。
    tiup cluster template --full > topology.yaml
    
  • 地理的に分散されたデプロイの場合: TiDBクラスタは地理的に分散されたデータセンターにデプロイされる。詳細は地理分散デプロイトポロジを参照してほしい。
    tiup cluster template --multi-dc > topology.yaml
    

cat 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

Step 4. デプロイコマンドを実行する

deployコマンドを実行する前に、checkおよびcheck --applyコマンドを使用してクラスタの潜在的なリスクを検出し、自動的に修復する。

  1. 潜在的なリスクを確認する。
    tiup cluster check ./topology.yaml --user root [-p] [-i /home/root/.ssh/gcp_rsa]
    
  2. 自動修復を使用する。
    tiup cluster check ./topology.yaml --apply --user root [-p] [-i /home/root/.ssh/gcp_rsa]
    
  3. TiDBクラスタをデプロイする。
    tiup cluster deploy tidb-test v6.0.0 ./topology.yaml --user root [-p] [-i /home/root/.ssh/gcp_rsa]
    

上のtiup cluster deployコマンドでは:

  • tidb-testはデプロイするTiDBクラスタの名前である。
  • v6.1.0はデプロイするTiDBクラスタのバージョンである。tiup list tidbを実行すると、サポートされる最新バージョンを確認できる。
  • topology.yamlは初期設定ファイルである。
  • --user rootは、対象コンピュータにrootユーザーとしてログインしてクラスタデプロイを完了することを示す。rootユーザーは対象コンピュータでSSHに対するsudo権限を持っている必要がある。または、sudo権限を持つ別のSSHユーザーでデプロイを完了できる。
  • [-i][-p]は任意である。対象コンピュータへのパスワードなしログインを設定している場合、これらのパラメータは不要である。そうでない場合は、二つのうち一つを選択する。[-i]は対象システムへアクセスできるrootユーザー、または--userで指定した別ユーザーの秘密鍵である。[-p]は対話的にユーザーパスワードを入力するために使用される。 出力ログの最後にDeployed cluster tidb-test successfullyが表示されれば、デプロイは成功である。

Step 5. TiUPで管理されているクラスタを確認する

tiup cluster list

TiUPは複数のTiDBクラスタの管理をサポートする。上のコマンドは、TiUPで現在管理されているすべてのクラスタの情報を出力する。これにはクラスタ名、デプロイユーザー、バージョン、秘密鍵情報が含まれる。

Step 6. デプロイされたTiDBクラスタの状態を確認する

たとえば、次のコマンドを実行してtidb-testクラスタの状態を確認する。

tiup cluster display tidb-test

期待される出力には、インスタンスID、ロール、ホスト、待ち受けポート、状態(クラスタがまだ開始されていないため状態はDown/inactive)、ディレクトリ情報が含まれる。

Step 7. TiDBクラスタを開始する

TiUP Cluster v1.9.0から、新しい開始方法として安全な開始が導入された。この方法でデータベースを開始すると、データベースセキュリティが向上する。この方法を使用することが推奨される。

安全な開始後、TiUPは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ユーザーを使用してデータベースにログインできる。

Step 8. TiDBクラスタの実行状態を確認する

tiup cluster display tidb-test

出力ログにUp状態が表示されれば、クラスタは正常に動作している。

参照