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