由于目前的項目把mysql換成了TiDb本橙,所以特意來了解下tidb。其實也不能說換纱皆,由于tidb和mysql幾乎完全兼容南蓬,所以我們的程序沒有任何改動就完成了數(shù)據(jù)庫從mysql到TiDb的轉(zhuǎn)換,TiDB 是一個分布式 NewSQL SQL 语盈、 NoSQL 和 NewSQL 的優(yōu)缺點比較 數(shù)據(jù)庫舱馅。它支持水平彈性擴展、ACID 事務(wù)刀荒、標準 SQL代嗤、MySQL 語法和 MySQL 協(xié)議棘钞,具有數(shù)據(jù)強一致的高可用特性,是一個不僅適合 OLTP 場景還適合 OLAP 場景的混合數(shù)據(jù)庫干毅。下面是對有關(guān)資料的整理還有一些擴展內(nèi)容以鏈接的方式展示宜猜,有興趣可以點擊了解一下。
一. TiDb簡介
TiDB 是 PingCAP 公司受 Google Spanner / F1 論文啟發(fā)而設(shè)計的開源分布式 HTAP (Hybrid Transactional and Analytical Processing) 數(shù)據(jù)庫硝逢,結(jié)合了傳統(tǒng)的 RDBMS 和NoSQL 的最佳特性姨拥。TiDB 兼容 MySQL,支持無限的水平擴展趴捅,具備強一致性和高可用性垫毙。TiDB 的目標是為 OLTP(Online Transactional Processing) 和 OLAP (Online Analytical Processing) 場景提供一站式的解決方案。TiDB 具備如下核心特點:
- 1 高度兼容 MySQL
大多數(shù)情況下拱绑,無需修改代碼即可從 MySQL 輕松遷移至 TiDB,分庫分表后的 MySQL 集群亦可通過 TiDB 工具進行實時遷移丽蝎。 - 2 水平彈性擴展
通過簡單地增加新節(jié)點即可實現(xiàn) TiDB 的水平擴展猎拨,按需擴展吞吐或存儲,輕松應對高并發(fā)屠阻、海量數(shù)據(jù)場景红省。 - 3 分布式事務(wù)
TiDB 100% 支持標準的 ACID 事務(wù)。 - 4 真正金融級高可用
相比于傳統(tǒng)主從 (M-S) 復制方案国觉,基于 Raft 的多數(shù)派選舉協(xié)議可以提供金融級的 100% 數(shù)據(jù)強一致性保證吧恃,且在不丟失大多數(shù)副本的前提下,可以實現(xiàn)故障的自動恢復 (auto-failover)麻诀,無需人工介入痕寓。 - 5 一站式 HTAP 解決方案
TiDB 作為典型的 OLTP 行存數(shù)據(jù)庫,同時兼具強大的 OLAP 性能蝇闭,配合 TiSpark呻率,可提供一站式 HTAP解決方案,一份存儲同時處理OLTP & OLAPOLAP呻引、OLTP的介紹和比較無需傳統(tǒng)繁瑣的 ETL 過程礼仗。 - 6 云原生 SQL 數(shù)據(jù)庫
TiDB 是為云而設(shè)計的數(shù)據(jù)庫,同 Kubernetes (Kubernetes核心概念 )深度耦合逻悠,支持公有云元践、私有云和混合云,使部署童谒、配置和維護變得十分簡單单旁。
TiDB 的設(shè)計目標是 100% 的 OLTP 場景和 80% 的 OLAP 場景,更復雜的 OLAP 分析可以通過 TiSpark 項目來完成惠啄。 TiDB 對業(yè)務(wù)沒有任何侵入性慎恒,能優(yōu)雅的替換傳統(tǒng)的數(shù)據(jù)庫中間件任内、數(shù)據(jù)庫分庫分表等 Sharding 方案。同時它也讓開發(fā)運維人員不用關(guān)注數(shù)據(jù)庫 Scale 的細節(jié)問題融柬,專注于業(yè)務(wù)開發(fā)死嗦,極大的提升研發(fā)的生產(chǎn)力.
二. TiDb 整體架構(gòu)
TiDB 集群主要分為三個組件:
- TiDB Server
TiDB Server 負責接收 SQL 請求,處理 SQL 相關(guān)的邏輯粒氧,并通過 PD 找到存儲計算所需數(shù)據(jù)的 TiKV 地址越除,與 TiKV 交互獲取數(shù)據(jù),最終返回結(jié)果外盯。 TiDB Server是無狀態(tài)的摘盆,其本身并不存儲數(shù)據(jù),只負責計算饱苟,可以無限水平擴展孩擂,可以通過負載均衡組件(如LVS、HAProxy 或F5)對外提供統(tǒng)一的接入地址箱熬。 - PD Server
Placement Driver (簡稱 PD) 是整個集群的管理模塊类垦,其主要工作有三個: 一是存儲集群的元信息(某個 Key 存儲在哪個 TiKV 節(jié)點);二是對 TiKV 集群進行調(diào)度和負載均衡(如數(shù)據(jù)的遷移城须、Raft group leader的遷移等)蚤认;三是分配全局唯一且遞增的事務(wù) ID。
PD 是一個集群糕伐,需要部署奇數(shù)個節(jié)點砰琢,一般線上推薦至少部署 3 個節(jié)點。 - TiKV Server
TiKV Server 負責存儲數(shù)據(jù)良瞧,從外部看 TiKV 是一個分布式的提供事務(wù)的 Key-Value 存儲引擎陪汽。存儲數(shù)據(jù)的基本單位是 Region,每個 Region 負責存儲一個 Key Range (從 StartKey 到EndKey 的左閉右開區(qū)間)的數(shù)據(jù)莺褒,每個 TiKV 節(jié)點會負責多個 Region 掩缓。TiKV 使用 Raft協(xié)議做復制,保持數(shù)據(jù)的一致性和容災遵岩。副本以 Region 為單位進行管理你辣,不同節(jié)點上的多個 Region 構(gòu)成一個 RaftGroup,互為副本尘执。數(shù)據(jù)在多個 TiKV 之間的負載均衡由 PD 調(diào)度舍哄,這里也是以 Region 為單位進行調(diào)度。
三. 核心特性
- 1 水平擴展
無限水平擴展是 TiDB 的一大特點誊锭,這里說的水平擴展包括兩方面:計算能力和存儲能力表悬。TiDB Server 負責處理 SQL 請求,隨著業(yè)務(wù)的增長丧靡,可以簡單的添加 TiDB Server 節(jié)點蟆沫,提高整體的處理能力籽暇,提供更高的吞吐。TiKV 負責存儲數(shù)據(jù)饭庞,隨著數(shù)據(jù)量的增長戒悠,可以部署更多的 TiKV Server 節(jié)點解決數(shù)據(jù) Scale 的問題。PD 會在 TiKV 節(jié)點之間以 Region 為單位做調(diào)度舟山,將部分數(shù)據(jù)遷移到新加的節(jié)點上绸狐。所以在業(yè)務(wù)的早期,可以只部署少量的服務(wù)實例(推薦至少部署 3 個 TiKV累盗, 3 個 PD寒矿,2 個 TiDB),隨著業(yè)務(wù)量的增長若债,按照需求添加 TiKV 或者 TiDB 實例符相。 - 2 高可用
高可用是 TiDB 的另一大特點,TiDB/TiKV/PD 這三個組件都能容忍部分實例失效蠢琳,不影響整個集群的可用性主巍。下面分別說明這三個組件的可用性、單個實例失效后的后果以及如何恢復挪凑。
TiDB
TiDB 是無狀態(tài)的,推薦至少部署兩個實例逛艰,前端通過負載均衡組件對外提供服務(wù)躏碳。當單個實例失效時,會影響正在這個實例上進行的 Session散怖,從應用的角度看菇绵,會出現(xiàn)單次請求失敗的情況,重新連接后即可繼續(xù)獲得服務(wù)镇眷。單個實例失效后咬最,可以重啟這個實例或者部署一個新的實例。
PD
PD 是一個集群欠动,通過 Raft 協(xié)議保持數(shù)據(jù)的一致性永乌,單個實例失效時,如果這個實例不是 Raft 的 leader具伍,那么服務(wù)完全不受影響翅雏;如果這個實例是 Raft 的 leader,會重新選出新的 Raft leader人芽,自動恢復服務(wù)望几。PD 在選舉的過程中無法對外提供服務(wù),這個時間大約是3秒鐘萤厅。推薦至少部署三個 PD 實例橄抹,單個實例失效后靴迫,重啟這個實例或者添加新的實例。
TiKV
TiKV 是一個集群楼誓,通過 Raft 協(xié)議(raft一致性哈算法以及Raft 為什么是更易理解的分布式一致性算法 )保持數(shù)據(jù)的一致性(副本數(shù)量可配置玉锌,默認保存三副本),并通過 PD 做負載均衡調(diào)度慌随。單個節(jié)點失效時芬沉,會影響這個節(jié)點上存儲的所有 Region。對于 Region 中的 Leader 結(jié)點阁猜,會中斷服務(wù)丸逸,等待重新選舉;對于 Region 中的 Follower 節(jié)點剃袍,不會影響服務(wù)黄刚。當某個 TiKV 節(jié)點失效,并且在一段時間內(nèi)(默認 30 分鐘)無法恢復民效,PD 會將其上的數(shù)據(jù)遷移到其他的 TiKV 節(jié)點上憔维。
四. TiDb技術(shù)內(nèi)幕
- 1 保存數(shù)據(jù) TiDB 技術(shù)內(nèi)幕 - 說存儲
- 2 計算(很關(guān)鍵如何做sql運算) TiDB 技術(shù)內(nèi)幕 - 說計算
- 3 調(diào)度(Tidb集群管理) TiDB 技術(shù)內(nèi)幕 - 談?wù){(diào)度
五. 安裝部署
tidb安裝部署,可能比較麻煩畏邢,一步步照著做业扒,如果公司有專門的運維,這個工作可以由運維來搞舒萎,但是大多數(shù)的中小公司是沒有的程储,都是開發(fā)者兼職運維,所以作為一個開發(fā)者臂寝,還是了解下比較好章鲤。 安裝部署
聲明 :
以上只是對tidb資料的簡單整理和對tidb的一個基本了解,更詳細的資料可以轉(zhuǎn)至tidb的官方文檔咆贬,注意里面的常見問題和解答败徊,很有用:PingCAP Tidb官方文檔