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 をアップグレードできます。

  1. TiFlashインスタンスを停止します。

    tiup cluster stop <cluster-name> -R tiflash
  2. TiDB クラスターを再起動せずにアップグレードします (ファイルのみを更新します)。

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

    例えば:

    tiup cluster upgrade <cluster-name> v5.3.0 --offline
  3. TiDB クラスターを再ロードします。再ロード後、 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に設定し、パーティション化されたテーブルのグローバル統計を手動で更新します。詳細については、 動的プルーニングモード参照してください。

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コマンドを実行してデータを新しい形式に変換することをお勧めします。手順は次のとおりです。

    1. TiFlashレプリカを含む各テーブルに対して次のコマンドを実行します。

      ALTER TABLE <table_name> COMPACT tiflash replica;
    2. 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 へ

v7.3 以降、 TiFlash は新しい 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 にアップグレードし、 TiFlash がV3 DTFiles を使用するように構成した後、 TiFlash を以前のバージョンに戻す必要がある場合は、DTTool をオフラインで使用して V3 DTFiles を V2 DTFiles に書き換えることができます。詳細については、 DTTool 移行ツール参照してください。

v6.x または v7.x から v7.4 以降のバージョンへ

v7.4 以降では、データ圧縮中に生成される読み取りおよび書き込み増幅を削減するために、 TiFlash はPageStorage V3 のデータ圧縮ロジックを最適化します。これにより、基盤となるstorageファイル名の一部が変更されます。したがって、 TiFlashを v7.4 以降のバージョンにアップグレードした後は、元のバージョンへのインプレース ダウングレードはサポートされません。

v7.x から v8.4 以降のバージョンへ

v8.4 以降では、 TiFlashの基盤となるstorage形式が更新され、 ベクトル検索サポートされるようになりました。そのため、 TiFlashを v8.4 以降のバージョンにアップグレードした後は、元のバージョンへのインプレース ダウングレードはサポートされません。

テストやその他の特別なシナリオでTiFlash をダウングレードするための回避策

テストやその他の特別なシナリオでTiFlash をダウングレードするには、ターゲットTiFlashノードを強制的にスケールインし、TiKV からデータを再度複製します。詳細な手順については、 TiFlashクラスターのスケールイン参照してください。

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