TiDB 6.5.0 リリースノート

発売日:2022年12月29日

TiDB バージョン: 6.5.0

クイック アクセス: クイックスタート | 本番展開 | インストール パッケージ

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

以前の LTS 6.1.0 と比較して、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 for インデックスマージで接続された式をサポートすることで、TiDB オプティマイザーを強化します。
  • JSON_EXTRACT()関数をTiFlashにプッシュ ダウンすることをサポートします。
  • パスワード コンプライアンスの監査要件を満たすパスワード管理ポリシーをサポートします。
  • TiDB LightningおよびDumpling は、 インポートおよびエクスポートの圧縮された SQL および CSV ファイルをサポートします。
  • TiDB データ移行 (DM) 継続的なデータ検証 GA になります。
  • TiDB Backup & Restore は、スナップショット チェックポイント バックアップをサポートし、 PITR復元パフォーマンスを 50% 向上させ、一般的なシナリオで RPO を 5 分まで短縮します。
  • データを Kafka に複製するの TiCDC スループットを 4000 行/秒から 35000 行/秒に改善し、レプリケーションレイテンシーを2 秒に短縮します。
  • データのライフサイクルを管理する行レベル生存時間 (TTL)を提供します (実験的)。
  • TiCDC は、Amazon S3、Azure Blob Storage、NFS (実験的) などの変更されたログをオブジェクトstorageに複製するをサポートします。

新機能

SQL

  • インデックスを追加する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 @ wjhuang2016

    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_lock OFFに設定します。

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

  • FLASHBACK CLUSTER TO TIMESTAMP (GA) #37197 #13303 @ 定義済み2014 @ bb7133 @ Jmポテト @ コナー1996 @ ヒューシャープ @ カルバンネオを使用した特定の時点へのクラスターの復元をサポート

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

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

  • INSERTREPLACEUPDATE 、およびDELETE #33485 @ エキキシウムを含む非トランザクション DML ステートメントを完全にサポート

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

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

  • サポート時間 (TTL) (実験的) #39262 @ ルクァンチャオ

    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_stmtONに設定します。この機能のINSERT INTOで指定された結果テーブルには特別な制限はなく、その結果テーブルにTiFlashレプリカを追加するかどうかは自由です。この機能の一般的な使用シナリオは次のとおりです。

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

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

  • バインド履歴の実行計画をサポート (実験的) #39199 @ fzzf678

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

    v6.5.0 では、TiDB はCREATE [GLOBAL | SESSION] BINDINGステートメントでバインド オブジェクトを拡張することにより、過去の実行計画のバインドをサポートします。 SQL 文CREATE [GLOBAL | SESSION] BINDING実行計画が変更された場合、 plan_digestの実行計画が SQL 実行履歴メモリテーブル (たとえば、 statements_summary )。この機能により、実行計画の変更の問題を処理するプロセスが簡素化され、メンテナンス効率が向上します。

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

Security

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

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

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

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

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

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

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

  • パスワード再利用ポリシー#38937 @ キープラーニング20221をサポート

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

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

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

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

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

可観測性

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

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

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

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

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

  • パフォーマンス概要ダッシュボードにTiFlashおよび CDC (Change Data Capture) パネルが追加されました#39230 @ データベース ID

    v6.1.0 以降、TiDB は Grafana に Performance Overview ダッシュボードを導入しました。これは、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 のインデックス マージは、クエリ フィルター条件のより一般的な組み合わせをカバーできるようになり、ユニオン ( OR ) 関係に限定されなくなりました。現在の v6.5.0 バージョンは、オプティマイザーによって自動的に選択されるORの条件でのインデックス マージのみをサポートします。 AND条件のインデックス マージを有効にするには、 USE_INDEX_MERGEヒントを使用する必要があります。

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

  • 次の JSON関数のTiFlash #39458 @ イビン87へのプッシュ ダウンをサポート

    • ->
    • ->>
    • JSON_EXTRACT()

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

  • 次の文字列関数のTiFlash #6115 @ xzhangxian1008へのプッシュ ダウンをサポート

    • 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 にプッシュ ダウンすることをサポートしています。

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

    TiDB v6.2.0 では、実験的機能としてコスト モデル バージョン 2が導入されています。このモデルは、より正確なコスト見積もり方法を使用して、オプティマイザが最適な実行計画を選択できるようにします。特にTiFlashが展開されている場合、Cost Model バージョン 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 @ wshwsh12になりました

    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_queryおよびtidb_server_memory_limitを使用してグローバルメモリを管理します。これにより、メモリの使用効率が向上します。

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

使いやすさ

  • EXPLAIN ANALYZE出力#5926 @ ホンユニャンのTiFlash TableFullScanオペレーターの実行情報を絞り込みます

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

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

  • JSON 形式での実行計画の出力をサポート#39261 @ fzzf678

    v6.5.0 では、TiDB は実行計画の出力形式を拡張します。 EXPLAIN文にFORMAT = "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_CACHE1を設定する必要があります。次に例を示します。

    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 Lightning は、これらの形式の圧縮ファイルのインポートもサポートしています。

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

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

  • binlog解析機能の最適化#924 @ gmhdbjd

    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 changefeeds のbdr-mode = trueパラメーターを構成することにより、2 つの TiDB クラスター間で双方向のデータ レプリケーションを実現できます。

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

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

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

  • TiCDC の性能が大幅に向上#7540 #7478 #7532 @ スドジ @3AceShowHand

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

    ディザスター リカバリー (DR) シナリオでは、TiCDC REDO ログと同期ポイントが有効になっている場合、 データを Kafka に複製するの TiCDC スループットを 4000 行/秒から 35000 行/秒に向上させることができ、レプリケーションレイテンシーを2 秒に制限することができます。

バックアップと復元

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

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

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

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

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

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

    TiKV- BR は、TiKV クラスターで使用されるバックアップおよび復元ツールです。 TiKV と PD は、RawKV と呼ばれる TiDB なしで使用する場合、KV データベースを構成できます。 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に変更します。これは、 結合したテーブルの再配置アルゴリズムの外部結合のサポートがデフォルトで有効になっていることを意味します。
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 から適用されます。 INSERT 、およびUPDATE DELETE含む 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です。

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

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

その他

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

非推奨の機能

v6.5.0 以降、v4.0.7 で導入されたAMEND TRANSACTIONメカニズムは廃止され、 メタデータ ロックに置き換えられました。

改良点

  • TiDB

    • BITCHAR列の場合、 INFORMATION_SCHEMA.COLUMNSの結果を MySQL #25472 @ ホーキングレイと一致させる
    • ノードが異常な場合のパフォーマンスへの影響を軽減するために、 TiFlash MPP モードでTiFlashノードの TiDB プローブ メカニズムを最適化します#39686 @ ハッカーショーン
  • TiKV

    • ディスクスペースを使い果たすのを避けるために十分なスペースがない場合、 Raft Engineへの書き込みを停止します#13642 @ 嘉陽正
    • json_valid機能をTiKV #13571 @ 立振歓に押し下げることをサポート
    • 1 回のバックアップ要求で複数範囲のデータのバックアップをサポート#13701 @ レヴルス
    • rusoto ライブラリ#13751 @ 3ポインターを更新して、AWS のアジア パシフィック リージョン (ap-southeast-3) へのデータのバックアップをサポートします。
    • 悲観的トランザクション競合を減らす#13298 @ みょんけみんた
    • 外部storageオブジェクト#13798 @ ユジュンセンをキャッシュすることにより、回復のパフォーマンスを向上させます
    • 専用スレッドで CheckLeader を実行して、TiCDC レプリケーションのレイテンシーを短縮します#13774 @ 大静脈
    • チェックポイント#13824 @ ユジュンセンのプル モデルをサポート
    • crossbeam-channel #13815 @ スティックナーフを更新することにより、送信側でのスピンの問題を回避します
    • TiKV #13849 @ cfzjywxkでコプロセッサータスク処理をサポート
    • TiKV にリージョン#13648 @ Lykxサシネーターをウェイクアップするように通知することで、障害回復の待ち時間を短縮します
    • コードの最適化#13827 @ ビジージェイにより、要求されたメモリ使用量のサイズを減らします
    • Raft拡張機能を導入してコードの拡張性を向上させる#13827 @ ビジージェイ
    • tikv-ctl を使用して、特定のキー範囲に含まれるリージョンを照会するサポート#13760 @HuSharp
    • 更新されていないが継続的にロックされている行の読み取りおよび書き込みパフォーマンスを改善する#13694 @sticnarf
  • PD

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

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

    • TiDB ダッシュボード

      • スロー クエリ ページに次の 3 つの新しいフィールドを追加します。 #1451 @ shhdgit
    • バックアップと復元 (BR)

      • バックアップ ログ データの消去プロセス中のBRメモリ使用量を最適化する#38869 @ レヴルス
      • 復元プロセス中の PD リーダー スイッチによって引き起こされる復元失敗の問題を修正します#36910 @ MoCuishle28
      • ログ バックアップ#13867 @ ユジュンセンで OpenSSL プロトコルを使用して TLS の互換性を向上させる
    • TiCDC

    • TiDB データ移行 (DM)

      • ブロック リスト#7622 @ GMHDBJD内のテーブルのデータを解析しないことで、DM のデータ レプリケーション パフォーマンスを向上させます。
      • 非同期書き込みと一括書き込み#7580 @ GMHDBJDでDM中継の書き込み効率アップ
      • DM precheck #7621 @ ぶちゅとでごうのエラー メッセージを最適化する
      • 古い MySQL バージョン#5017 @ lyzx2001に対するSHOW SLAVE HOSTSの互換性を改善します。

バグの修正

  • TiDB

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

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

    • #5701 @ フンドゥンDMを変更しないとbalance-hot-region-scheduler構成が保持されない問題を修正
    • rank-formula-versionアップグレード プロセス中にアップグレード前の構成を保持しないという問題を修正します#5698 @ フンドゥンDM
  • TiFlash

  • ツール

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

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

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

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

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

寄稿者

TiDB コミュニティの次の貢献者に感謝します。

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