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-DMR 、 6.3.0-DMR 、および6.4.0-DMRでリリースされた新機能、改善、バグ修正も含まれています。
- 6.1.0 LTS バージョンと 6.5.0 LTS バージョン間の変更点の完全なリストを取得するには、このリリース ノートに加えて、 6.2.0-DMR リリースノート 、 6.3.0-DMR リリースノート 、および6.4.0-DMR リリースノートも参照してください。
- 6.1.0 LTS バージョンと 6.5.0 LTS バージョンの主な機能を簡単に比較するには、 TiDBの特徴の
v6.1
とv6.5
列を確認します。
- インデックス加速度機能が一般公開 (GA) され、インデックス追加のパフォーマンスが v6.1.0 と比較して約 10 倍向上しました。
- TiDB グローバルメモリコントロールが GA になり、
tidb_server_memory_limit
を介してメモリ消費のしきい値を制御できるようになります。 - 高性能でグローバルに単調な
AUTO_INCREMENT
カラム属性が GA となり、MySQL と互換性があります。 FLASHBACK CLUSTER TO TIMESTAMP
は TiCDC および PITR と互換性があり、GA になりました。- より正確なコストモデル バージョン 2一般提供し、
AND
for インデックスのマージで接続された式をサポートすることにより、TiDB オプティマイザーを強化します。 JSON_EXTRACT()
機能のTiFlashへのプッシュダウンをサポートします。- パスワード コンプライアンスの監査要件を満たすパスワード管理ポリシーをサポートします。
- TiDB LightningおよびDumpling は、 輸入するおよび輸出するの圧縮 SQL および CSV ファイルをサポートしています。
- TiDB データ移行 (DM) 継続的なデータ検証 GA になります。
- TiDB バックアップ & リストアは、スナップショット チェックポイント バックアップをサポートし、 PITRリカバリ パフォーマンスを 50% 向上させ、一般的なシナリオでの RPO を最短 5 分に短縮します。
- TiCDC スループットKafka へのデータの複製が 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 の優先順位を調整し、古いメタデータを持つ DML がコミットされるまで進行中の DDL を待機させます。 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 の誤った操作を簡単に元に戻し、数分で元のクラスターを復元し、さまざまな時点でデータをロールバックして、データが変更された正確な時間を判断することができます。詳細については、 ドキュメンテーションを参照してください。
INSERT
、REPLACE
、UPDATE
、DELETE
#33485 @ エキシウムを含む非トランザクション DML ステートメントを完全にサポートします。大規模なデータ処理のシナリオでは、大規模なトランザクションを含む 1 つの SQL ステートメントがクラスターの安定性とパフォーマンスに悪影響を与える可能性があります。非トランザクション DML ステートメントは、内部実行のために複数の SQL ステートメントに分割された DML ステートメントです。分割ステートメントはトランザクションの原子性と分離性を損ないますが、クラスターの安定性は大幅に向上します。 TiDB は、v6.1.0 以降、非トランザクション
DELETE
ステートメントをサポートし、v6.5.0 以降、非トランザクションINSERT
、REPLACE
、および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_stmt
システム変数をON
に設定します。この機能のINSERT INTO
で指定される結果テーブルには特別な制限はなく、その結果テーブルにTiFlashレプリカを追加するかどうかは自由です。この機能の一般的な使用シナリオは次のとおりです。- TiFlashを使用して複雑な分析クエリを実行する
- TiFlashクエリ結果を再利用するか、高度な同時オンライン要求に対処します
- 入力データ サイズと比較して比較的小さい結果セットが必要です。できれば 100 MiB 未満です。
詳細については、 ドキュメンテーションを参照してください。
バインディング履歴実行プランのサポート (実験的) #39199 @ fzzf678
SQL ステートメントの場合、実行中のさまざまな要因により、オプティマイザが以前の最適な実行プランではなく新しい実行プランを選択することがあり、SQL パフォーマンスに影響が及びます。この場合、最適な実行計画がクリアされていない場合は、SQL 実行履歴に残ります。
v6.5.0 では、TiDB は
CREATE [GLOBAL | SESSION] BINDING
ステートメントのバインディング オブジェクトを拡張することにより、履歴実行プランのバインディングをサポートします。 SQL ステートメントの実行計画が変更された場合、元の実行計画が 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 ダッシュボードは、独立したポッド#1447 @ サバピンとして Kubernetes にデプロイできます。
TiDB v6.5.0 (以降) およびTiDB Operator v1.4.0 (以降) は、Kubernetes 上の独立したポッドとして TiDB ダッシュボードをデプロイすることをサポートしています。 TiDB Operatorを使用すると、このポッドの IP アドレスにアクセスして TiDB ダッシュボードを起動できます。
TiDB ダッシュボードを独立して展開すると、次の利点があります。
- TiDB ダッシュボードのコンピューティング作業は、PD ノードに負担をかけません。これにより、より安定したクラスター動作が保証されます。
- PD ノードが利用できない場合でも、ユーザーは診断のために TiDB ダッシュボードにアクセスできます。
- インターネット上の TiDB ダッシュボードへのアクセスには、PD の特権インターフェイスは必要ありません。したがって、クラスターのセキュリティ リスクが軽減されます。
詳細については、 ドキュメンテーションを参照してください。
パフォーマンス概要ダッシュボードにTiFlashおよび CDC (変更データ キャプチャ) パネルが追加されました#39230 @ DBID
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 @ イービン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 BY
やLIMIT
の並べ替え操作を 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を取得する操作を最適化します。
データ分析のシナリオでは、フィルター条件なしでテーブルの実際の行数を 1 から
COUNT(*)
まで取得するのが一般的な操作です。 v6.5.0 では、 TiFlash はCOUNT(*)
の書き換えを最適化し、行数をカウントするために最も短い列定義を持つ null 以外の列を自動的に選択します。これにより、 TiFlashの I/O 操作の数が効果的に削減され、TiFlash の実行効率が向上します。行数を取得しています。
安定性
グローバルメモリ制御機能は 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 @ ホンユニャンのTiFlashTableFullScan
オペレーターの実行情報を調整します。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_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 Lightning は、これらの形式の圧縮ファイルのインポートもサポートしています。
以前は、CSV ファイルや SQL ファイルを保存するためにデータをエクスポートまたはインポートするために大規模なstorageスペースを提供する必要があり、storageコストが高くなっていました。この機能のリリースにより、データ ファイルを圧縮することでstorageコストを大幅に削減できます。
詳細については、 ドキュメンテーションを参照してください。
TiDB は、移行タスクに含まれていないスキーマとテーブルのbinlogイベントをフィルターで除外できるため、解析の効率と安定性が向上します。このポリシーは、v6.5.0 ではデフォルトで有効になります。追加の構成は必要ありません。
以前は、少数のテーブルのみを移行する場合でも、アップストリームのbinlogファイル全体を解析する必要がありました。移行する必要のないbinlogファイル内のテーブルのbinlogイベントも解析する必要があり、効率的ではありませんでした。一方、これらのbinlogイベントが解析をサポートしていない場合、タスクは失敗します。移行タスク内のテーブルのbinlogイベントのみを解析することにより、binlogの解析効率が大幅に向上し、タスクの安定性が向上します。
TiDB Lightningのディスク クォータは GA #446 @ ブチュイトデゴウです
TiDB Lightningのディスク クォータを構成できます。十分なディスク クォータがない場合、 TiDB Lightning はソース データの読み取りと一時ファイルの書き込みを停止します。代わりに、ソートされた Key-Value を最初に 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 @ CharlesCheung96の更新をサポートします
データベース システムのセキュリティを維持するには、システムで使用される証明書の有効期限ポリシーを設定する必要があります。有効期限が過ぎると、システムには新しい証明書が必要になります。 TiCDC v6.5.0 は、TLS 証明書のオンライン更新をサポートしています。 TiCDC は、レプリケーション タスクを中断することなく、手動介入を必要とせずに証明書を自動的に検出して更新できます。
TiCDC のパフォーマンスが大幅に向上#7540 #7478 #7532 @ スドジ @ 3エースショーハンド
TiDB クラスターのテスト シナリオでは、TiCDC のパフォーマンスが大幅に向上しました。具体的には、 Kafka へのデータの複製のシナリオでは、単一の TiCDC が処理できる最大行変更は 30K 行/秒に達し、レプリケーションのレイテンシーは10 秒に短縮されます。 TiKV および TiCDC のローリング アップグレード中であっても、レプリケーションのレイテンシーは 30 秒未満です。
災害復旧 (DR) シナリオでは、TiCDC REDO ログと同期ポイントが有効になっている場合、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 なしで使用される場合、RawKV と呼ばれる 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 INDEX とCREATE 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.policy が2 (STRONG) に設定されている場合にのみ有効です。デフォルト値は"" です。 |
validate_password.enable | 新しく追加された | この変数は、パスワードの複雑さのチェックを実行するかどうかを制御します。この変数がON に設定されている場合、TiDB はパスワードの設定時にパスワードの複雑さのチェックを実行します。デフォルト値はOFF です。 |
validate_password.length | 新しく追加された | パスワード複雑度チェックのチェック項目です。パスワードの長さが十分であるかどうかをチェックします。デフォルトでは、パスワードの最小長は8 です。この変数は、 validate_password.enable が有効な場合にのみ有効になります。 |
validate_password.mixed_case_count | 新しく追加された | パスワード複雑度チェックのチェック項目です。パスワードに十分な大文字と小文字が含まれているかどうかをチェックします。この変数は、 validate_password.enable が有効で、 validate_password.policy が1 (MEDIUM) 以上に設定されている場合にのみ有効です。デフォルト値は1 です。 |
validate_password.number_count | 新たに追加されました | パスワード複雑度チェックのチェック項目です。パスワードに十分な数字が含まれているかどうかをチェックします。この変数は、 validate_password.enable が有効で、 validate_password.policy が1 (MEDIUM) 以上に設定されている場合にのみ有効です。デフォルト値は1 です。 |
validate_password.policy | 新たに追加されました | この変数は、パスワードの複雑さチェックのポリシーを制御します。値は0 、 1 、または2 (LOW、MEDIUM、または STRONG に対応) です。この変数は、 validate_password.enable が有効な場合にのみ有効になります。デフォルト値は1 です。 |
validate_password.special_char_count | 新たに追加されました | パスワード複雑度チェックのチェック項目です。パスワードに十分な特殊文字が含まれているかどうかをチェックします。この変数は、 validate_password.enable が有効で、 validate_password.policy が1 (MEDIUM) 以上に設定されている場合にのみ有効です。デフォルト値は1 です。 |
コンフィグレーションファイルのパラメータ
コンフィグレーションファイル | コンフィグレーションパラメータ | 種類の変更 | 説明 |
---|---|---|---|
TiDB | server-memory-quota | 廃止されました | v6.5.0 以降、この構成項目は非推奨になりました。代わりに、システム変数tidb_server_memory_limit を使用してメモリをグローバルに管理します。 |
TiDB | disconnect-on-expired-password | 新しく追加された | パスワードの有効期限が切れたときに、TiDB がクライアント接続を切断するかどうかを決定します。デフォルト値はtrue で、パスワードの有効期限が切れるとクライアント接続が切断されることを意味します。 |
TiKV | raw-min-ts-outlier-threshold | 削除されました | この構成項目は v6.4.0 で非推奨となり、v6.5.0 で削除されました。 |
TiKV | cdc.min-ts-interval | 修正済み | CDCレイテンシーを短縮するために、デフォルト値が1s から200ms に変更されました。 |
TiKV | memory-use-ratio | 新しく追加された | PITR ログ リカバリでの合計システムメモリに対する利用可能なメモリの比率を示します。 |
TiCDC | sink.terminator | 新しく追加された | 2 つのデータ変更イベントを区切るために使用される行ターミネータを示します。デフォルトでは値は空であり、 \r\n が使用されることを意味します。 |
TiCDC | sink.date-separator | 新しく追加された | ファイルディレクトリの日付区切り文字のタイプを示します。値のオプションはnone 、 year 、 month 、およびday です。 none はデフォルト値で、日付が区切られていないことを意味します。 |
TiCDC | sink.enable-partition-separator | 新しく追加された | パーティションを区切り文字列として使用するかどうかを指定します。デフォルト値はfalse で、テーブル内のパーティションが別のディレクトリに格納されないことを意味します。 |
TiCDC | sink.csv.delimiter | 新しく追加された | フィールド間の区切り文字を示します。値は ASCII 文字である必要があり、デフォルトは, です。 |
TiCDC | sink.csv.quote | 新しく追加された | フィールドを囲む引用符。デフォルト値は" です。値が空の場合、引用符は使用されません。 |
TiCDC | sink.csv.null | 新しく追加された | CSV列がnullの場合に表示される文字を指定します。デフォルト値は\N です。 |
TiCDC | sink.csv.include-commit-ts | 新たに追加されました | CSV 行に commit-ts を含めるかどうかを指定します。デフォルト値はfalse です。 |
その他
- v6.5.0 以降、
mysql.user
テーブルにはPassword_reuse_history
とPassword_reuse_time
という 2 つの新しい列が追加されます。 - v6.5.0 以降、 インデックス加速度機能はデフォルトで有効になります。この機能は単一の
ALTER TABLE
ステートメントで複数の列またはインデックスを変更すると完全な互換性はありません。インデックス アクセラレーションを使用して一意のインデックスを追加する場合は、同じステートメント内の他の列やインデックスを変更しないようにする必要があります。この機能はPITR (ポイントインタイムリカバリ)とも互換性がありません。インデックス アクセラレーション機能を使用する場合は、PITR バックアップ タスクがバックグラウンドで実行されていないことを確認する必要があります。そうしないと、予期しない結果が発生する可能性があります。詳細については、 ドキュメンテーションを参照してください。
廃止された機能
v6.5.0 以降、v4.0.7 で導入されたAMEND TRANSACTION
メカニズムは非推奨となり、 メタデータロックに置き換えられます。
改善点
TiDB
TiKV
- ディスクスペースの枯渇を避けるために、スペースが不十分な場合は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 @ cfzjywxkでのコプロセッサータスク処理をサポート
- TiKV にリージョン#13648 @ リククスサシネーターをウェイクアップするように通知することで、障害回復時の待ち時間を短縮します。
- コード最適化#13827 @ ビジージェイにより、要求されたメモリ使用量のサイズを削減します。
- Raft拡張機能を導入してコードの拡張性を向上させます#13827 @ ビジージェイ
- tikv-ctl を使用して、特定のキー範囲#13760 @ ヒューシャープに含まれるリージョンをクエリするサポート
- 更新されていないが継続的にロックされている行の読み取りおよび書き込みのパフォーマンスが向上しました#13694 @ スティックナーフ
PD
TiFlash
ツール
TiDB ダッシュボード
バックアップと復元 (BR)
TiCDC
- Kafka プロトコル エンコーダのパフォーマンスを向上させる#7540 #7532 #7543 @ 3エースショーハンド @ スドジ
TiDB データ移行 (DM)
バグの修正
TiDB
- 場合によって発生するチャンク再利用機能のメモリチャンクの誤用の問題を修正#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 @ ゼボックス
- TiKV が読み取りエンジン#39344 @ イーサールとして構成されていない場合、TiDB が
BEGIN; SELECT... FOR UPDATE;
ポイント クエリに対して予期しない実行プランを生成する問題を修正します。 - 誤って
StreamAgg
TiFlashに押し込むと、間違った結果#39266 @ 修正データベースが発生する問題を修正
TiKV
- Raft Engine ctl #11119 @ タボキーのエラーを修正
- tikv-ctl #13515 @ 国祥CNで
compact raft
コマンドを実行するときのGet raft db is not allowed
エラーを修正 - TLS が有効になっている場合にログ バックアップが機能しない問題を修正#13867 @ ユジュンセン
- ジオメトリ フィールド タイプ#13651 @ ドヴィーデンのサポートの問題を修正
- 新しい照合順序が有効になっていない場合、
LIKE
演算子の_
非 ASCII 文字と一致できない問題を修正#13769 @ ヤンケオ reset-to-version
コマンド#13829 @ タボキーを実行すると tikv-ctl が予期せず終了する問題を修正
PD
TiFlash
- TiFlash #6159 @ リデジュの再起動後にデルタレイヤーのカラムファイルが圧縮できない問題を修正
- TiFlashファイルオープン OPS が高すぎる問題を修正#6345 @ ジェイ・ソン・ファン
ツール
バックアップと復元 (BR)
TiCDC
- PD リーダーが#7470 @ 沢民州でクラッシュすると TiCDC がスタックする問題を修正
- 最初に DDL ステートメントを実行し、次に変更フィード#7682 @ 東門を一時停止して再開するシナリオで発生したデータ損失を修正しました。
- TiFlash #7744 @ オーバーヴィーナスの新しいバージョンがある場合に TiCDC が誤ってエラーを報告する問題を修正
- ダウンストリーム ネットワークが利用できない場合にシンクコンポーネントがスタックする問題を修正#7706 @ ひっくり返る
- ユーザーがレプリケーション タスクをすぐに削除し、同じタスク名#7657 @ オーバーヴィーナスで別のタスクを作成するとデータが失われる問題を修正します。
TiDB データ移行 (DM)
TiDB Lightning
貢献者
TiDB コミュニティの以下の貢献者に感謝いたします。