TiDB のスムーズなアップグレード
このドキュメントでは、DDL 操作を手動でキャンセルせずに TiDB クラスターのアップグレードをサポートする TiDB のスムーズ アップグレード機能を紹介します。
v7.1.0 以降、TiDB を新しいバージョンにアップグレードする場合、TiDB はスムーズなアップグレードをサポートします。この機能により、アップグレード プロセス中の制限がなくなり、よりユーザー フレンドリーなアップグレード エクスペリエンスが提供されます。この機能はデフォルトで有効になっており、無効にすることはできません。
機能紹介
スムーズ アップグレード機能が導入される前は、アップグレード プロセス中の DDL 操作に次の制限があります ( TiUPを使用して TiDB をアップグレードするの警告内容を参照)。
- アップグレード プロセス中に DDL 操作を実行すると、TiDB で未定義の動作が発生する可能性があります。
- DDL 操作中に TiDB をアップグレードすると、TiDB で未定義の動作が発生する可能性があります。
スムーズ アップグレード機能が導入された後、アップグレード プロセスは前述の制限の影響を受けなくなります。
アップグレード プロセス中に、TiDB はユーザーの介入なしで次の操作を自動的に実行します。
- ユーザーの DDL 操作を一時停止します。
- アップグレードのためのシステム DDL 操作を実行します。
- 一時停止したユーザー DDL 操作を再開します。
- アップグレードを完了します。
再開された DDL ジョブは、引き続きアップグレード前の順序で実行されます。
制限事項
スムーズ アップグレード機能を使用する場合は、次の制限事項に注意してください。
ユーザー操作の制限
アップグレード前に、クラスター内にキャンセル中の DDL ジョブがある場合、つまり、進行中の DDL ジョブがユーザーによってキャンセルされている場合、キャンセル状態のジョブは一時停止できないため、TiDB はジョブのキャンセルを再試行します。再試行が失敗した場合は、エラーが報告され、アップグレードは終了します。
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 操作が含まれている場合、インポート操作がブロックされ、未定義のエラーが発生する可能性があります。