TiUP を使用して TiDB をアップグレードする

このドキュメントは、次のアップグレード パスを対象としています。

  • TiDB 4.0 バージョンから TiDB 6.2 にアップグレードします。
  • TiDB 5.0 ~ 5.4 バージョンから TiDB 6.2 にアップグレードします。
  • TiDB 6.0 から TiDB 6.2 にアップグレードします。
  • TiDB 6.1 から TiDB 6.2 にアップグレードします。

ノート:

アップグレードするクラスターが v3.1 以前のバージョン (v3.0 または v2.1) である場合、v6.2.0 への直接アップグレードはサポートされていません。最初にクラスターを v4.0 にアップグレードしてから v6.2.0 にアップグレードする必要があります。

アップグレードの注意事項

  • TiDB は現在、バージョンのダウングレードまたはアップグレード後の以前のバージョンへのロールバックをサポートしていません。
  • TiDB Ansible を使用して管理されている v4.0 クラスターの場合、 TiUP (v4.0) を使用して TiDB をアップグレードするに従って新しい管理のためにクラスターを TiUP ( tiup cluster ) にインポートする必要があります。その後、このドキュメントに従ってクラスターを v6.2.0 にアップグレードできます。
  • v3.0 より前のバージョンを v6.2.0 に更新するには:
    1. TiDB アンシブルを使用して、このバージョンを 3.0 に更新します。
    2. TiUP ( tiup cluster ) を使用して、TiDB Ansible 構成をインポートします。
    3. TiUP (v4.0) を使用して TiDB をアップグレードするに従って、バージョン 3.0 を 4.0 に更新します。
    4. このドキュメントに従って、クラスターを v6.2.0 にアップグレードします。
  • TiDB Binlog、TiCDC、TiFlash、およびその他のコンポーネントのバージョンのアップグレードをサポートします。
  • 異なるバージョンの詳細な互換性の変更については、各バージョンのリリースノートを参照してください。対応するリリース ノートの「互換性の変更」セクションに従って、クラスター構成を変更します。
  • v5.3 より前のバージョンから v5.3 以降のバージョンにアップグレードするクラスターの場合、デフォルトでデプロイされた Prometheus は v2.8.1 から v2.27.1 にアップグレードされます。 Prometheus v2.27.1 は、より多くの機能を提供し、セキュリティの問題を修正します。 v2.8.1 と比較して、v2.27.1 のアラート時間の表現が変更されました。詳細については、 プロメテウスコミットを参照してください。

準備

このセクションでは、TiUP および TiUPクラスタコンポーネントのアップグレードを含め、TiDB クラスターをアップグレードする前に必要な準備作業を紹介します。

手順 1: TiUP または TiUP オフライン ミラーをアップグレードする

TiDB クラスターをアップグレードする前に、まず TiUP または TiUP ミラーをアップグレードする必要があります。

TiUP および TiUPクラスタのアップグレード

ノート:

アップグレードするクラスタの制御マシンがhttps://tiup-mirrors.pingcap.comにアクセスできない場合は、このセクションをスキップしてTiUP オフライン ミラーのアップグレードを参照してください。

  1. TiUPのバージョンアップ。 TiUPのバージョンは1.10.3以降を推奨します。

    tiup update --self tiup --version
  2. TiUPクラスタのバージョンをアップグレードします。 TiUP クラスタのバージョンは1.10.3以降を推奨します。

    tiup update cluster tiup cluster --version

TiUP オフライン ミラーのアップグレード

ノート:

アップグレードするクラスターがオフラインの方法を使用せずにデプロイされた場合は、この手順をスキップしてください。

TiUP を使用して TiDBクラスタをデプロイする - TiUP をオフラインでデプロイを参照して、新しいバージョンの TiUP ミラーをダウンロードし、制御マシンにアップロードします。 local_install.shを実行すると、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

上書きアップグレードの後、次のコマンドを実行して、サーバーとツールキットのオフライン ミラーをサーバーディレクトリにマージします。

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 クラスタコンポーネントをアップグレードします。

tiup update cluster

これで、オフライン ミラーが正常にアップグレードされました。上書き後のTiUP操作でエラーが発生した場合、 manifestが更新されていない可能性があります。 TiUP を再度実行する前にrm -rf ~/.tiup/manifests/*を試すことができます。

手順 2: TiUP トポロジ構成ファイルを編集する

ノート:

次のいずれかの状況に該当する場合は、この手順をスキップしてください。

  • 元のクラスターの構成パラメーターを変更していません。または、 tiup clusterを使用して構成パラメーターを変更しましたが、それ以上の変更は必要ありません。
  • アップグレード後、変更されていない構成アイテムに v6.2.0 のデフォルトのパラメーター値を使用したいと考えています。
  1. vi編集モードに入り、トポロジ ファイルを編集します。

    tiup cluster edit-config <cluster-name>
  2. トポロジー構成テンプレートのフォーマットを参照し、変更するパラメーターをトポロジー ファイルのserver_configsセクションに入力します。

  3. 変更後、 : + w + qを入力して変更を保存し、編集モードを終了します。 Yを入力して変更を確認します。

ノート:

クラスターを v6.2.0 にアップグレードする前に、v4.0 で変更したパラメーターが v6.2.0 で互換性があることを確認してください。詳細については、 TiKVConfiguration / コンフィグレーションファイルを参照してください。

次の 3 つの TiKV パラメータは、TiDB v5.0 で廃止されました。元のクラスターで次のパラメーターが構成されている場合は、これらのパラメーターをedit-configから削除する必要があります。

  • ペシミスティック-txn.enabled
  • サーバー.request-batch-enable-cross-command
  • サーバー.request-batch-wait-duration

ステップ 3: 現在のクラスターのヘルス ステータスを確認する

アップグレード中の未定義の動作やその他の問題を回避するには、アップグレード前に現在のクラスターのリージョンのヘルス ステータスを確認することをお勧めします。これを行うには、 checkサブコマンドを使用できます。

tiup cluster check <cluster-name> --cluster

コマンド実行後、「リージョンの状態」チェック結果が出力されます。

  • 結果が「すべてのリージョンが正常」である場合、現在のクラスター内のすべてのリージョンは正常であり、アップグレードを続行できます。
  • 結果が「リージョンが完全に正常ではありません: m miss-peer、n pending-peer」の場合、「他の操作の前に異常なリージョンを修正してください」。現在のクラスターの一部のリージョンが異常です。チェック結果が「すべてのリージョンが正常」になるまで、異常をトラブルシューティングする必要があります。その後、アップグレードを続行できます。

TiDB クラスターをアップグレードする

このセクションでは、TiDB クラスターをアップグレードし、アップグレード後にバージョンを確認する方法について説明します。

TiDB クラスターを指定されたバージョンにアップグレードする

クラスタは、オンライン アップグレードとオフライン アップグレードの 2 つの方法のいずれかでアップグレードできます。

デフォルトでは、TiUPクラスタはオンライン方式を使用して TiDB クラスターをアップグレードします。これは、TiDB クラスターがアップグレード プロセス中にサービスを提供できることを意味します。オンライン方式では、リーダーはアップグレードと再起動の前に各ノードで 1 つずつ移行されます。したがって、大規模なクラスターの場合、アップグレード操作全体を完了するには長い時間がかかります。

メンテナンスのためにデータベースを停止するメンテナンス ウィンドウがアプリケーションにある場合は、オフライン アップグレード方法を使用して、アップグレード操作をすばやく実行できます。

オンラインアップグレード

tiup cluster upgrade <cluster-name> <version>

たとえば、クラスターを v6.2.0 にアップグレードする場合:

tiup cluster upgrade <cluster-name> v6.2.0

ノート:

  • オンライン アップグレードでは、すべてのコンポーネントが 1 つずつアップグレードされます。 TiKV のアップグレード中、TiKV インスタンス内のすべてのリーダーは、インスタンスを停止する前に削除されます。デフォルトのタイムアウト時間は 5 分 (300 秒) です。このタイムアウト時間が経過すると、インスタンスは直接停止されます。

  • --forceパラメーターを使用して、リーダーを削除せずにすぐにクラスターをアップグレードできます。ただし、アップグレード中に発生するエラーは無視されます。つまり、アップグレードの失敗は通知されません。したがって、 --forceパラメータは注意して使用してください。

  • 安定したパフォーマンスを維持するには、インスタンスを停止する前に、TiKV インスタンス内のすべてのリーダーが削除されていることを確認してください。 --transfer-timeout--transfer-timeout 3600 (単位: 秒) など、より大きな値に設定できます。

  • TiFlash を 5.3 より前のバージョンから 5.3 以降にアップグレードするには、TiFlash を停止してからアップグレードする必要があります。次の手順は、他のコンポーネントを中断することなく TiFlash をアップグレードするのに役立ちます。
    1. TiFlash インスタンスを停止します: tiup cluster stop <cluster-name> -R tiflash
    2. 再起動せずに TiDB クラスターをアップグレードします (ファイルの更新のみ): tiup cluster upgrade <cluster-name> <version> --offline
    3. TiDB クラスターをリロードします。 tiup cluster reload <cluster-name> .リロード後、TiFlash インスタンスが開始されるため、手動で開始する必要はありません。

オフライン アップグレード

  1. オフライン アップグレードの前に、まずクラスター全体を停止する必要があります。

    tiup cluster stop <cluster-name>
  2. upgradeコマンドと--offlineオプションを使用して、オフライン アップグレードを実行します。

    tiup cluster upgrade <cluster-name> <version> --offline
  3. アップグレード後、クラスターは自動的に再起動されません。 startコマンドを使用して再起動する必要があります。

    tiup cluster start <cluster-name>

クラスターのバージョンを確認する

displayコマンドを実行して、最新のクラスター バージョンTiDB Versionを表示します。

tiup cluster display <cluster-name>
Cluster type: tidb Cluster name: <cluster-name> Cluster version: v6.2.0

ノート:

デフォルトでは、TiUP と TiDB は使用状況の詳細を PingCAP と共有して、製品の改善方法を理解できるようにします。共有される内容と共有を無効にする方法の詳細については、 テレメトリーを参照してください。

FAQ

このセクションでは、TiUP を使用して TiDB クラスターを更新するときに発生する一般的な問題について説明します。

エラーが発生してアップグレードが中断された場合、このエラーを修正した後にアップグレードを再開するにはどうすればよいですか?

tiup cluster upgradeコマンドを再実行して、アップグレードを再開します。アップグレード操作により、以前にアップグレードされたノードが再起動されます。アップグレードしたノードを再起動したくない場合は、 replayサブコマンドを使用して操作を再試行します。

  1. tiup cluster auditを実行して操作記録を表示します。

    tiup cluster audit

    失敗したアップグレード操作レコードを見つけて、この操作レコードの ID を保持します。 ID は、次のステップの<audit-id>の値です。

  2. tiup cluster replay <audit-id>を実行して、対応する操作を再試行します。

    tiup cluster replay <audit-id>

エビクト リーダーは、アップグレード中に長時間待機しました。迅速なアップグレードのためにこの手順をスキップするにはどうすればよいですか?

--forceを指定できます。その後、PD リーダーの転送と TiKV リーダーの削除のプロセスは、アップグレード中にスキップされます。クラスターを直接再起動してバージョンを更新するため、オンラインで実行されるクラスターに大きな影響を与えます。コマンドは次のとおりです。

tiup cluster upgrade <cluster-name> <version> --force

TiDB クラスターをアップグレードした後、pd-ctl などのツールのバージョンを更新する方法を教えてください。

TiUP を使用して、対応するバージョンのctlつのコンポーネントをインストールすることで、ツールのバージョンをアップグレードできます。

tiup install ctl:v6.2.0

TiDB 6.2.0 の互換性の変更

  • 互換性の変更については、TiDB 6.2.0 リリース ノートを参照してください。
  • TiDB Binlogを使用してクラスターにローリング更新を適用するときは、新しいクラスター化インデックス テーブルを作成しないようにしてください。