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-DMR 、 6.3.0-DMR 、 6.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 の誤操作を簡単に元に戻し、元のクラスターを数分で復元し、さまざまな時点でデータをロールバックして、データが変更された正確な時刻を特定するのに役立ちます。詳細については、 ドキュメンテーションを参照してください。
INSERT
、REPLACE
、UPDATE
、およびDELETE
#33485 @ エキキシウムを含む非トランザクション DML ステートメントを完全にサポート大規模なデータ処理のシナリオでは、大規模なトランザクションを含む単一の SQL ステートメントがクラスターの安定性とパフォーマンスに悪影響を及ぼす可能性があります。非トランザクション DML ステートメントは、内部実行用に複数の SQL ステートメントに分割された DML ステートメントです。 split ステートメントは、トランザクションの原子性と分離性を損ないますが、クラスターの安定性を大幅に向上させます。 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 文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 BY
やLIMIT
の並べ替え操作を計算とフィルタリングのために 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 @ ホンユニャンの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 はソース データの読み取りと一時ファイルの書き込みを停止します。代わりに、まず並べ替えられたキー値を 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 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 | 新規追加 | commit-ts を CSV 行に含めるかどうかを指定します。デフォルト値は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 @ ユジュンセンのプル モデルをサポート
- crossbeam-channel #13815 @ スティックナーフを更新することにより、送信側でのスピンの問題を回避します
- TiKV #13849 @ cfzjywxkでコプロセッサータスク処理をサポート
- TiKV にリージョン#13648 @ Lykxサシネーターをウェイクアップするように通知することで、障害回復の待ち時間を短縮します
- コードの最適化#13827 @ ビジージェイにより、要求されたメモリ使用量のサイズを減らします
- Raft拡張機能を導入してコードの拡張性を向上させる#13827 @ ビジージェイ
- tikv-ctl を使用して、特定のキー範囲に含まれるリージョンを照会するサポート#13760 @HuSharp
- 更新されていないが継続的にロックされている行の読み取りおよび書き込みパフォーマンスを改善する#13694 @sticnarf
PD
TiFlash
ツール
TiDB ダッシュボード
バックアップと復元 (BR)
TiCDC
- Kafka プロトコル エンコーダーのパフォーマンスを向上させる#7540 #7532 #7543 @ 3AceShowHand @ スドジ
TiDB データ移行 (DM)
バグの修正
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 @ 国翔CNで
compact raft
コマンド実行時のGet raft db is not allowed
エラーを修正 - TLS が有効な場合にログ バックアップが機能しない問題を修正します#13867 @ ユジュンセン
- Geometry フィールド タイプ#13651 @ ドヴィーデンのサポートの問題を修正します。
- 新しい照合順序が有効になっていない場合、
LIKE
演算子の_
非 ASCII 文字と一致しないという問題を修正します#13769 @ ヤンケアオ reset-to-version
コマンド#13829 @ タボキーを実行すると tikv-ctl が予期せず終了する問題を修正
PD
TiFlash
ツール
バックアップと復元 (BR)
TiCDC
- PD リーダーが#7470 @ ゼミン州でクラッシュすると TiCDC がスタックする問題を修正
- 最初に DDL ステートメントを実行し、次に changefeed #7682 @ アスドンメンを一時停止して再開するシナリオで発生したデータ損失を修正
- TiFlash #7744 @ 大静脈の新しいバージョンがある場合、TiCDC が誤ってエラーを報告する問題を修正します。
- ダウンストリーム ネットワークが使用できない場合にシンクコンポーネントがスタックする問題を修正します#7706 @ ヒック
- ユーザーがレプリケーション タスクをすばやく削除してから、同じタスク名で別のタスクを作成すると、データが失われる問題を修正します#7657 @ 大静脈
TiDB データ移行 (DM)
TiDB Lightning
寄稿者
TiDB コミュニティの次の貢献者に感謝します。