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.0 | v7.1.1、v7.2.0、またはv7.3.0 | スムーズなアップグレードが自動的にサポートされます。追加の操作は必要ありません。 | Experimental機能です。問題#44760発生する可能性があります。 |
バージョン7.1.1 | v7.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 を手動でアップグレードするか、スクリプトを使用してアップグレードするには、次の手順に従います。
クラスター内の任意の TiDB ノードに HTTP アップグレード開始要求を送信します
curl -X POST http://{TiDBIP}:10080/upgrade/start
.- TiDB クラスターはアップグレード状態になります。
- 実行される DDL 操作は一時停止されます。
TiDB バイナリを置き換えて、ローリング アップグレードを実行します。このプロセスは、元のアップグレード プロセスと同じです。
- システム DDL 操作はアップグレード プロセス中に実行されます。
クラスター内のすべての 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_task
をOFF
(デフォルト値) に設定して無効にしADD INDEX
。進行中の分散タスクADD INDEX
とIMPORT 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 操作がシステム以外のテーブルに対して実行されると、アップグレードが失敗する可能性があります。