TiDB スムーズアップグレード

このドキュメントでは、DDL 操作を手動でキャンセルせずに TiDB クラスターのアップグレードをサポートする TiDB のスムーズ アップグレード機能を紹介します。

v7.1.0 以降では、TiDB をそれ以降のバージョンにアップグレードする場合、TiDB はスムーズなアップグレードをサポートします。この機能により、アップグレード プロセス中の制限がなくなり、よりユーザー フレンドリなアップグレード エクスペリエンスが提供されます。アップグレード プロセス中にユーザーが開始した DDL 操作がないことを確認する必要があることに注意してください。

サポートされているバージョン

機能がスイッチによって制御される必要があるかどうかに応じて、スムーズ アップグレードを使用する方法は 2 つあります。

  • この機能はデフォルトで有効になっており、スイッチで制御する必要はありません。現在、この方法をサポートするバージョンは、v7.1.0、v7.1.1、v7.2.0、v7.3.0 です。具体的にサポートされているバージョンは次のとおりです。

    • v7.1.0 から v7.1.1、v7.2.0、または v7.3.0 にアップグレードします
    • v7.1.1 から v7.2.0 または v7.3.0 にアップグレード
    • v7.2.0 から v7.3.0 へのアップグレード
  • この機能はデフォルトでは無効になっており、 /upgrade/startリクエストを送信することで有効にすることができます。詳細についてはTiDB HTTP APIを参照してください。サポートされているバージョンは次のとおりです。

    • v7.1.2 以降の v7.1 バージョン (つまり、x >= 2 の v7.1.x) から v7.4.0 以降のバージョンにアップグレードします。
    • v7.4.0 からそれ以降のバージョンにアップグレード

特定のバージョンでサポートされているアップグレード方法については、次の表を参照してください。

元のバージョンアップグレード版アップグレード方法注記
< v7.1.0任意のバージョンスムーズなアップグレードはサポートされていません。
バージョン7.1.0v7.1.1、v7.2.0、またはv7.3.0スムーズなアップグレードが自動的にサポートされます。追加の操作は必要ありません。Experimental機能です。問題#44760発生する可能性があります。
バージョン7.1.1v7.2.0 または v7.3.0スムーズなアップグレードが自動的にサポートされます。追加の操作は必要ありません。Experimental機能です。
バージョン7.2.0バージョン7.3.0スムーズなアップグレードが自動的にサポートされます。追加の操作は必要ありません。Experimental機能です。
[v7.1.2、v7.2.0)[v7.1.2、v7.2.0)/upgrade/start HTTPリクエストを送信することでスムーズなアップグレードが可能になります。方法はTiUPを使用するその他のアップグレード方法 2つあります。スムーズ アップグレードが有効になっていない場合は、アップグレード中に DDL 操作が実行されないようにしてください。
[v7.1.2、v7.2.0) または >= v7.4.0= v7.4.0/upgrade/start HTTPリクエストを送信することでスムーズなアップグレードが可能になります。方法はTiUPを使用するその他のアップグレード方法 2つあります。スムーズ アップグレードが有効になっていない場合は、アップグレード中に DDL 操作が実行されないようにしてください。
v7.1.0、v7.1.1、v7.2.0、および v7.3.0= v7.4.0スムーズなアップグレードはサポートされていません。

機能紹介

スムーズ アップグレード機能が導入される前は、アップグレード プロセス中の DDL 操作には次の制限があります。

  • アップグレード プロセス中に DDL 操作を実行すると、TiDB で未定義の動作が発生する可能性があります。
  • DDL 操作中に TiDB をアップグレードすると、TiDB で未定義の動作が発生する可能性があります。

これらの制限をまとめると、アップグレード プロセス中にユーザーが開始した DDL 操作がないことを確認する必要があるということです。スムーズ アップグレード機能が導入されると、TiDB はアップグレード プロセス中にこの制限を受けなくなります。

詳細については、 TiUPを使用して TiDB をアップグレードする警告の内容を参照してください。

アップグレード手順

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

v1.14.0 以降、 TiUP はこの機能を自動的にサポートします。つまり、 tiup cluster upgradeコマンドを直接使用して TiDB クラスターをアップグレードできます。3 コマンドtiup cluster patch現在サポートされていないことに注意してください。

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

現在、この機能はサポートされていません。できるだけ早くサポートされる予定です。

その他のアップグレード方法

TiDB を手動でアップグレードするか、スクリプトを使用してアップグレードするには、次の手順に従います。

  1. クラスター内の任意の TiDB ノードに HTTP アップグレード開始要求を送信しますcurl -X POST http://{TiDBIP}:10080/upgrade/start .

    • TiDB クラスターはアップグレード状態になります。
    • 実行される DDL 操作は一時停止されます。
  2. TiDB バイナリを置き換えて、ローリング アップグレードを実行します。このプロセスは、元のアップグレード プロセスと同じです。

    • システム DDL 操作はアップグレード プロセス中に実行されます。
  3. クラスター内のすべての TiDB ノードが正常にアップグレードされたら、 curl -X POST http://{TiDBIP}:10080/upgrade/finishの TiDB ノードに HTTP アップグレード完了要求を送信します。1 。

    • ユーザーの一時停止された DDL 操作が再開されます。

制限事項

スムーズ アップグレード機能を使用する場合は、次の制限に注意してください。

注記:

このセクションの制限は、スムーズ アップグレード機能を使用するシナリオだけでなく、 TiUPを使用して TiDB をアップグレードするにも適用されます。

ユーザー操作の制限

  • アップグレードする前に、次の制限を考慮してください。

    • クラスター内にキャンセル中の DDL ジョブがある場合、つまり進行中の DDL ジョブがユーザーによってキャンセルされている場合、キャンセル中のジョブは一時停止できないため、TiDB はジョブのキャンセルを再試行します。再試行が失敗すると、エラーが報告され、アップグレードが終了します。
    • TiDB Distributed eXecution Framework (DXF) が有効になっている場合は、 tidb_enable_dist_taskOFF (デフォルト値) に設定して無効にしADD INDEX 。進行中の分散タスクADD INDEXIMPORT INTOがすべて完了していることを確認します。または、これらのタスクをキャンセルし、アップグレードが完了するまで待ってから再開することもできます。そうしないと、アップグレード中の操作によってデータ インデックスの不整合が発生する可能性があります。
  • TiUPを使用して TiDB をアップグレードするシナリオでは、 TiUPアップグレードにはタイムアウト期間があるため、アップグレード前にクラスターにキューで待機している DDL ジョブが多数 (300 個以上) ある場合、アップグレードが失敗する可能性があります。

  • アップグレード中は、次の操作は許可されません。

    • システム テーブル ( mysql.*information_schema.*performance_schema.* 、およびmetrics_schema.* ) に対して DDL 操作を実行します。
    • DDL ジョブを手動でキャンセルします: ADMIN CANCEL DDL JOBS job_id [, job_id] ...; .
    • データをインポートします。

ツールの制限

  • アップグレード中は、次のツールの使用はサポートされません。

    • BR: BR は一時停止された DDL ジョブを TiDB に複製する場合があります。一時停止された DDL ジョブは自動的に再開できないため、後で DDL ジョブが停止する可能性があります。

    • DM および TiCDC: アップグレード プロセス中に DM または TiCDC を使用して SQL ステートメントを TiDB にインポートする場合、SQL ステートメントの 1 つに DDL 操作が含まれていると、インポート操作がブロックされ、未定義のエラーが発生する可能性があります。

プラグインの制限

TiDB にインストールされたプラグインには、DDL 操作が含まれている可能性があります。ただし、アップグレード中に、プラグインの DDL 操作がシステム以外のテーブルに対して実行されると、アップグレードが失敗する可能性があります。

このページは役に立ちましたか?