TiDB 6.5.0 リリースノート

発売日: 2022年12月29日

TiDB バージョン: 6.5.0

クイックアクセス: クイックスタート | 実稼働環境への導入

TiDB 6.5.0 は長期サポートリリース (LTS) です。

TiDB 6.4.0-DMRと比較して、TiDB 6.5.0 では次の主要な機能と改善が導入されています。

ヒント:

以前の LTS 6.1.0 と比較して、 TiDB 6.5.0 には、 6.2.0-DMR6.3.0-DMR6.4.0-DMRでリリースされた新機能、改善、バグ修正も含まれています。

  • インデックス加速機能が一般提供 (GA) され、v6.1.0 と比較してインデックス追加のパフォーマンスが約 10 倍向上します。
  • TiDB グローバルメモリ制御が GA になり、 tidb_server_memory_limitを介してメモリ消費しきい値を制御できるようになりました。
  • 高性能かつグローバルに単調なAUTO_INCREMENT列属性が、MySQL と互換性のある GA になります。
  • FLASHBACK CLUSTER TO TIMESTAMP TiCDC および PITR と互換性があり、GA になります。
  • より正確なコストモデル バージョン 2一般に公開し、 ANDで接続されたインデックスマージの式をサポートすることで、 TiDB オプティマイザーを強化します。
  • JSON_EXTRACT()機能をTiFlashにプッシュダウンすることをサポートします。
  • パスワード コンプライアンス監査要件を満たすパスワード管理ポリシーをサポートします。
  • TiDB LightningとDumpling は、 インポートおよび輸出圧縮された SQL ファイルと CSV ファイルをサポートします。
  • TiDB データ移行 (DM) 継続的なデータ検証 GA になります。
  • TiDB バックアップ & リストアは、スナップショット チェックポイント バックアップをサポートし、 ピトルのリカバリ パフォーマンスを 50% 向上させ、一般的なシナリオでの RPO を 5 分まで短縮します。
  • Kafka へのデータの複製の TiCDC スループットを 4000 行/秒から 35000 行/秒に向上し、レプリケーションのレイテンシーを 2 秒に短縮します。
  • データのライフサイクルを管理するために行レベル存続時間 (TTL)を提供します (実験的)。
  • TiCDC は、Amazon S3、Azure Blob Storage、NFS (実験的) など変更されたログをオブジェクトstorageに複製するをサポートしています。

新機能

構文

  • TiDBのインデックス追加のパフォーマンスは約10倍向上します(GA) #35983 @ ベンジャミン2037 @ タンジェンタ

    TiDB v6.3.0 では、インデックス作成時のバックフィル速度を向上させるための実験的機能としてインデックス加速を追加導入されています。v6.5.0 ではこの機能が GA となり、デフォルトで有効になり、大規模なテーブルでのパフォーマンスは v6.1.0 よりも約 10 倍高速になると予想されます。この高速化機能は、単一の SQL ステートメントがインデックスをシリアルに追加するシナリオに適しています。複数の SQL ステートメントが並列でインデックスを追加する場合、SQL ステートメントの 1 つだけが高速化されます。

  • DDL 変更時の DML 成功率を向上させるために軽量メタデータ ロックを提供する (GA) #37275 @ 翻訳:

    TiDB v6.3.0 では、 メタデータロック実験的機能として導入されています。DML ステートメントによって発生するInformation schema is changedエラーを回避するために、TiDB はテーブル メタデータの変更中に DML と DDL の優先順位を調整し、進行中の DDL が古いメタデータを持つ DML がコミットされるまで待機するようにします。v6.5.0 では、この機能が GA になり、デフォルトで有効になっています。これは、さまざまなタイプの DDL 変更シナリオに適しています。既存のクラスターを v6.5.0 より前のバージョンから v6.5.0 以降にアップグレードすると、TiDB はメタデータ ロックを自動的に有効にします。この機能を無効にするには、システム変数tidb_enable_metadata_lockOFFに設定します。

    詳細についてはドキュメンテーション参照してください。

  • FLASHBACK CLUSTER TO TIMESTAMP (GA) #37197 #13303 @ 定義2014 @ bb7133 @ じゃがいも @ コナー1996 @ ヒューシャープ @ カルビンネオを使用して、クラスターを特定の時点に復元する機能をサポートします。

    v6.4.0 以降、TiDB はFLASHBACK CLUSTER TO TIMESTAMPステートメントを実験的機能として導入しました。このステートメントを使用すると、ガベージ コレクション (GC) の有効期間内の特定の時点にクラスターを復元できます。v6.5.0 では、この機能は TiCDC および PITR と互換性があり、GA になりました。この機能を使用すると、DML の誤った操作を簡単に元に戻し、数分で元のクラスターを復元し、さまざまな時点でデータをロールバックして、データが変更された正確な時刻を特定できます。

    詳細についてはドキュメンテーション参照してください。

  • INSERT エキシウム含む#33485 UPDATE DMLステートメントDELETE完全にサポートしますREPLACE

    大規模データ処理のシナリオでは、大規模なトランザクションを含む単一の SQL ステートメントが、クラスターの安定性とパフォーマンスに悪影響を及ぼす可能性があります。非トランザクション DML ステートメントは、内部実行のために複数の SQL ステートメントに分割された DML ステートメントです。分割されたステートメントはトランザクションの原子性と分離性を損ないますが、クラスターの安定性を大幅に向上させます。TiDB は、v6.1.0 以降で非トランザクションDELETEステートメントをサポートし、v6.5.0 以降で非トランザクションINSERTREPLACE 、およびUPDATEステートメントをサポートしています。

    詳細については非トランザクションDMLステートメントおよびBATCH構文を参照してください。

  • 存続時間 (TTL) のサポート (実験的) #39262 @ lcwangchao

    TTL は、行レベルのデータ有効期間管理を提供します。TiDB では、TTL 属性を持つテーブルは、データ有効期間を自動的にチェックし、行レベルで期限切れのデータを削除します。TTL は、オンラインの読み取りおよび書き込みワークロードに影響を与えることなく、不要なデータを定期的かつタイムリーにクリーンアップできるように設計されています。

    詳細についてはドキュメンテーション参照してください。

  • INSERT INTO SELECTステートメントを使用したTiFlashクエリ結果の保存をサポート (実験的) #37515 @ ゲンリキ

    v6.5.0 以降、TiDB はINSERT INTO SELECTステートメントのSELECT句 (分析クエリ) をTiFlashにプッシュダウンすることをサポートしています。この方法では、 TiFlashクエリ結果をINSERT INTOで指定された TiDB テーブルに簡単に保存してさらに分析することができ、結果のキャッシュ (つまり、結果のマテリアライゼーション) として機能します。例:

    INSERT INTO t2 SELECT Mod(x,y) FROM t1;

    実験的段階では、この機能はデフォルトで無効になっています。有効にするには、 tidb_enable_tiflash_read_for_write_stmtシステム変数をONに設定します。この機能では、 INSERT INTOで指定される結果テーブルに特別な制限はなく、その結果テーブルにTiFlashレプリカを追加するかどうかは自由です。この機能の一般的な使用シナリオは次のとおりです。

    • TiFlashを使用して複雑な分析クエリを実行する
    • TiFlashクエリ結果を再利用するか、同時実行性の高いオンラインリクエストを処理する
    • 入力データのサイズと比較して比較的小さい結果セットが必要であり、100 MiB 未満が望ましいです。

    詳細についてはドキュメンテーション参照してください。

  • バインディング履歴実行プランのサポート (実験的) #39199 @ ふーふー

    SQL ステートメントの場合、実行中のさまざまな要因により、オプティマイザが以前の最適な実行プランではなく新しい実行プランを選択することがあり、SQL パフォーマンスに影響を及ぼします。この場合、最適な実行プランがまだクリアされていない場合は、SQL 実行履歴にまだ存在します。

    v6.5.0 では、TiDB はCREATE [GLOBAL | SESSION] BINDINGステートメントのバインディング オブジェクトを拡張することで、履歴実行プランのバインディングをサポートします。SQL ステートメントの実行プランが変更された場合、元の実行プランが SQL 実行履歴メモリテーブルに残っている限り (たとえば、 statements_summary )、 CREATE [GLOBAL | SESSION] BINDINGステートメントでplan_digestを指定して元の実行プランをバインドし、SQL パフォーマンスを迅速に回復できます。この機能により、実行プランの変更の問題を処理するプロセスが簡素化され、メンテナンスの効率が向上します。

    詳細についてはドキュメンテーション参照してください。

Security

  • パスワードの複雑さのポリシー#38928 @ Cbcウェストウルフをサポートする

    このポリシーを有効にすると、パスワードを設定するときに、TiDB はパスワードの長さ、パスワード内の大文字と小文字、数字、特殊文字が十分かどうか、パスワードが辞書と一致しているかどうか、パスワードがユーザー名と一致しているかどうかをチェックします。これにより、安全なパスワードが設定されていることが保証されます。

    TiDB は、パスワードの強度を検証するための SQL 関数VALIDATE_PASSWORD_STRENGTH()提供します。

    詳細についてはドキュメンテーション参照してください。

  • パスワード有効期限ポリシー#38936 @ Cbcウェストウルフをサポート

    TiDB は、手動による有効期限、グローバル レベルの自動有効期限、アカウント レベルの自動有効期限など、パスワード有効期限ポリシーの構成をサポートしています。このポリシーを有効にした後は、パスワードを定期的に変更する必要があります。これにより、長期使用によるパスワード漏洩のリスクが軽減され、パスワードのセキュリティが向上します。

    詳細についてはドキュメンテーション参照してください。

  • パスワード再利用ポリシー#38937 @ 学習を続ける20221をサポートする

    TiDB は、グローバル レベルのパスワード再利用ポリシーやアカウント レベルのパスワード再利用ポリシーなど、パスワード再利用ポリシーの構成をサポートしています。このポリシーを有効にすると、指定された期間内に使用したパスワードや、最近使用したいくつかのパスワードは使用できません。これにより、パスワードの繰り返し使用によるパスワード漏洩のリスクが軽減され、パスワードのセキュリティが向上します。

    詳細についてはドキュメンテーション参照してください。

  • ログイン失敗の追跡と一時的なアカウントロックポリシー#38938 @ 最後の切歯をサポート

    このポリシーを有効にすると、TiDB に連続して複数回間違ったパスワードでログインすると、アカウントが一時的にロックされます。ロック時間が終了すると、アカウントは自動的にロック解除されます。

    詳細についてはドキュメンテーション参照してください。

可観測性

  • TiDBダッシュボードはKubernetes上に独立したPod #1447 @ サバピンとしてデプロイできます。

    TiDB v6.5.0 (以降) およびTiDB Operator v1.4.0 (以降) では、Kubernetes 上の独立した Pod として TiDB Dashboard をデプロイできます。TiDB TiDB Operatorを使用すると、この Pod の IP アドレスにアクセスして TiDB Dashboard を起動できます。

    TiDB ダッシュボードを個別に展開すると、次の利点が得られます。

    • TiDB ダッシュボードの計算作業は PD ノードに負担をかけません。これにより、より安定したクラスター操作が保証されます。
    • PD ノードが利用できない場合でも、ユーザーは診断のために TiDB ダッシュボードにアクセスできます。
    • インターネット上の TiDB ダッシュボードへのアクセスには、PD の特権インターフェイスは関係しません。そのため、クラスターのセキュリティ リスクが軽減されます。

    詳細についてはドキュメンテーション参照してください。

  • パフォーマンス概要ダッシュボードにTiFlashおよび CDC (変更データ キャプチャ) パネル#39230 @ dbsidが追加されました

    v6.1.0 以降、TiDB は Grafana にパフォーマンス概要ダッシュボードを導入しました。このダッシュボードは、TiDB、TiKV、PD の全体的なパフォーマンス診断のためのシステムレベルのエントリを提供します。v6.5.0 では、パフォーマンス概要ダッシュボードにTiFlashと CDC パネルが追加されました。v6.5.0 以降では、これらのパネルを使用して、パフォーマンス概要ダッシュボードを使用して TiDB クラスター内のすべてのコンポーネントのパフォーマンスを分析できます。

    TiFlashパネルと CDC パネルは、 TiFlashおよび TiCDC の監視情報を再編成します。これにより、 TiFlashおよび TiCDC のパフォーマンスの問題の分析とトラブルシューティングの効率が大幅に向上します。

    • TiFlashパネルでは、 TiFlashクラスターのリクエスト タイプ、レイテンシー分析、リソース使用状況の概要を簡単に表示できます。
    • CDCパネルでは、TiCDC クラスターの健全性、レプリケーションのレイテンシー、データ フロー、ダウンストリームの書き込みレイテンシーを簡単に確認できます。

    詳細についてはドキュメンテーション参照してください。

パフォーマンス

  • インデックスマージAND #39333 @ グオシャオゲ @ 時間と運命 @ 海蘭湖で接続された式をサポートします

    v6.5.0 より前では、 TiDB はORで接続されたフィルタ条件に対してのみインデックス マージの使用をサポートしていました。 v6.5.0 以降、 TiDB はWHERE句でANDで接続されたフィルタ条件に対してインデックス マージの使用をサポートするようになりました。 このように、 TiDB のインデックス マージは、クエリ フィルタ条件のより一般的な組み合わせをカバーできるようになり、 union ( OR ) 関係に限定されなくなりました。 現在の v6.5.0 バージョンでは、オプティマイザによって自動的に選択されたOR条件でのインデックス マージのみがサポートされています。 AND条件のインデックス マージを有効にするには、 USE_INDEX_MERGEヒントを使用する必要があります。

    インデックスマージの詳細については、 v5.4.0 リリースノートインデックスのマージの説明を参照してください。

  • 以下のJSON関数をTiFlash #39458 @ いいえにプッシュダウンするサポート

    • ->
    • ->>
    • JSON_EXTRACT()

    JSON 形式は、アプリケーション データ モデリングに柔軟な方法を提供します。そのため、データ交換やデータstorageに JSON 形式を使用するアプリケーションが増えています。JSON関数をTiFlashにプッシュダウンすることで、JSON タイプのデータ分析の効率を向上させ、よりリアルタイムな分析シナリオに TiDB を使用できるようになります。

  • 以下の文字列関数をTiFlash #6115 @ 翻訳者にプッシュダウンする機能をサポートします。

    • regexp_like
    • regexp_instr
    • regexp_substr
  • ビュー #37887 @ 思い出させるで実行プラン生成に干渉するグローバル オプティマイザ ヒントをサポートします。

    一部のビュー アクセス シナリオでは、最適なパフォーマンスを実現するために、オプティマイザ ヒントを使用してビュー内のクエリの実行プランに干渉する必要があります。v6.5.0 以降、TiDB はビュー内のクエリ ブロックにグローバル ヒントを追加し、クエリで定義されたヒントをビューで有効にできるようになりました。この機能により、ネストされたビューを含む複雑な SQL ステートメントにヒントを挿入できるようになり、実行プランの制御が強化され、複雑なステートメントのパフォーマンスが安定します。グローバル ヒントを使用するには、 クエリブロックに名前を付けるヒント参照を指定する実行する必要があります。

    詳細についてはドキュメンテーション参照してください。

  • パーティションテーブルから TiKV #26166 @ ウィノロスへのプッシュダウンソート操作をサポート

    パーティションテーブル機能は v6.1.0 から GA になっていますが、TiDB は継続的にパフォーマンスを改善しています。v6.5.0 では、TiDB は計算とフィルタリングのためにORDER BYLIMITなどのソート操作を TiKV にプッシュダウンすることをサポートしています。これにより、ネットワーク I/O オーバーヘッドが削減され、パーティション テーブルを使用する場合の SQL パフォーマンスが向上します。

  • オプティマイザーはより正確なコストモデルバージョン2(GA) #35240 @ qw4990を導入しました

    TiDB v6.2.0 では、 コストモデル バージョン 2が実験的機能として導入されています。このモデルは、より正確なコスト推定方法を使用して、オプティマイザーが最適な実行プランを選択できるようにします。特にTiFlashが展開されている場合、コスト モデル バージョン 2 は適切なstorageエンジンを自動的に選択し、手動による介入を大幅に回避します。一定期間の実際のシーンでのテストの後、このモデルは v6.5.0 で GA になります。v6.5.0 以降、新しく作成されたクラスターはデフォルトでコスト モデル バージョン 2 を使用します。クラスターを v6.5.0 にアップグレードする場合、コスト モデル バージョン 2 によってクエリ プランが変更される可能性があるため、十分なパフォーマンス テストを行った後、 tidb_cost_model_version = 2変数を設定して新しいコスト モデルを使用できます。

    コスト モデル バージョン 2 は、TiDB オプティマイザーの全体的な機能を大幅に向上させ、TiDB をより強力な HTAP データベースへと進化させる、一般利用可能な機能になります。

    詳細についてはドキュメンテーション参照してください。

  • TiFlashはテーブル行数#37165 @ エルサ0520を取得する操作を最適化します

    データ分析のシナリオでは、フィルター条件なしでCOUNT(*)を介してテーブルの実際の行数を取得することは一般的な操作です。v6.5.0 では、 TiFlash はCOUNT(*)の書き換えを最適化し、最短の列定義を持つ非 NULL 列を自動的に選択して行数をカウントします。これにより、 TiFlashでの I/O 操作の数を効果的に削減し、行数取得の実行効率を向上させることができます。

安定性

  • グローバルメモリ制御機能はGA #37816 @ うわーになりました

    v6.4.0 以降、TiDB は実験的機能としてグローバルメモリ制御を導入しました。v6.5.0 では GA となり、メインメモリの消費量を追跡できるようになりました。グローバルメモリの消費量がtidb_server_memory_limitで定義されたしきい値に達すると、TiDB は GC または SQL 操作のキャンセルによってメモリ使用量を制限し、安定性を確保しようとします。

    セッション内のトランザクションによって消費されるメモリ(最大値は以前は構成項目txn-total-size-limitによって設定されていました) は、メモリ管理モジュールによって追跡されるようになりました。単一セッションのメモリ消費がシステム変数tidb_mem_quota_queryによって定義されたしきい値に達すると、システム変数tidb_mem_oom_actionによって定義された動作がトリガーされます (デフォルトはCANCEL 、つまり操作のキャンセルです)。前方互換性を確保するために、 txn-total-size-limitデフォルト以外の値として構成されている場合でも、TiDB はトランザクションがtxn-total-size-limitによって設定されたメモリを使用できるようにします。

    TiDB v6.5.0 以降を使用している場合は、 txn-total-size-limit削除し、トランザクションのメモリ使用量に個別の制限を設定しないことを推奨します。代わりに、システム変数tidb_mem_quota_querytidb_server_memory_limitを使用してグローバルメモリを管理することで、メモリ使用の効率を向上させることができます。

    詳細についてはドキュメンテーション参照してください。

使いやすさ

  • EXPLAIN ANALYZE出力#5926 @ ホンユンヤンのTiFlash TableFullScan演算子の実行情報を精緻化する

    EXPLAIN ANALYZEステートメントは、実行プランと実行時統計を出力するために使用されます。v6.5.0 では、 TiFlash はDMFile 関連の実行情報を追加することで、 TableFullScan演算子の実行情報を改良しました。TiFlash データ スキャン ステータス情報がより直感的に表示されるようになり、 TiFlashのパフォーマンスをより簡単に分析できるようになりました。

    詳細についてはドキュメンテーション参照してください。

  • JSON形式での実行プランの出力をサポート#39261 @ ふーふー

    v6.5.0 では、TiDB は実行プランの出力形式を拡張しました。3 EXPLAINFORMAT = "tidb_json"指定することで、SQL 実行プランを JSON 形式で出力できます。この機能により、SQL デバッグ ツールや診断ツールは実行プランをより便利かつ正確に読み取ることができるため、SQL 診断やチューニングの使いやすさが向上します。

    詳細についてはドキュメンテーション参照してください。

MySQL 互換性

  • 高性能かつグローバルに単調なAUTO_INCREMENT列属性 (GA) #38442 @ 天菜まおをサポート

    v6.4.0 以降、TiDB はAUTO_INCREMENT MySQL 互換モードを実験的機能として導入しました。このモードでは、すべての TiDB インスタンスで ID が単調に増加するようにする集中型の自動増分 ID 割り当てサービスが導入されます。この機能により、自動増分 ID によるクエリ結果の並べ替えが容易になります。v6.5.0 では、この機能が GA になります。この機能を使用するテーブルの挿入 TPS は 20,000 を超えると予想され、この機能は単一のテーブルとクラスター全体の書き込みスループットを向上させるためのエラスティック スケーリングをサポートします。MySQL 互換モードを使用するには、テーブルの作成時にAUTO_ID_CACHEから1設定する必要があります。次に例を示します。

    CREATE TABLE t(a int AUTO_INCREMENT key) AUTO_ID_CACHE 1;

    詳細についてはドキュメンテーション参照してください。

データ移行

  • gzip、snappy、zstd 圧縮形式での SQL および CSV ファイルのエクスポートとインポートをサポート#38514 @ リチュンジュ

    Dumpling は、gzip、snappy、zstd の圧縮形式で圧縮された SQL および CSV ファイルへのデータのエクスポートをサポートしています。TiDB TiDB Lightning は、これらの形式で圧縮されたファイルのインポートもサポートしています。

    これまでは、CSV ファイルや SQL ファイルを保存するために、データのエクスポートやインポートに大量のstorageスペースを用意する必要があり、storageコストが高くなっていました。この機能のリリースにより、データ ファイルを圧縮することで、storageコストを大幅に削減できます。

    詳細についてはドキュメンテーション参照してください。

  • binlog解析機能の最適化#924 @ 翻訳者

    TiDB は、移行タスクに含まれないスキーマとテーブルのbinlogイベントをフィルター処理できるため、解析の効率と安定性が向上します。このポリシーは、v6.5.0 ではデフォルトで有効になります。追加の構成は必要ありません。

    以前は、少数のテーブルのみが移行された場合でも、上流のbinlogファイル全体を解析する必要がありました。移行する必要のないbinlogファイル内のテーブルのbinlogイベントも解析する必要があり、効率的ではありませんでした。一方、これらのbinlogイベントが解析をサポートしていない場合、タスクは失敗します。移行タスク内のテーブルのbinlogイベントのみを解析することで、 binlog解析の効率が大幅に向上し、タスクの安定性が向上します。

  • TiDB Lightningのディスク クォータは GA #446 @ ブチュイトウデゴウです

    TiDB Lightningのディスク クォータを設定できます。ディスク クォータが十分でない場合、 TiDB Lightning はソース データの読み取りと一時ファイルの書き込みを停止します。代わりに、まずソートされたキーと値を TiKV に書き込み、その後TiDB Lightning がローカルの一時ファイルを削除した後にインポート プロセスを続行します。

    以前は、 TiDB Lightning が物理モードを使用してデータをインポートすると、生データのエンコード、並べ替え、分割のためにローカル ディスクに大量の一時ファイルが作成されていました。ローカル ディスクの容量が不足すると、 TiDB Lightning はファイルへの書き込みに失敗したためにエラーで終了していました。この機能により、 TiDB Lightningタスクはローカル ディスクの上書きを回避できます。

    詳細についてはドキュメンテーション参照してください。

  • DM における継続的なデータ検証は GA #4426 @ D3ハンターです

    アップストリーム データベースからダウンストリーム データベースに増分データを移行するプロセスでは、データ フローによってエラーやデータ損失が発生する可能性がわずかにあります。クレジットや証券ビジネスなど、強力なデータ整合性が求められるシナリオでは、移行後にデータに対してフル ボリューム チェックサムを実行して、データの整合性を確保できます。ただし、一部の増分レプリケーション シナリオでは、アップストリームとダウンストリームのデータが絶えず変化しているため、アップストリームとダウンストリームの書き込みは継続的かつ中断されず、すべてのデータに対して整合性チェックを実行することが困難です。

    以前は、完全なデータを検証するために業務を中断する必要があり、業務に影響が出ていました。この機能により、業務を中断することなく増分データ検証を実行できるようになりました。

    詳細についてはドキュメンテーション参照してください。

TiDBデータ共有サブスクリプション

  • TiCDC は変更されたログをstorageシンクに複製することをサポートしています (実験的) #6797 @ 趙新宇

    TiCDC は、Amazon S3、Azure Blob Storage、NFS、およびその他の S3 互換storageサービスへの変更ログの複製をサポートしています。クラウドstorageは価格が手頃で使いやすいです。Kafka を使用していない場合は、storageシンクを使用できます。TiCDC は変更されたログをファイルに保存し、それをstorageシステムに送信します。storageシステムから、コンシューマー プログラムは新しく生成された変更ログ ファイルを定期的に読み取ります。

    storageシンクは、canal-json 形式と CSV 形式の変更ログをサポートします。詳細については、 ドキュメンテーションを参照してください。

  • TiCDCは2つのクラスター間の双方向レプリケーションをサポートします#38587 @ 雄吉偉 @ アズドンメン

    TiCDC は、2 つの TiDB クラスター間の双方向レプリケーションをサポートします。アプリケーション用に地理的に分散された複数のアクティブなデータ センターを構築する必要がある場合は、この機能をソリューションとして使用できます。1 つの TiDB クラスターから別の TiDB クラスターへの TiCDC 変更フィードにbdr-mode = trueパラメータを構成することで、2 つの TiDB クラスター間の双方向データ レプリケーションを実現できます。

    詳細についてはドキュメンテーション参照してください。

  • TiCDC は TLS のオンライン#7908 @ チャールズ・チュン96更新をサポートします

    データベース システムのセキュリティを維持するには、システムで使用される証明書の有効期限ポリシーを設定する必要があります。有効期限が切れると、システムは新しい証明書を必要とします。TiCDC v6.5.0 は、TLS 証明書のオンライン更新をサポートしています。レプリケーション タスクを中断することなく、TiCDC は手動で介入することなく、証明書を自動的に検出して更新できます。

  • TiCDCのパフォーマンスが大幅に向上#7540 #7478 #7532 @ スドジ @ 3エースショーハンド

    TiDB クラスターのテスト シナリオでは、TiCDC のパフォーマンスが大幅に向上しました。具体的には、シナリオKafka へのデータの複製では、単一の TiCDC が処理できる行変更の最大数は 30K 行/秒に達し、レプリケーションのレイテンシーは10 秒に短縮されました。TiKV および TiCDC のローリング アップグレード中でも、レプリケーションのレイテンシーは30 秒未満です。

    災害復旧 (DR) シナリオでは、TiCDC の再実行ログと同期ポイントを有効にすると、TiCDC スループットを 4000 行/秒から 35000 行/秒に向上でき、レプリケーションのレイテンシーを2 秒に制限できます。

バックアップと復元

  • TiDB バックアップ & リストアはスナップショット チェックポイント バックアップ#38647 @ リーヴルスをサポートします

    TiDB スナップショット バックアップは、チェックポイントからのバックアップの再開をサポートします。バックアップと復元 (BR) で回復可能なエラーが発生すると、バックアップが再試行されます。ただし、再試行が複数回失敗すると、 BRは終了します。チェックポイント バックアップ機能により、数十分のネットワーク障害など、回復可能な障害の再試行が長くなります。

    BR終了後 1 時間以内にシステムを障害から回復しない場合、バックアップ対象のスナップショット データが GC メカニズムによってリサイクルされ、バックアップが失敗する可能性があることに注意してください。詳細については、 ドキュメンテーションを参照してください。

  • PITRのパフォーマンスがジョッカウで著しく向上

    ログ復元ステージでは、1 つの TiKV の復元速度は 9 MiB/s に達し、これは以前より 50% 高速です。復元速度はスケーラブルで、DR シナリオの RTO は大幅に短縮されます。DR シナリオの RPO は 5 分と短くなります。通常のクラスター運用および保守 (OM) では、たとえばローリング アップグレードが実行されるか、1 つの TiKV のみがダウンすると、RPO は 5 分になります。

  • TiKV- BR GA: RawKV #67 @ ピンギュ @ ハオジンミンのバックアップと復元をサポート

    TiKV- BR は、TiKV クラスターで使用されるバックアップおよび復元ツールです。TiKV と PD は、TiDB なしで使用すると KV データベースを構成でき、これを RawKV と呼びます。TiKV- BR は、RawKV を使用する製品のデータ バックアップと復元をサポートします。TiKV- BR は、TiKV クラスターのapi-version API V1からAPI V2にアップグレードすることもできます。

    詳細についてはドキュメンテーション参照してください。

互換性の変更

システム変数

変数名タイプを変更説明
tidb_enable_amend_pessimistic_txn非推奨v6.5.0 以降では、この変数は非推奨となり、TiDB はInformation schema is changedエラーを回避するためにデフォルトでメタデータロック機能を使用します。
tidb_enable_outer_join_reorder修正済みさらにテストを行った後、デフォルト値をOFFからONに変更します。つまり、 結合したテーブルの再配置アルゴリズムの Outer Join のサポートがデフォルトで有効になります。
tidb_cost_model_version修正済みさらにテストを行った後、デフォルト値を1から2に変更します。つまり、デフォルトでは、インデックス選択と演算子選択にコスト モデル バージョン 2 が使用されることになります。
tidb_enable_gc_aware_memory_track修正済みデフォルト値をONからOFFに変更します。GC 対応メモリトラックはテストで不正確であることが判明し、追跡されるメモリサイズが大きくなりすぎるため、メモリトラックは無効になっています。また、 Golang 1.19 では、GC 対応メモリトラックによって追跡されるメモリは、全体のメモリに大きな影響を与えません。
tidb_enable_metadata_lock修正済みさらにテストを行った後、デフォルト値をOFFからONに変更します。つまり、メタデータ ロック機能はデフォルトで有効になります。
tidb_enable_tiflash_read_for_write_stmt修正済みv6.5.0 から有効になります。 INSERTDELETE 、およびUPDATEを含む SQL ステートメントの読み取り操作をTiFlashにプッシュダウンできるかどうかを制御します。デフォルト値はOFFです。
tidb_ddl_enable_fast_reorg修正済みさらにテストを行った後、デフォルト値をOFFからONに変更します。つまり、 ADD INDEXCREATE INDEXの加速がデフォルトで有効になります。
tidb_mem_quota_query修正済みTiDB v6.5.0 より前のバージョンでは、この変数はクエリのメモリクォータのしきい値を設定するために使用されます。TiDB v6.5.0 以降のバージョンでは、DML ステートメントのメモリをより正確に制御するために、この変数はセッションのメモリクォータのしきい値を設定するために使用されます。
tidb_replica_read修正済みv6.5.0 以降では、TiDB ノード間の負荷分散を最適化するために、この変数がclosest-adaptiveに設定され、読み取り要求の推定結果がtidb_adaptive_closest_read_threshold以上の場合、 closest-adaptive構成が有効になる TiDB ノードの数が各アベイラビリティーゾーンで制限されます。この数は、TiDB ノードが最も少ないアベイラビリティーゾーンの TiDB ノードの数と常に同じになり、他の TiDB ノードは自動的にリーダー レプリカから読み取ります。
tidb_server_memory_limit修正済みデフォルト値を0から80%に変更します。TiDB グローバルメモリ制御が GA になると、このデフォルト値の変更により、メモリ制御がデフォルトで有効になり、TiDB インスタンスのメモリ制限がデフォルトで合計メモリの 80% に設定されます。
default_password_lifetime新しく追加されたパスワードの自動有効期限のグローバル ポリシーを設定し、ユーザーにパスワードを定期的に変更するよう要求します。デフォルト値0 、パスワードが期限切れにならないことを示します。
disconnect_on_expired_password新しく追加されたパスワードの有効期限が切れたときに TiDB がクライアント接続を切断するかどうかを示します。この変数は読み取り専用です。
password_history新しく追加されたこの変数は、パスワード変更回数に基づいて TiDB がパスワードの再利用を制限できるようにするパスワード再利用ポリシーを確立するために使用されます。デフォルト値0 、パスワード変更回数に基づくパスワード再利用ポリシーを無効にすることを意味します。
password_reuse_interval新しく追加されたこの変数は、経過時間に基づいて TiDB がパスワードの再利用を制限できるようにするパスワード再利用ポリシーを確立するために使用されます。デフォルト値0 、経過時間に基づくパスワード再利用ポリシーを無効にすることを意味します。
tidb_auto_build_stats_concurrency新しく追加されたこの変数は、統計の自動更新を実行する同時実行性を設定するために使用されます。デフォルト値は1です。
tidb_cdc_write_source新しく追加されたこの変数が 0 以外の値に設定されている場合、このセッションで書き込まれたデータは TiCDC によって書き込まれたものと見なされます。この変数は TiCDC によってのみ変更できます。いかなる場合でも、この変数を手動で変更しないでください。
tidb_index_merge_intersection_concurrency新しく追加されたインデックス マージが実行する交差操作の最大同時実行性を設定します。これは、TiDB が動的プルーニング モードでパーティション テーブルにアクセスする場合にのみ有効です。
tidb_source_id新しく追加されたこの変数は、 双方向レプリケーションクラスター内の異なるクラスター ID を構成するために使用されます。
tidb_sysproc_scan_concurrency新しく追加されたこの変数は、TiDB が内部 SQL ステートメント (統計の自動更新など) を実行するときに実行されるスキャン操作の同時実行性を設定するために使用されます。デフォルト値は1です。
tidb_ttl_delete_batch_size新しく追加されたこの変数は、TTL ジョブ内の単一DELETEトランザクションで削除できる行の最大数を設定するために使用されます。
tidb_ttl_delete_rate_limit新しく追加されたこの変数は、TTL ジョブ内の単一ノードで 1 秒あたりに許可されるDELETEステートメントの最大数を制限するために使用されます。この変数が0に設定されている場合、制限は適用されません。
tidb_ttl_delete_worker_count新しく追加されたこの変数は、各 TiDB ノード上の TTL ジョブの最大同時実行数を設定するために使用されます。
tidb_ttl_job_enable新しく追加されたこの変数は、TTL ジョブを有効にするかどうかを制御するために使用されます。 OFFに設定すると、TTL 属性を持つすべてのテーブルで期限切れのデータのクリーンアップが自動的に停止されます。
tidb_ttl_job_run_interval新しく追加されたこの変数は、バックグラウンドでの TTL ジョブのスケジュール間隔を制御するために使用されます。たとえば、現在の値が1h0m0sに設定されている場合、TTL 属性を持つ各テーブルは、期限切れのデータを 1 時間ごとにクリーンアップします。
tidb_ttl_job_schedule_window_start_time新しく追加されたこの変数は、バックグラウンドでの TTL ジョブのスケジュール ウィンドウの開始時間を制御するために使用されます。この変数の値を変更する場合、ウィンドウが小さいと期限切れのデータのクリーンアップが失敗する可能性があるので注意してください。
tidb_ttl_job_schedule_window_end_time新しく追加されたこの変数は、バックグラウンドでの TTL ジョブのスケジュール ウィンドウの終了時間を制御するために使用されます。この変数の値を変更する場合、ウィンドウが小さいと期限切れのデータのクリーンアップが失敗する可能性があるので注意してください。
tidb_ttl_scan_batch_size新しく追加されたこの変数は、TTL ジョブで期限切れのデータをスキャンするために使用されるSELECTつのステートメントのそれぞれLIMIT値を設定するために使用されます。
tidb_ttl_scan_worker_count新しく追加されたこの変数は、各 TiDB ノード上の TTL スキャン ジョブの最大同時実行数を設定するために使用されます。
validate_password.check_user_name新しく追加されたパスワードの複雑さのチェックにおけるチェック項目。パスワードがユーザー名と一致するかどうかをチェックします。この変数はvalidate_password.enableが有効になっている場合にのみ有効になります。デフォルト値はONです。
validate_password.dictionary新しく追加されたパスワードの複雑さチェックのチェック項目。パスワードが辞書内のいずれかの単語と一致するかどうかをチェックします。この変数は、 validate_password.enableが有効で、 validate_password.policy2 (STRONG) に設定されている場合にのみ有効になります。デフォルト値は""です。
validate_password.enable新しく追加されたこの変数は、パスワードの複雑さのチェックを実行するかどうかを制御します。この変数をONに設定すると、パスワードを設定するときに TiDB はパスワードの複雑さのチェックを実行します。デフォルト値はOFFです。
validate_password.length新しく追加されたパスワードの複雑さのチェックにおけるチェック項目。パスワードの長さが十分かどうかをチェックします。デフォルトでは、パスワードの最小長は8です。この変数はvalidate_password.enableが有効になっている場合にのみ有効になります。
validate_password.mixed_case_count新しく追加されたパスワードの複雑さチェックのチェック項目。パスワードに十分な大文字と小文字が含まれているかどうかをチェックします。この変数は、 validate_password.enableが有効で、 validate_password.policy1 (MEDIUM) 以上に設定されている場合にのみ有効になります。デフォルト値は1です。
validate_password.number_count新しく追加されたパスワードの複雑さチェックのチェック項目。パスワードに十分な数字が含まれているかどうかをチェックします。この変数は、 validate_password.enableが有効で、 validate_password.policy1 (MEDIUM) 以上に設定されている場合にのみ有効になります。デフォルト値は1です。
validate_password.policy新しく追加されたこの変数は、パスワードの複雑さのチェックのポリシーを制御します。値は01 、または2 (LOW、MEDIUM、または STRONG に対応) です。この変数は、 validate_password.enableが有効な場合にのみ有効になります。デフォルト値は1です。
validate_password.special_char_count新しく追加されたパスワードの複雑さチェックのチェック項目。パスワードに十分な特殊文字が含まれているかどうかをチェックします。この変数は、 validate_password.enableが有効で、 validate_password.policy1 (MEDIUM) 以上に設定されている場合にのみ有効になります。デフォルト値は1です。

コンフィグレーションファイルのパラメータ

コンフィグレーションファイルコンフィグレーションパラメータタイプを変更説明
ティビserver-memory-quota非推奨v6.5.0 以降では、この構成項目は非推奨です。代わりに、システム変数tidb_server_memory_limitを使用してメモリをグローバルに管理します。
ティビdisconnect-on-expired-password新しく追加されたパスワードの有効期限が切れたときに TiDB がクライアント接続を切断するかどうかを決定します。デフォルト値はtrueで、パスワードの有効期限が切れるとクライアント接続が切断されることを意味します。
ティクヴraw-min-ts-outlier-threshold削除されましたこの構成項目はバージョン 6.4.0 で非推奨となり、バージョン 6.5.0 で削除されました。
ティクヴcdc.min-ts-interval修正済みCDCレイテンシーを削減するために、デフォルト値が1sから200msに変更されます。
ティクヴmemory-use-ratio新しく追加されたPITR ログリカバリにおける使用可能なメモリとシステムメモリの合計の比率を示します。
ティCDCsink.terminator新しく追加された2 つのデータ変更イベントを区切るために使用される行ターミネータを示します。デフォルトでは値は空で、 \r\n使用されることを意味します。
ティCDCsink.date-separator新しく追加されたファイル ディレクトリの日付区切り文字の種類を示します。値のオプションはnoneyearmonth 、およびdayです。 noneデフォルト値であり、日付が区切られないことを意味します。
ティCDCsink.enable-partition-separator新しく追加されたパーティションを分離文字列として使用するかどうかを指定します。デフォルト値はfalseで、テーブル内のパーティションが個別のディレクトリに保存されないことを意味します。
ティCDCsink.csv.delimiter新しく追加されたフィールド間の区切り文字を示します。値は ASCII 文字である必要があり、デフォルトは,です。
ティCDCsink.csv.quote新しく追加されたフィールドを囲む引用符。デフォルト値は"です。値が空の場合、引用符は使用されません。
ティCDCsink.csv.null新しく追加されたCSV 列が null の場合に表示される文字を指定します。デフォルト値は\Nです。
ティCDCsink.csv.include-commit-ts新しく追加されたCSV 行に commit-ts を含めるかどうかを指定します。デフォルト値はfalseです。

その他

  • v6.5.0 以降、 mysql.userテーブルにPassword_reuse_historyPassword_reuse_timeという 2 つの新しい列が追加されます。
  • v6.5.0 以降では、 インデックス加速機能がデフォルトで有効になっています。この機能は1 つのALTER TABLEステートメントで複数の列またはインデックスを変更すると完全に互換性がありません。インデックス アクセラレーションを使用して一意のインデックスを追加する場合は、同じステートメント内の他の列またはインデックスを変更しないようにする必要があります。この機能はPITR (ポイントインタイムリカバリ)とも互換性がありません。インデックス アクセラレーション機能を使用する場合は、バックグラウンドで PITR バックアップ タスクが実行されていないことを確認する必要があります。そうしないと、予期しない結果が発生する可能性があります。詳細については、 ドキュメンテーションを参照してください。

非推奨の機能

v6.5.0 以降では、v4.0.7 で導入されたAMEND TRANSACTIONメカニズムは非推奨となり、 メタデータロックに置き換えられます。

改善点

  • ティビ

    • BIT目とCHAR列目については、 INFORMATION_SCHEMA.COLUMNSの結果をMySQL #25472 @ ホーキングレイと一致させる
    • TiFlash MPPモードのTiFlashノードのTiDBプローブメカニズムを最適化し、ノードが異常な場合のパフォーマンスへの影響を軽減します#39686 @ ハッカー
  • ティクヴ

    • ディスク容量の枯渇を避けるため、十分な容量がない場合はRaft Engineへの書き込みを停止します#13642 @ 嘉陽鄭
    • json_valid関数を TiKV #13571 @ 李鎮歓にプッシュダウンするサポート
    • 1 回のバックアップ要求で複数の範囲のデータのバックアップをサポート#13701 @ リーヴルス
    • rusoto ライブラリ#13751 @ 3ポインターを更新して、AWS のアジア太平洋地域 (ap-southeast-3) へのデータのバックアップをサポート
    • 悲観的トランザクション競合を減らす#13298 @ ミョンケミンタ
    • 外部storageオブジェクトをキャッシュすることでリカバリパフォーマンスを向上#13798 @ ユジュンセン
    • 専用スレッドで CheckLeader を実行して、TiCDC レプリケーションのレイテンシー#13774 @ 金星の上を削減します。
    • チェックポイント#13824 @ ユジュンセンのプル モデルをサポート
    • クロスビームチャネル#13815 @ スティクナーフを更新することで、送信側での回転の問題を回避します。
    • TiKV #13849 @ 翻訳でのバッチコプロセッサータスク処理をサポート
    • TiKVにリージョン#13648 @ リクササシネーターを起動するように通知することで、障害回復の待ち時間を短縮します。
    • コード最適化#13827 @ ビジージェイによりメモリ使用量の要求サイズを削減
    • コードの拡張性を向上させるためにRaft拡張機能を導入する#13827 @ ビジージェイ
    • tikv-ctl を使用して、特定のキー範囲#13760 @ ヒューシャープに含まれるリージョンを照会する機能をサポートします。
    • 更新されないが継続的にロックされている行の読み取りおよび書き込みパフォーマンスを向上#13694 @ スティクナーフ
  • PD

    • ロックの粒度を最適化してロックの競合を減らし、高同時実行性におけるハートビートの処理能力を向上させる#5586 @ rleungx
    • 大規模クラスタのスケジューラパフォーマンスを最適化し、スケジューリングポリシーの本番を高速化します#5473 @ バッファフライ
    • リージョン#5606 @ rleungxの読み込み速度を向上
    • リージョンハートビート#5648 @ rleungxの最適化された処理により不要なオーバーヘッドを削減
    • 墓石ストア#5348 @ ノルーシュを自動的にガベージコレクションする機能を追加します
  • TiFlash

    • SQL側でバッチ処理が行われないシナリオでの書き込みパフォーマンスの向上#6404 @ リデズ
    • explain analyze出力#5926 @ ホンユンヤンに TableFullScan の詳細を追加します
  • ツール

    • TiDBダッシュボード

      • 低速クエリ ページに 3 つの新しいフィールドを追加します: 「準備済みですか?」、「プランはキャッシュからですか?」、「プランはバインディングからですか?」 #1451 @ シュギット
    • バックアップと復元 (BR)

      • バックアップログデータの消去プロセス中のBRメモリ使用量を最適化#38869 @ リーヴルス
      • 復元プロセス中の PD リーダー切り替えによって発生する復元失敗の問題を修正#36910 @ モクイシュル28
      • ログバックアップ#13867 @ ユジュンセンで OpenSSL プロトコルを使用することにより TLS 互換性を向上
    • ティCDC

    • TiDB データ移行 (DM)

      • ブロックリスト#7622 @ GMHDBJD内のテーブルのデータを解析しないことで、DM のデータ複製パフォーマンスが向上します。
      • 非同期書き込みとバッチ書き込み#7580 @ GMHDBJDを使用してDMリレーの書き込み効率を向上
      • DM事前チェック#7621 @ ブチュイトウデゴウのエラーメッセージを最適化
      • 古いMySQLバージョン#5017 @ 翻訳者SHOW SLAVE HOSTSの互換性を改善

バグの修正

  • ティビ

    • 場合によっては発生するチャンク再利用機能のメモリチャンクの誤用問題を修正#38917 @ 学習を続ける20221
    • tidb_constraint_check_in_place_pessimisticの内部セッションがグローバル設定#38766 @ エキシウムの影響を受ける可能性がある問題を修正
    • AUTO_INCREMENT列がCHECK制約#38894 @ ヤンケオで動作しない問題を修正
    • INSERT IGNORE INTOを使用してSTRING型のデータをSMALLINT型の自動増分列に挿入すると、エラー#38483 @ ホーキングレイが発生する問題を修正しました。
    • パーティションテーブル#38932 @ ミョンスのパーティション列の名前を変更する操作で NULL ポインター エラーが発生する問題を修正しました。
    • パーティションテーブルのパーティション列を変更すると DDL がハングする問題を修正#38530 @ ミョンス
    • v4.0.16からv6.4.0 #38980 @ タンジェンタにアップグレードした後にADMIN SHOW JOB操作がパニックになる問題を修正
    • tidb_decode_key関数がパーティションテーブル#39304 @ 定義2014のエンコーディングを正しく解析できない問題を修正
    • ログローテーション中に gRPC エラーログが正しいログファイルにリダイレクトされない問題を修正#38941 @ xhebox
    • TiKV が読み取りエンジンとして構成されていない場合に、TiDB がBEGIN; SELECT... FOR UPDATE;ポイント クエリに対して予期しない実行プランを生成する問題を修正#39344 @ イサール
    • 誤ってStreamAgg TiFlashに押し下げると、間違った結果#39266 @ 修正DBが発生する問題を修正しました。
  • ティクヴ

    • Raft Enginectl #11119 @ タボキのエラーを修正
    • tikv-ctl #13515 @ グオシアンCNcompact raftコマンドを実行するときに発生するGet raft db is not allowedエラーを修正
    • TLS が有効な場合にログバックアップが機能しない問題を修正#13867 @ ユジュンセン
    • ジオメトリフィールドタイプ#13651 @ ドヴェーデンのサポート問題を修正
    • 新しい照合順序が有効になっていない場合、 LIKE演算子の_非 ASCII 文字と一致しない問題を修正#13769 @ ヤンケオ
    • reset-to-versionコマンド#13829 @ タボキを実行すると tikv-ctl が予期せず終了する問題を修正
  • PD

    • balance-hot-region-scheduler構成が変更されていない場合は#5701 @ ハンダンDMが保持されない問題を修正
    • アップグレードプロセス中にアップグレード前の構成が保持rank-formula-versionれない問題を修正#5698 @ ハンダンDM
  • TiFlash

  • ツール

    • バックアップと復元 (BR)

      • BR がログバックアップデータを削除するときに、削除すべきでないデータを誤って削除してしまう問題を修正#38939 @ リーヴルス
      • データベースまたはテーブル#39150 @ モクイシュル28の照合に古いフレームワークを使用すると復元タスクが失敗する問題を修正しました
      • Alibaba Cloud と Huawei Cloud が Amazon S3storageと完全に互換性がないためバックアップが失敗する問題を修正#39545 @ 3ポインター
    • ティCDC

      • PDリーダーが#7470 @ 沢民州でクラッシュするとTiCDCが停止する問題を修正
      • 最初に DDL ステートメントを実行し、次に変更フィード#7682 @ アズドンメンを一時停止して再開するシナリオで発生したデータ損失を修正しました。
      • TiFlash #7744 @ 金星の上以降のバージョンがある場合に TiCDC が誤ってエラーを報告する問題を修正しました
      • ダウンストリームネットワークが利用できない場合にシンクコンポーネントが停止する問題を修正#7706 @ ヒック
      • ユーザーがレプリケーションタスクをすばやく削除し、同じタスク名で別のタスクを作成するとデータが失われる問題を修正#7657 @ 金星の上
    • TiDB データ移行 (DM)

      • アップストリームデータベースがGTIDモードを有効にしているが、データ#7037 @ りゅうめんぎゃがない場合にtask-mode:allタスクを開始できない問題を修正しました。
      • 既存のワーカーが終了する前に新しい DM ワーカーがスケジュールされると、データが複数回複製される問題を修正#7658 @ GMHDBJD
      • アップストリームデータベースが正規表現を使用して権限#7645 @ ランス6716を付与する場合に DM 事前チェックに合格しない問題を修正しました
    • TiDB Lightning

      • TiDB Lightning が巨大なソース データ ファイル#39331 @ ダシュンをインポートするときに発生するメモリリークの問題を修正しました
      • TiDB Lightning が並列#39476 @ ダシュンでデータをインポートするときに競合を正しく検出できない問題を修正しました

寄稿者

TiDB コミュニティの以下の貢献者に感謝いたします。

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