TiDB 是 PingCAP 公司自主設(shè)計(jì)、研發(fā)的開源分布式關(guān)系型數(shù)據(jù)庫,是一款同時(shí)支持在線事務(wù)處理與在線分析處理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式數(shù)據(jù)庫產(chǎn)品,具備水平擴(kuò)容或者縮容、金融級(jí)高可用、實(shí)時(shí) HTAP、云原生的分布式數(shù)據(jù)庫、兼容 MySQL 5.7 協(xié)議和 MySQL 生態(tài)等重要特性。目標(biāo)是為用戶提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解決方案。TiDB 適合高可用、強(qiáng)一致要求較高、數(shù)據(jù)規(guī)模較大等各種應(yīng)用場(chǎng)景。
TiDB軟件特色
1、一鍵水平擴(kuò)容或者縮容
得益于 TiDB 存儲(chǔ)計(jì)算分離的架構(gòu)的設(shè)計(jì),可按需對(duì)計(jì)算、存儲(chǔ)分別進(jìn)行在線擴(kuò)容或者縮容,擴(kuò)容或者縮容過程中對(duì)應(yīng)用運(yùn)維人員透明。
2、金融級(jí)高可用
數(shù)據(jù)采用多副本存儲(chǔ),數(shù)據(jù)副本通過 Multi-Raft 協(xié)議同步事務(wù)日志,多數(shù)派寫入成功事務(wù)才能提交,確保數(shù)據(jù)強(qiáng)一致性且少數(shù)副本發(fā)生故障時(shí)不影響數(shù)據(jù)的可用性。可按需配置副本地理位置、副本數(shù)量等策略滿足不同容災(zāi)級(jí)別的要求。
3、實(shí)時(shí) HTAP
提供行存儲(chǔ)引擎 TiKV、列存儲(chǔ)引擎 TiFlash 兩款存儲(chǔ)引擎,TiFlash 通過 Multi-Raft Learner 協(xié)議實(shí)時(shí)從 TiKV 復(fù)制數(shù)據(jù),確保行存儲(chǔ)引擎 TiKV 和列存儲(chǔ)引擎 TiFlash 之間的數(shù)據(jù)強(qiáng)一致。TiKV、TiFlash 可按需部署在不同的機(jī)器,解決 HTAP 資源隔離的問題。
4、云原生的分布式數(shù)據(jù)庫
專為云而設(shè)計(jì)的分布式數(shù)據(jù)庫,通過 TiDB Operator 可在公有云、私有云、混合云中實(shí)現(xiàn)部署工具化、自動(dòng)化。
5、兼容 MySQL 5.7 協(xié)議和 MySQL 生態(tài)
兼容 MySQL 5.7 協(xié)議、MySQL 常用的功能、MySQL 生態(tài),應(yīng)用無需或者修改少量代碼即可從 MySQL 遷移到 TiDB。提供豐富的數(shù)據(jù)遷移工具幫助應(yīng)用便捷完成數(shù)據(jù)遷移。
TiDB軟件功能
一、數(shù)據(jù)類型
1、數(shù)值類型:BIT、BOOL|BOOLEAN、SMALLINT、MEDIUMINT、INT|INTEGER、BIGINT、FLOAT、DOUBLE、DECIMAL。
2、日期和時(shí)間類型:DATE、TIME、DATETIME、TIMESTAMP、YEAR
3、字符串類型:CHAR、VARCHAR、TEXT、TINYTEXT、MEDIUMTEXT、LONGTEXT、BINARY、VARBINARY、BLOB、TINYBLOB、MEDIUMBLOB、LONGBLOB、ENUM、SET。
4、JSON 類型。
二、運(yùn)算符
算術(shù)運(yùn)算符、位運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符、日期和時(shí)間運(yùn)算符等。
三、字符集及排序規(guī)則
1、字符集:UTF8、UTF8MB4、BINARY、ASCII、LATIN1。
2、排序規(guī)則:UTF8MB4_GENERAL_CI、UTF8MB4_GENERAL_BIN、UTF8_GENERAL_CI、UTF8_GENERAL_BIN、BINARY。
四、函數(shù)
控制流函數(shù)、字符串函數(shù)、日期和時(shí)間函數(shù)、位函數(shù)、數(shù)據(jù)類型轉(zhuǎn)換函數(shù)、數(shù)據(jù)加解密函數(shù)、壓縮和解壓函數(shù)、信息函數(shù)、JSON 函數(shù)、聚合函數(shù)、窗口函數(shù)等。
五、SQL 語句
1、完全支持標(biāo)準(zhǔn)的 Data Definition Language (DDL) 語句,例如:CREATE、DROP、ALTER、RENAME、TRUNCATE 等。
2、完全支持標(biāo)準(zhǔn)的 Data Manipulation Language (DML) 語句,例如:INSERT、REPLACE、SELECT、Subqueries、UPDATE、LOAD DATA 等。
3、完全支持標(biāo)準(zhǔn)的 Transactional and Locking 語句,例如:START TRANSACTION、COMMIT、ROLLBACK、SET TRANSACTION 等。
4、完全支持標(biāo)準(zhǔn)的 Database Administration 語句,例如:SHOW、SET 等。
5、完全支持標(biāo)準(zhǔn)的 Utility 語句,例如:DESCRIBE、EXPLAIN、USE 等。
6、完全支持 SQL GROUP BY 和 ORDER BY 子語句。
7、完全支持標(biāo)準(zhǔn) SQL 語法的 LEFT OUTER JOIN 和 RIGHT OUTER JOIN。
8、完全支持標(biāo)準(zhǔn) SQL 要求的表和列別名。
六、分區(qū)表
1、支持 Range 分區(qū)。
2、支持 Hash 分區(qū)。
七、視圖
支持普通視圖。
八、約束
1、支持非空約束。
2、支持主鍵約束。
3、支持唯一約束。
九、安全
1、支持基于 RBAC (role-based access control) 的權(quán)限管理。
2、支持密碼管理。
3、支持通信、數(shù)據(jù)加密。
4、支持 IP 白名單。
5、支持審計(jì)功能。
十、工具
1、支持快速備份功能。
2、支持通過工具從 MySQL 遷移數(shù)據(jù)到 TiDB。
3、支持通過工具部署、運(yùn)維 TiDB。
使用教程
1、查看、創(chuàng)建和刪除數(shù)據(jù)庫TiDB 語境中的 Database 或者說數(shù)據(jù)庫,可以認(rèn)為是表和索引等對(duì)象的集合。
使用 SHOW DATABASES 語句查看系統(tǒng)中數(shù)據(jù)庫列表:SHOW DATABASES
2、使用名為 mysql 的數(shù)據(jù)庫:USE mysql
3、使用 SHOW TABLES 語句查看數(shù)據(jù)庫中的所有表。例如:SHOW TABLES FROM mysql
4、使用 CREATE DATABASE 語句創(chuàng)建數(shù)據(jù)庫。語法如下:CREATE DATABASE db_name [options]
5、例如,要?jiǎng)?chuàng)建一個(gè)名為 samp_db 的數(shù)據(jù)庫,可使用以下語句:CREATE DATABASE IF NOT EXISTS samp_db
6、添加 IF NOT EXISTS 可防止發(fā)生錯(cuò)誤。
使用 DROP DATABASE 語句刪除數(shù)據(jù)庫。例如:DROP DATABASE samp_db
更新日志
兼容性更改TiDB
修復(fù)在新會(huì)話中執(zhí)行 SHOW VARIABLES 速度較慢的問題。該修復(fù)回退了中的部分更改,可能會(huì)引起兼容性問題。
以下 Bug 修復(fù)涉及執(zhí)行結(jié)果變化,可能引起兼容性變化:
修復(fù)了 greatest(datetime) union null 返回空字符串的問題
修復(fù)了 having 可能執(zhí)行錯(cuò)誤的問題
修復(fù)了當(dāng) between 表達(dá)式兩邊的 collation 不一致會(huì)導(dǎo)致查詢結(jié)果錯(cuò)誤的問題
修復(fù)了 extract 函數(shù)的參數(shù)是負(fù)數(shù)時(shí)查詢結(jié)果錯(cuò)誤的問題
修復(fù)了當(dāng) group_concat 函數(shù)包含非 bin 的 collation 時(shí)查詢結(jié)果錯(cuò)誤的問題
修復(fù)將 Apply 算子轉(zhuǎn)為 Join 時(shí)漏掉列信息的問題
修復(fù)將非法字符串轉(zhuǎn)為 DATE 類型時(shí)的非預(yù)期行為
修復(fù)開啟 New Collation 時(shí)多列的 count distinct 返回結(jié)果錯(cuò)誤的問題
功能增強(qiáng)
TiKV
支持動(dòng)態(tài)修改 TiCDC 配置
提升改進(jìn)
TiDB
基于直方圖的 row count 來觸發(fā) auto-analyze
TiKV
分離處理讀寫的 ready 狀態(tài)以減少讀延遲
TiKV Coprocessor 慢日志只考慮處理請(qǐng)求所花費(fèi)的時(shí)間
當(dāng) slogger 線程過載且隊(duì)列已滿時(shí),刪除日志而不是阻塞線程
減少 Resolved TS 消息的大小以節(jié)省網(wǎng)絡(luò)帶寬
PD
提升了 PD 之間同步 Region 信息的性能
Tools
Backup & Restore (BR)
并發(fā)執(zhí)行分裂和打散 Region 的操作,提升恢復(fù)速度
遇到 PD 請(qǐng)求錯(cuò)誤或 TiKV I/O 超時(shí)錯(cuò)誤時(shí)重試 BR 任務(wù)
恢復(fù)大量小表時(shí)減少空 Region 的產(chǎn)生,避免影響恢復(fù)后的集群運(yùn)行
創(chuàng)建表的時(shí)候自動(dòng)執(zhí)行 rebase auto id 操作,省去了單獨(dú)的 rebase auto id DDL 操作,加快恢復(fù)速度
Dumpling
獲取表信息前過濾掉不需要導(dǎo)出的數(shù)據(jù)庫,提升 SHOW TABLE STATUS 的過濾效率
使用 SHOW FULL TABLES 來獲取需要導(dǎo)出的表,因?yàn)?SHOW TABLE STATUS 在某些 MySQL 版本上運(yùn)行存在問題
支持對(duì) MySQL 兼容的特定數(shù)據(jù)庫進(jìn)行備份,這些數(shù)據(jù)庫不支持 START TRANSACTION ... WITH CONSISTENT SNAPSHOT 和 SHOW CREATE TABLE 語法
完善 Dumpling 的警告日志,避免讓用戶誤以為導(dǎo)出失敗
TiDB Lightning
支持導(dǎo)入數(shù)據(jù)到帶有表達(dá)式索引或帶有基于虛擬生成列的索引的表中
TiCDC
TiCDC 總是內(nèi)部從 TiKV 拉取 old value,提升 TiCDC 易用性
當(dāng)某張表的 Region 從某個(gè) TiKV 節(jié)點(diǎn)全部遷移走時(shí),減少 goroutine 資源的使用
在高并發(fā)下減少 workerpool 中創(chuàng)建的 goroutine 數(shù)量
異步執(zhí)行 DDL 語句,不阻塞其他 changefeed
為所有 KV 客戶端創(chuàng)建全局共享的 gRPC 連接池
遇到無法恢復(fù)的 DML 錯(cuò)誤立即退出,不進(jìn)行重試
優(yōu)化 Unified Sorter 使用內(nèi)存排序時(shí)的內(nèi)存管理
為執(zhí)行 DDL 語句新增 Prometheus 監(jiān)控指標(biāo)
禁止使用不同的 major 和 minor 版本啟動(dòng) TiCDC 節(jié)點(diǎn)
移除 file sorter 文件排序器
清理被刪 changefeed 的監(jiān)控?cái)?shù)據(jù)和已退出處理節(jié)點(diǎn)的監(jiān)控?cái)?shù)據(jù)
優(yōu)化 Region 初始化后的清鎖算法
Bug 修復(fù)
TiDB
修復(fù)構(gòu)建 range 時(shí)未正確給二進(jìn)制字面值設(shè)置排序規(guī)則的問題
修復(fù)當(dāng)查詢包含 GROUP BY 和 UNION 時(shí)報(bào)錯(cuò) "index out of range" 的問題
修復(fù)當(dāng) TiKV 有 tombstone store 時(shí) TiDB 發(fā)送請(qǐng)求失敗的問題 #23676
移除文檔中未記錄的 /debug/sub-optimal-plan HTTP API
修復(fù) case when 表達(dá)式的字符集不正確的問題
TiKV
修復(fù)數(shù)據(jù)恢復(fù)期間啟用 TDE 時(shí) BR 報(bào)告文件已存在錯(cuò)誤的問題
修復(fù)損壞的快照文件可能會(huì)造成磁盤空間無法回收的問題
修復(fù) TiKV 過于頻繁刪除陳舊 Region 的問題
修復(fù) TiKV 頻繁重新連接 PD 客戶端的問題
從加密文件字典中檢查陳舊的文件信息
PD
修復(fù) PD 未能及時(shí)修復(fù) Down Peer 副本的問題
修復(fù)了 PD 在擴(kuò)容 TiKV 時(shí)可能會(huì) Panic 的問題
TiFlash
修復(fù)多盤部署時(shí)數(shù)據(jù)不一致的潛在問題
修復(fù)當(dāng)查詢過濾條件包含諸如 CONSTANT、<、<=、>、>= 或 COLUMN 時(shí)出現(xiàn)錯(cuò)誤結(jié)果的問題
修復(fù)寫入壓力大時(shí) metrics 中 store size 不準(zhǔn)確的問題
修復(fù) TiFlash 多盤部署時(shí)無法恢復(fù)數(shù)據(jù)的潛在問題
修復(fù) TiFlash 長時(shí)間運(yùn)行后無法回收 Delta 歷史數(shù)據(jù)的潛在問題
Tools
Backup & Restore (BR)
修復(fù)了備份和恢復(fù)中平均速度計(jì)算不準(zhǔn)確的問題
TiCDC
修復(fù)集成測(cè)試中遇到由于 DDL Job 重復(fù)導(dǎo)致的 ErrSchemaStorageTableMiss 錯(cuò)誤
修復(fù)遇到 ErrGCTTLExceeded 錯(cuò)誤時(shí) changefeed 無法被刪除的問題
修復(fù) capture list 命令輸出中出現(xiàn)已過期 capture 的問題
修復(fù) TiCDC processor 出現(xiàn)死鎖的問題
修復(fù)重新調(diào)度一張表時(shí)多個(gè)處理器將數(shù)據(jù)寫入同一張表引發(fā)的數(shù)據(jù)不一致的問題
修復(fù)元數(shù)據(jù)管理出現(xiàn) EtcdWorker 快照隔離被破壞的問題
修復(fù)因?yàn)?DDL sink 錯(cuò)誤導(dǎo)致 changefeed 不能被停止的問題
修復(fù)一個(gè) TiCDC Open Protocol 的問題:當(dāng)一個(gè)事務(wù)中沒有任何數(shù)據(jù)寫入時(shí)候,TiCDC 產(chǎn)生一個(gè)空消息
修復(fù) TiCDC 在處理無符號(hào) TINYINT 類型時(shí)崩潰的問題
減小 gRPC 窗口來避免 Region 數(shù)量過多時(shí)觸發(fā)內(nèi)存溢出
修復(fù)因 TiCDC capture 過多 Regions 出現(xiàn)的 OOM 問題
修復(fù)將 mysql.TypeString, mysql.TypeVarString, mysql.TypeVarchar 等類型的數(shù)據(jù)編碼為 JSON 時(shí)進(jìn)程崩潰的問題
修復(fù)在創(chuàng)建新的 changefeed 時(shí)可能發(fā)生的內(nèi)存泄漏問題
修復(fù)同步任務(wù)從一個(gè)表結(jié)構(gòu)變更的 finish TS 開始時(shí) DDL 處理失敗的問題
修復(fù) owner 在執(zhí)行 DDL 語句時(shí)崩潰可能導(dǎo)致 DDL 任務(wù)丟失的問題
修復(fù) SinkManager 中對(duì) map 的不安全并發(fā)訪問
上一篇:ZNDS悟空電視助手
下一篇:電信寬帶上網(wǎng)助手