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
列属性が、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_lock
をOFF
に設定します。詳細についてはドキュメント参照してください。
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
UPDATE
含む非トランザクション#33485ステートメントDELETE
完全エキシウムサポートしますREPLACE
大規模データ処理のシナリオでは、大規模なトランザクションを含む単一の SQL ステートメントが、クラスターの安定性とパフォーマンスに悪影響を及ぼす可能性があります。非トランザクション DML ステートメントは、内部実行のために複数の SQL ステートメントに分割された DML ステートメントです。分割されたステートメントはトランザクションの原子性と分離性を損ないますが、クラスターの安定性を大幅に向上させます。TiDB は、v6.1.0 以降で非トランザクション
DELETE
ステートメントをサポートし、v6.5.0 以降で非トランザクションINSERT
、REPLACE
、およびUPDATE
ステートメントをサポートしています。詳細については非トランザクションDMLステートメントおよび
BATCH
構文参照してください。TTL (time to live) のサポート (実験的) #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
条件でのインデックス マージのみがサポートされています。11AND
のインデックス マージを有効にするには、USE_INDEX_MERGE
ヒントを使用する必要があります。インデックスマージの詳細については、 v5.4.0 リリースノートとインデックスのマージの説明参照してください。
以下のJSON関数をTiFlash #39458 @ いびん87にプッシュダウンするサポート
->
->>
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 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を取得する操作を最適化します
データ分析のシナリオでは、フィルター条件なしで
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_query
とtidb_server_memory_limit
使用してグローバルメモリを管理し、メモリ使用の効率を向上させることができます。詳細についてはドキュメント参照してください。
使いやすさ
EXPLAIN ANALYZE
出力#5926 @ ホンユンヤンのTiFlashTableFullScan
演算子の実行情報を精緻化するEXPLAIN ANALYZE
ステートメントは、実行プランと実行時統計を出力するために使用されます。v6.5.0 では、 TiFlash はDMFile 関連の実行情報を追加することで、TableFullScan
演算子の実行情報を改良しました。TiFlashTiFlashスキャン ステータス情報がより直感的に表示されるようになり、 TiFlash のパフォーマンスをより簡単に分析できるようになりました。詳細についてはドキュメント参照してください。
実行プランのJSON形式出力をサポート#39261 @ ふーふー
v6.5.0 では、TiDB は実行プランの出力形式を拡張しました。3
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 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 変更フィードに
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 から有効になります。 INSERT 、 DELETE 、およびUPDATE を含む 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 がクライアント接続を切断するかどうかを示します。この変数は読み取り専用です。 |
tidb_store_batch_size | 新しく追加された | この変数はデフォルトで無効になっており、これによって制御される機能はまだ安定していません。本番環境でこの変数を変更することはお勧めしません。 |
password_history | 新しく追加された | この変数は、パスワード変更回数に基づいて TiDB がパスワードの再利用を制限できるようにするパスワード再利用ポリシーを確立するために使用されます。デフォルト値0 、パスワード変更回数に基づくパスワード再利用ポリシーを無効にすることを意味します。 |
password_reuse_interval | 新しく追加された | この変数は、経過時間に基づいて TiDB がパスワードの再利用を制限できるようにするパスワード再利用ポリシーを確立するために使用されます。デフォルト値0 、経過時間に基づくパスワード再利用ポリシーを無効にすることを意味します。 |
tidb_auto_build_stats_concurrency | 新しく追加された | この変数は、統計の自動更新を実行する同時実行性を設定するために使用されます。デフォルト値は1 です。 |
tidb_cdc_write_source | 新しく追加された | この変数が 0 以外の値に設定されている場合、このセッションで書き込まれたデータは TiCDC によって書き込まれたものと見なされます。この変数は TiCDC によってのみ変更できます。いかなる場合でも、この変数を手動で変更しないでください。 |
tidb_enable_plan_replayer_capture | 新しく追加された | この変数によって制御される機能は、TiDB v6.5.0 では完全には機能しません。デフォルト値を変更しないでください。 |
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 です。 |
コンフィグレーションファイルのパラメータ
コンフィグレーションファイル | コンフィグレーションパラメータ | タイプを変更 | 説明 |
---|---|---|---|
ティビ | 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 で削除されました。 |
ティクヴ | raft-engine.bytes-per-sync | 非推奨 | v6.5.0 以降、 Raft Engineはバッファリングせずにログを直接ディスクに書き込みます。そのため、この構成項目は非推奨となり、機能しなくなりました。 |
ティクヴ | cdc.min-ts-interval | 修正済み | CDCレイテンシーを削減するために、デフォルト値が"1s" から"200ms" に変更されます。 |
ティクヴ | memory-use-ratio | 新しく追加された | PITR ログ リカバリにおける使用可能なメモリとシステムメモリの合計の比率を示します。 |
ティCDC | sink.terminator | 新しく追加された | 2 つのデータ変更イベントを区切るために使用される行ターミネータを示します。デフォルトでは値は空で、 \r\n 使用されることを意味します。 |
ティCDC | sink.date-separator | 新しく追加された | ファイル ディレクトリの日付区切り文字の種類を示します。値のオプションはnone 、 year 、 month 、およびday です。 none デフォルト値であり、日付が区切られないことを意味します。 |
ティCDC | sink.enable-partition-separator | 新しく追加された | パーティションを分離文字列として使用するかどうかを指定します。デフォルト値はfalse で、テーブル内のパーティションが個別のディレクトリに保存されないことを意味します。 |
ティCDC | sink.csv.delimiter | 新しく追加された | フィールド間の区切り文字を示します。値は ASCII 文字である必要があり、デフォルトは, です。 |
ティCDC | sink.csv.quote | 新しく追加された | フィールドを囲む引用符。デフォルト値は" です。値が空の場合、引用符は使用されません。 |
ティCDC | sink.csv.null | 新しく追加された | CSV 列が null の場合に表示される文字を指定します。デフォルト値は\N です。 |
ティCDC | sink.csv.include-commit-ts | 新しく追加された | CSV 行に commit-ts を含めるかどうかを指定します。デフォルト値はfalse です。 |
その他
- v6.5.0 以降、
mysql.user
テーブルにPassword_reuse_history
とPassword_reuse_time
2 つの新しい列が追加されます。 - v6.5.0 以降では、 インデックス加速機能がデフォルトで有効になっています。この機能は1 つの
ALTER TABLE
ステートメントで複数の列またはインデックスを変更すると完全に互換性がありません。インデックス アクセラレーションを使用して一意のインデックスを追加する場合は、同じステートメント内の他の列またはインデックスを変更しないようにする必要があります。この機能はPITR (ポイントインタイムリカバリ)とも互換性がありません。インデックス アクセラレーション機能を使用する場合は、バックグラウンドで PITR バックアップ タスクが実行されていないことを確認する必要があります。そうしないと、予期しない結果が発生する可能性があります。詳細については、 ドキュメント参照してください。
非推奨の機能
v6.5.0 以降では、v4.0.7 で導入されたAMEND TRANSACTION
メカニズムは非推奨となり、 メタデータロックに置き換えられます。
改善点
ティビ
ティクヴ
- ディスク容量の枯渇を避けるため、十分な容量がない場合は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
TiFlash
ツール
TiDBダッシュボード
バックアップと復元 (BR)
ティCDC
- Kafka プロトコルエンコーダーのパフォーマンスを向上#7540 #7532 #7543 @ 3エースショーハンド @ スドジ
TiDB データ移行 (DM)
バグ修正
ティビ
- 場合によっては発生するチャンク再利用機能のメモリチャンクの誤用問題を修正#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 @ グオシアンCNで
compact raft
コマンドを実行するときに発生するGet raft db is not allowed
エラーを修正 - TLS が有効な場合にログバックアップが機能しない問題を修正#13867 @ ユジュンセン
- ジオメトリフィールドタイプ#13651 @ ドヴェーデンのサポート問題を修正
- 新しい照合順序が有効になっていない場合、
LIKE
演算子の_
非 ASCII 文字と一致しない問題を修正#13769 @ ヤンケオ reset-to-version
コマンド#13829 @ タボキを実行すると tikv-ctl が予期せず終了する問題を修正
PD
TiFlash
ツール
バックアップと復元 (BR)
ティCDC
- PDリーダーが#7470 @ 沢民州でクラッシュするとTiCDCが停止する問題を修正
- 最初に DDL ステートメントを実行し、次に変更フィード#7682 @ アズドンメンを一時停止して再開するシナリオで発生したデータ損失を修正しました。
- TiFlash #7744 @ 金星の上以降のバージョンがある場合に TiCDC が誤ってエラーを報告する問題を修正しました
- ダウンストリームネットワークが利用できない場合にシンクコンポーネントが停止する問題を修正#7706 @ ヒック
- ユーザーがレプリケーションタスクをすばやく削除し、同じタスク名で別のタスクを作成するとデータが失われる問題を修正#7657 @ 金星の上
TiDB データ移行 (DM)
TiDB Lightning
寄稿者
TiDB コミュニティの以下の貢献者に感謝いたします。