TIDB介紹 新資料庫趨勢

2022-06-09 23:24:11 字數 1819 閱讀 3802

tidb是什麼? 

tidb 受谷歌spanner和f1的**啟發的new sql資料庫,這類資料庫不僅具有nosql對海量資料的儲存管理能力,還保持了傳統資料庫支援acid和sql等特性,同類資料庫還包括巨杉資料庫。

tidb的原理與實現 

tidb 架構是 sql 層和 kv 儲存層分離,相當於 innodb 外掛程式儲存引擎與 mysql 的關係。

有了 tikv,tidb 層只需要實現 sql 層,再加上 mysql 協議的支援,應用程式就能像訪問 mysql 那樣去訪問 tidb 了

tidb的成功案例 

目前今日頭條,摩拜單車、鳳凰網、游族網路等公司採用了tidb資料庫。 

這些企業採用tidb的主要原因包括:

1. 相容mysql

2. 分布式儲存,擴充套件能力強。

3. 支援oltp

4. 可以直接利用tispark做實時分析。

5. 穩定的高可用性

採用tidb的公司需求具有的共同點:

1. 擁有數億以上記錄的資料,希望在保持海量資料儲存能力的前提下保留良好的oltp效能和qps效能

2. 希望資料庫擁有實時計算的能力

tidb的架構 

tikv server:負責資料儲存,是乙個提供事務的分布式 key-value 儲存引擎; 

pd server:負責管理排程,如資料和 tikv 位置的路由資訊維護、tikv 資料均衡等; 

tidb server:負責 sql 邏輯,通過 pd 定址到實際資料的 tikv 位置,進行 sql 操作。

tidb的特性

1. 水平擴充套件:包括計算能力和儲存能力。tidb server 負責處理 sql 請求,隨著業務的增長,可以簡單的新增 tidb server 節點,提高整體的處理能力,提供更高的吞吐。tikv 負責儲存資料,隨著資料量的增長,可以部署更多的 tikv server 節點解決資料 scale 的問題。pd 會在 tikv 節點之間以 region 為單位做排程,將部分資料遷移到新加的節點上。

2. 高可用:tidb/tikv/pd 這三個元件都能容忍部分例項失效,不影響整個集群的可用性

tidb的部署

1. 因 tidb 和 pd 對磁碟 io 要求不高,所以只需要普通磁碟即可。

2. tikv 對磁碟 io 要求較高。tikv 硬碟大小建議不超過 500g,以防止硬碟損害時,資料恢復耗時過長。整個 tidb 架構是面向未來、面向海量資料高併發場景,底層儲存技術(如資料定位 seek)都是針對當前主流的 ssd 進行設計和優化的,不會對傳統的 sata/sas 機械硬碟再進行優化。(參考鳳凰網的部署方案)

3. 部署工具使用了 tidb-ansible。tidb-ansible 是 pingcap 基於 ansible playbook 功能編寫了乙個集群部署工具叫 tidb-ansible。使用該工具可以快速部署乙個完整的 tidb 集群(包括 pd、tidb、tikv 和集群監控模組)

tidb的監控方案 

pincap 團隊給 tidb 提供了一整套監控的方案,他們使用開源時序資料庫 prometheus 作為監控和效能指標資訊儲存方案,使用 grafana 作為視覺化元件進行展示。(參考今日頭條的方案) 

監控的原理:

1. 在 client 端程式中定製需要的 metric

2. push gateway 來接收 client push 上來的資料,統一供 prometheus 主伺服器抓取。

3. alertmanager 用來實現報警機制,使用 grafana 來進行展示

TiDB 資料庫安裝使用

前言 tidb是國內pingcap團隊使用golang語言研發並開源的分布式 htap hybrid transactional and analytical processing 資料庫,結合了傳統的 rdbms 和 nosql 的最佳特性。tidb 相容 mysql,支援無限的水平擴充套件,具備...

分布式資料庫TIDB

tidb 是國內 pingcap 團隊開發的乙個分布式 sql 資料庫。其靈感來自於 google 的 f1 和 google spanner,tidb 支援包括傳統 rdbms 和 nosql 的特性。架構圖 tidb 集群主要分為三個元件 tidb server tidb server 是無狀態...

TiDB資料庫left join與版本問題

tidb某集群版本2.1.2,公升級至3.0.1,公升級無報錯 問題 公升級後,業務反應 報表平台部分任務執行失敗 問題原因 2.1.2版本 公升級至3.0.1版本 後,多於2個 left join 測試 多個inner join無影響 處理 公升級至3.0.2解決 注 希望3.0.1 版本的tid...