TiFlashアップグレードガイド
このドキュメントでは、 TiFlash をアップグレードするときに知っておく必要のある機能の変更と推奨されるアクションについて説明します。
標準的なアップグレード プロセスについては、次のドキュメントを参照してください。
注記:
ファストスキャンはv6.2.0で実験的機能として導入され、v7.0.0で一般提供(GA)されます。強力なデータ整合性を犠牲にして、より効率的なクエリパフォーマンスを実現します。
TiFlashを含む TiDB をメジャーバージョン間でアップグレードすることは推奨されません(例:v4.x から v6.x)。代わりに、まず v4.x から v5.x にアップグレードし、その後 v6.x にアップグレードする必要があります。
v4.x のライフサイクルは終了に近づいています。できるだけ早く v5.x 以降にアップグレードすることをお勧めします。詳細については、 TiDB リリース サポート ポリシーご覧ください。
PingCAPは、v6.0などのLTS以外のバージョンに対するバグ修正を提供していません。可能な限り、v6.1以降のLTSバージョンにアップグレードすることをお勧めします。
TiUPを使用してTiFlashをアップグレードする
TiFlashをv5.3.0より前のバージョンからv5.3.0以降にアップグレードするには、 TiFlashを停止してからアップグレードする必要があります。TiUPを使用してTiFlashをアップグレードする際は、以下の点にご注意ください。
- TiUPクラスタのバージョンがv1.12.0以降の場合、 TiFlashを停止してからアップグレードすることはできません。アップグレード先のバージョンでTiUPクラスタのバージョンがv1.12.0以降が必要な場合は、まず
tiup cluster:v1.11.3 <subcommand>
使用してTiFlashを中間バージョンにアップグレードし、TiDBクラスタのオンラインアップグレードを実行した後、 TiUPバージョンをアップグレードし、その後TiDBクラスタを停止せずに直接アップグレード先のバージョンにアップグレードすることをお勧めします。 - TiUPクラスターのバージョンが v1.12.0 より前の場合は、次の手順を実行してTiFlashをアップグレードします。
次の手順に従うと、 TiUPを使用して他のコンポーネントを中断せずにTiFlashをアップグレードできます。
TiFlashインスタンスを停止します。
tiup cluster stop <cluster-name> -R tiflashTiDB クラスターを再起動せずにアップグレードします (ファイルの更新のみ)。
tiup cluster upgrade <cluster-name> <version> --offline例えば:
tiup cluster upgrade <cluster-name> v5.3.0 --offlineTiDB クラスターをリロードします。リロード後、 TiFlashインスタンスが起動するので、手動で起動する必要はありません。
tiup cluster reload <cluster-name>
5.x または v6.0 から v6.1 へ
TiFlash をv5.x または v6.0 から v6.1 にアップグレードする場合は、 TiFlash Proxy と動的プルーニングの機能変更に注意してください。
TiFlashプロキシ
TiFlash Proxyはv6.1.0(TiKV v6.0.0と連動)にアップグレードされました。この新バージョンではRocksDBのバージョンもアップグレードされています。TiFlashをv6.1にアップグレードすると、データ形式は自動的に新しいバージョンに変換されます。
通常のアップグレードでは、データ変換にリスクは伴いません。ただし、特別なシナリオ(テストや検証など)でTiFlashをv6.1から以前のバージョンにダウングレードする必要がある場合、以前のバージョンでは新しいRocksDB構成の解析に失敗する可能性があります。その結果、 TiFlashの再起動に失敗する可能性があります。アップグレードプロセスを十分にテストおよび検証し、緊急時の対応策を準備することをお勧めします。
テストやその他の特別なシナリオでTiFlashをダウングレードするための回避策
対象のTiFlashノードを強制的にスケールインし、TiKVからデータを再度複製することができます。詳細な手順については、 TiFlashクラスターのスケールイン参照してください。
動的剪定
動的剪定モード有効にせず、今後も使用しない場合は、このセクションをスキップできます。
新しくインストールされた TiDB v6.1.0: 動的プルーニングはデフォルトで有効になっています。
TiDB v6.0以前:動的プルーニングはデフォルトで無効になっています。アップグレード後の動的プルーニングの設定は、以前のバージョンの設定を継承します。つまり、アップグレード後も動的プルーニングは自動的に有効化(または無効化)されません。
アップグレード後、動的プルーニングを有効にするには、
tidb_partition_prune_mode
をdynamic
に設定し、パーティションテーブルのGlobalStatsを手動で更新してください。詳細は動的プルーニングモード参照してください。
v5.x または v6.0 から v6.2 へ
TiDB v6.2では、 TiFlashのデータstorage形式がV3バージョンにアップグレードされます。そのため、 TiFlashをv5.xまたはv6.0からv6.2にアップグレードする場合は、 TiFlashプロキシと動的剪定の機能変更に加えて、PageStorageの機能変更にも注意する必要があります。
ページストレージ
TiFlash v6.2.0はデフォルトでPageStorage V3バージョンformat_version = 4
使用します。この新しいデータフォーマットは、ピーク時の書き込みI/Oトラフィックを大幅に削減します。更新トラフィックが多く、同時実行性やクエリ負荷が高いシナリオでは、 TiFlashデータGCによる過剰なCPU使用率を効果的に軽減します。また、以前のstorageフォーマットと比較して、V3バージョンはスペース増幅とリソース消費を大幅に削減します。
v6.2.0 にアップグレードすると、新しいデータが既存のTiFlashノードに書き込まれると同時に、以前のデータは徐々に新しい形式に変換されます。
ただし、アップグレード中に以前のデータを完全に新しい形式に変換することはできません。これは、変換によってある程度のシステムオーバーヘッドが発生するためです(サービスには影響はありませんが、注意が必要です)。アップグレード後、
Compact
コマンド実行してデータを新しい形式に変換することをお勧めします。手順は次のとおりです。TiFlashレプリカを含む各テーブルに対して次のコマンドを実行します。
ALTER TABLE <table_name> COMPACT tiflash replica;TiFlashノードを再起動します。
テーブルがまだ古いデータ形式を使用しているかどうかを Grafana で確認できます: TiFlash-Summary > Storage Pool > Storage Pool Run Mode 。
- V2のみ: PageStorage V2を使用しているテーブルの数(パーティションを含む)
- V3のみ: PageStorage V3を使用しているテーブルの数(パーティションを含む)
- 混合モード: PageStorage V2 から PageStorage V3 に変換されたデータ形式を持つテーブルの数 (パーティションを含む)
テストやその他の特別なシナリオでTiFlashをダウングレードするための回避策
対象のTiFlashノードを強制的にスケールインし、TiKVからデータを再度複製することができます。詳細な手順については、 TiFlashクラスターのスケールイン参照してください。
v6.1からv6.2へ
TiFlashをv6.1からv6.2にアップグレードする際は、データstorage形式の変更にご注意ください。詳細はページストレージご覧ください。
v6.x または v7.x からstorage.format_version = 5
が設定された v7.3 へ
TiFlash v7.3 以降、新しい DTFile バージョン DTFile V3 (実験的) が導入されました。この新しい DTFile バージョンでは、複数の小さなファイルを 1 つの大きなファイルに結合することで、ファイル総数を削減できます。v7.3 では、デフォルトの DTFile バージョンは引き続き V2 です。V3 を使用するには、 TiFlash構成パラメータ storage.format_version = 5
を設定します。設定後もTiFlash はV2 DTFile を読み取り可能で、その後のデータ圧縮時に既存の V2 DTFile を徐々に V3 DTFile に書き換えます。
TiFlashをv7.3にアップグレードし、V3 DTFilesを使用するように設定した後、 TiFlashを以前のバージョンに戻す必要がある場合は、DTToolをオフラインで使用してV3 DTFilesをV2 DTFilesに書き換えることができます。詳細については、 DTTool 移行ツール参照してください。
v6.x または v7.x から v7.4 以降のバージョンへ
v7.4以降、データコンパクション中に発生するリードアンプリフィケーションとライトアンプリフィケーションを削減するため、 TiFlashはPageStorage V3のデータコンパクションロジックを最適化します。これにより、基盤となるstorageファイル名の一部が変更されます。そのため、v7.4以降へのアップグレード後、元のバージョンへのインプレースダウングレードはサポートされません。
テストやその他の特別なシナリオでTiFlashをダウングレードするための回避策
テストやその他の特殊なシナリオでTiFlashをダウングレードするには、対象のTiFlashノードを強制的にスケールインし、その後TiKVからデータを再度複製します。詳細な手順については、 TiFlashクラスターのスケールイン参照してください。