TiDB 6.5.4 リリースノート
発売日:2023年8月28日
TiDB バージョン: 6.5.4
クイックアクセス: クイックスタート | 本番環境へのデプロイ
互換性の変更
Cursor Fetchを使用して大きな結果セットを取得するときにTiDBがメモリを大量に消費する問題を修正するために、TiDBは結果セットを自動的にディスクに書き込んでメモリを解放します#43233 @YangKeao- RocksDBの定期的な圧縮をデフォルトで無効にすることで、TiKV RocksDBのデフォルトの動作がv6.5.0より前のバージョンと一致するようになりました。この変更により、アップグレード後に大量の圧縮が行われることによるパフォーマンスへの影響を回避できます。さらに、TiKVでは2つの新しい設定項目
rocksdb.[defaultcf|writecf|lockcf].periodic-compaction-secondsとrocksdb.[defaultcf|writecf|lockcf].ttlが導入され、RocksDB の定期的な圧縮を手動で設定できるようになりました。 #15355 @LykxSassinator
動作の変更
- 複数の変更を含むトランザクションにおいて、更新イベントで主キーまたはNULL以外の一意インデックス値が変更された場合、TiCDCはイベントを削除イベントと挿入イベントに分割し、すべてのイベントが挿入イベントに先行する削除イベントの順序に従うようにします。詳細については、 ドキュメントを参照してください。
改善点
TiDB
TiKV
check_leaderリクエストに gzip 圧縮を使用してトラフィックを削減します #14553 @you06Max gap of safe-tsとMin safe ts regionメトリックを追加し、tikv-ctl get-region-read-progressコマンドを導入して、resolved-tsと安全な ts の状態をより適切に観察および診断します#15082 @ekexium- TiKV で RocksDB の設定を公開し、ユーザーが TTL や定期的な圧縮などの機能を無効にできるようにします#14873 @LykxSassinator
- Titan マニフェストファイルを書き込むときにミューテックスを保持しないようにして、他のスレッドに影響を与えないようにします#15351 @Connor1996
- 圧縮メカニズムを最適化します。リージョンが分割されるときに、分割するキーがない場合、圧縮がトリガーされ、過剰な MVCC バージョンが排除されます。 #15282 @SpadeA-Tang
PD
TiFlash
ツール
Backup & Restore (BR)
TiCDC
- TiCDC が失敗後に再試行するときのステータス メッセージを改善する#9483 @asddongmen
- TiCDC が Kafka に同期する際に制限を超えるメッセージを処理する方法を最適化し、主キーのみをダウンストリームに送信することをサポートしました。 #9574 @3AceShowHand
- ストレージシンクは、HEX形式のデータの16進エンコードをサポートするようになり、AWS DMS形式仕様と互換性があります。 #9373 @CharlesCheung96
TiDB Data Migration (DM)
Dumpling
バグ修正
TiDB
STREAM_AGG()演算子をプッシュダウンするとindex out of rangeエラーが報告される可能性がある問題を修正しました #40857 @Dousir9CREATE TABLE文にサブパーティション定義 が含まれている場合、TiDB がすべてのパーティション情報を無視して非パーティションテーブルを作成する問題を修正しました。 #41200 @mjonss #41198stale_read_ts設定が間違っているとPREPARE stmtデータを誤って読み取る可能性がある問題を修正#43044 @you06- ActivateTxn で起こりうるデータ競合の問題を修正しました #42092 @hawkingrei
- バッチクライアントがタイムリーに再接続しない問題を修正#44431 @crazycs520
- SQLコンパイルエラーログが秘匿化されない問題を修正#41831 @lance6716
- CTEと相関サブクエリを同時に使用すると、クエリ結果が不正確になったり、panicが発生する可能性がある問題を修正#44649 #38170 #44774 @winoros @guo-shaoge
- TTLタスクが時間で統計更新をトリガーできない問題を修正 #40109 @YangKeao
- GC ロック解決ステップで一部の悲観的ロックが見逃される可能性がある問題を修正しました #45134 @MyonKeminta
- バイナリプロトコルを使用してTiDBに接続し、多数の
PREPAREとEXECUTE文を実行すると、メモリリークと実行時間が増加し続ける問題を修正しました。 #44612 @wshwsh12 INFORMATION_SCHEMA.DDL_JOBSテーブルのQUERY列のデータ長が列定義を超える可能性がある問題を修正しました #42440 @tiancaiamao- 多数のリージョンがあるが、
PrepareまたはExecuteを使用して一部の仮想テーブルをクエリするときにテーブル ID をプッシュダウンできないという PD OOM 問題を修正しました。 #39605 @djshow832 - パーティションテーブルに新しいインデックスを追加した後、パーティションテーブルで統計の自動収集が正しくトリガーされない可能性がある問題を修正しました。 #41638 @xuyifangreeneyes
- 統計情報におけるSQL実行詳細のメモリ消費量が多すぎると、極端なケースでTiDB OOMが発生する問題を修正#44047 @wshwsh12
- バッチコプロセッサの再試行によって誤ったリージョン情報が生成される可能性があり、クエリが失敗する問題を修正しました#44622 @windtalker
indexMergeのクエリが強制終了されたときに発生するハングアップの問題を修正しました #45279 @xzhangxian1008- システムテーブル
INFORMATION_SCHEMA.TIKV_REGION_STATUSをクエリすると、場合によっては誤った結果が返される問題を修正しました#45531 @Defined2014 tidb_enable_parallel_applyが有効になっている場合、MPP モードでのクエリ結果が正しくない問題を修正#45299 @windtalkertidb_opt_agg_push_downが有効になっている場合にクエリが誤った結果を返す可能性がある問題を修正#44795 @AilinKid- 仮想列によって発生する適切な物理プランが見つからない問題を修正しました #41014 @AilinKid
- 空の
processInfoによって引き起こされるpanic問題を修正 #43829 @zimulala - 文中の
nが負の数の場合に、文SELECT CAST(n AS CHAR)のクエリ結果が正しくない問題を修正しました #44786 @xhebox - MySQLカーソルフェッチプロトコル使用時に、結果セットのメモリ消費量が
tidb_mem_quota_query上限を超え、TiDBのメモリオーバーフローが発生する問題を修正しました。修正後、TiDBは結果セットを自動的にディスクに書き込み、メモリを解放します#43233 @YangKeao - BR を使用して
AUTO_ID_CACHE=1テーブルを復元するときに発生するduplicate entryエラーを修正します #44716 @tiancaiamao - テーブルパーティション定義で
FLOOR()関数を使用してパーティション列を丸めた場合、SELECT文がパーティションテーブルに対してエラーを返す問題を修正しました。 #42323 @jiyfhust - 同時ビューによって DDL 操作がブロックされる可能性がある問題を修正#40352 @zeminzhou
datetime値が正しくないために統計収集タスクが失敗する問題を修正しました #39336 @xuyifangreeneyes- クラスターのPDノードが交換された後、一部のDDL文が一定期間スタックする可能性がある問題を修正しました#33908
- PD時間に突然の変化があったときに
resolve lockハングする可能性がある問題を修正しました #44822 @zyguan - インデックススキャンにおける潜在的なデータ競合問題を修正 #45126 @wshwsh12
FormatSQL()メソッドが入力の非常に長い SQL 文を適切に切り捨てることができない問題を修正しました。 #44542 @hawkingrei- 権限がなくてもユーザーが
INFORMATION_SCHEMA.TIFLASH_REPLICAテーブルの情報を表示できる問題を修正 #45320 @Lloyd-Pottiger DATETIMEまたはTIMESTAMP列を数値定数と比較するときに、MySQL と動作が一致しない問題を修正しました。 #38361 @yibin87- インデックス結合のエラーによりクエリが停止する可能性がある問題を修正#45716 @wshwsh12
- 接続を切断すると go コルーチン リークが発生する可能性がある問題を修正#46034 @pingyu
tmp-storage-quota設定が で有効にならない問題を修正 #26806 @wshwsh12 #45161- クラスターでTiFlashノードがダウンした場合にTiFlashレプリカが利用できなくなる問題を修正しました。 #38484 @hehechen
Config.Labels同時に読み書きする場合に、データ競合により TiDB がクラッシュする問題を修正#45561 @gengliqi- クラスタが大きい場合、クライアントが定期的に更新される
min-resolved-tsPD OOMを引き起こす可能性がある問題を修正しました#46664 @HuSharp
TiKV
ttl-check-poll-interval設定項目がRawKV API V2 で有効にならない問題を修正 #15142 @pingyu- オンラインアンセーフリカバリがタイムアウトで中止されない問題を修正 #15346 @Connor1996
FLASHBACKを実行した後にリージョンマージがブロックされる可能性がある問題を修正しました #15258 @overvenus- 1つのTiKVノードが分離され、別のノードが再起動されたときに発生する可能性のあるデータの不整合の問題を修正しました#15035 @overvenus
- データレプリケーション自動同期モードで同期回復フェーズでQPSがゼロに低下する問題を修正しました。 #14975 @nolouch
- 暗号化により部分書き込み中にデータ破損が発生する可能性がある問題を修正 #15080 @tabokie
- ストアハートビートの再試行回数を減らして、ハートビートストームの問題を修正しました。 #15184 @nolouch
- 保留中の圧縮バイト量が多い場合にトラフィック制御が機能しない可能性がある問題を修正しました。 #14392 @Connor1996
- PDとTiKV間のネットワーク中断によりPITRが停止する可能性がある問題を修正しました #15279 @YuJuncen
- TiCDC の古い値機能が有効になっているときに TiKV がより多くのメモリを消費する可能性がある問題を修正#14815 @YuJuncen
PD
- etcd がすでに起動しているがクライアントがまだ接続していない場合、クライアントを呼び出すと PD がpanicになる可能性がある問題を修正しました。 #6860 @HuSharp
- リーダーが長時間退出できない問題を修正#6918 @bufferflies
- 配置ルールが
LOCATION_LABELSを使用する場合、SQL とルールチェッカーに互換性がない問題を修正しました #38605 @nolouch - PD が予期せず複数のラーナーをリージョンに追加する可能性がある問題を修正しました。 #5786 @HunDunDM
- ルールチェッカーがピアを選択した場合に、不健全なピアを削除できない問題を修正しました #6559 @nolouch
unsafe recoveryで不合格になったラーナーのピアがauto-detectモードで無視される問題を修正 #6690 @v01dstar
TiFlash
fspDATETIME、TIMESTAMP、またはTIMEデータ型に変更した後にクエリが失敗する問題を修正しました #7809 @JaySon-Huang- 領域の無効な範囲キーによりTiFlashデータが不整合になる問題を修正しました #7762 @lidezhu
- 同じ MPP タスク内に複数の HashAgg オペレーターがある場合、MPP タスクのコンパイルに非常に長い時間がかかり、クエリのパフォーマンスに重大な影響を与える可能性がある問題を修正しました#7810 @SeaRise
- オンラインアンセーフリカバリを使用した後、 TiFlashの再起動に時間がかかりすぎる問題を修正しました #7671 @hongyunyan
- TiFlash が割り算を行うときに
DECIMAL結果を誤って丸める問題を修正しました #6462 @LittleFall
ツール
Backup & Restore (BR)
- BRで使用されるグローバルパラメータ
TableColumnCountLimitとIndexLimitデフォルト値を最大値に増やすことで、復元が失敗する問題を修正しました。 #45793 @Leavrth - PITR で DDL メタ情報を処理するときに書き換えが失敗する問題を修正しました #43184 @Leavrth
- PITR実行中に関数の戻り値をチェックしないことで発生するpanicの問題を修正#45853 @Leavrth
- Amazon S3 以外の S3 互換ストレージ使用時に無効なリージョン ID が取得される問題を修正 #42033 @3pointer #41916
- RawKVモードのきめ細かなバックアップフェーズで発生する可能性のあるエラーを修正 #37085 @pingyu
- TiDBクラスタにPITRバックアップタスクがない場合に
resolve lockの頻度が高すぎる問題を修正 #40759 @joccau - リージョンリーダーシップの移行が発生すると、PITR ログバックアップの進行のレイテンシーが長くなるという問題を軽減します#13638 @YuJuncen
- BRで使用されるグローバルパラメータ
TiCDC
- ダウンストリームでエラーが発生して再試行すると、レプリケーションタスクが停止する可能性がある問題を修正しました。 #9450 @hicqu
- Kafka に同期するときに再試行間隔が短いためにレプリケーションタスクが失敗する問題を修正しました #9504 @3AceShowHand
- TiCDC がアップストリームの 1 つのトランザクションで複数の一意のキー行を変更するときに同期書き込み競合を引き起こす可能性がある問題を修正しました。 #9430 @sdojjy
- TiCDC が誤って名前変更 DDL 操作を同期する可能性がある問題を修正#9488 #9378 #9531 @asddongmen
- 下流で短期的な障害が発生したときにレプリケーションタスクが停止する可能性がある問題を修正#9542 #9272 #9582 #9592 @hicqu
- TiCDC ノードのステータスが変化したときに発生する可能性のあるpanic問題を修正しました。 #9354 @sdojjy
- Kafka Sink がエラーに遭遇すると、changefeed の進行が無期限にブロックされる可能性がある問題を修正しました。 #9309 @hicqu
- ダウンストリームが Kafka の場合、TiCDC がダウンストリームのメタデータを頻繁にクエリし、ダウンストリームに過度のワークロードが発生する問題を修正しました#8957 #8959 @Rustin170506
- 一部の TiCDC ノードがネットワークから分離されているときに発生する可能性のあるデータの不整合の問題を修正#9344 @CharlesCheung96
- 再実行ログが有効で、下流に例外がある場合にレプリケーションタスクが停止する可能性がある問題を修正しました。 #9172 @CharlesCheung96
- PD が一時的に利用できないために変更フィードが失敗する問題を修正しました #9294 @asddongmen
- TiDB または MySQL にデータを複製するときに、下流の双方向レプリケーション関連の変数を頻繁に設定することによって発生する下流ログが多すぎる問題を修正しました。 #9180 @asddongmen
- Avroプロトコルが
Enumタイプの値を誤って識別する問題を修正しました #9259 @3AceShowHand
TiDB Data Migration (DM)
TiDB Lightning
- エンジンがデータをインポートしているときにディスククォータ チェックがブロックされる可能性がある問題を修正しました #44867 @D3Hunter
- ターゲットクラスタで SSL が有効になっているときにチェックサムがエラー
Region is unavailableを報告する問題を修正しました #45462 @D3Hunter - エンコードエラーが正しく記録されない問題を修正#44321 @lyzx2001
- CSVデータをインポートする際にルートがpanicになる可能性がある問題を修正 #43284 @lyzx2001
- 論理インポートモードでテーブル A をインポートすると、テーブル B が存在しないと誤って報告される可能性がある問題を修正しました#44614 @dsdashun
NEXT_GLOBAL_ROW_IDを保存するときにデータ型が間違っている問題を修正しました #45427 @lyzx2001checksum = "optional"のときにチェックサムがエラーを報告する問題を修正しました #45382 @lyzx2001- PDクラスタアドレスが変更されるとデータのインポートが失敗する問題を修正しました #43436 @lichunzhu
- 一部のPDノードが失敗した場合にデータのインポートが失敗する問題を修正しました #43400 @lichunzhu
- AUTO_INCREMENT列を持つテーブルが
AUTO_ID_CACHE=1を設定すると、ID アロケータのベース値が正しくなくなるという問題を修正しました #46100 @D3Hunter
Dumpling
TiDB Binlog