GBase 8a GDCA知識點(diǎn)整理

00.數(shù)據(jù)庫發(fā)展

01.核心技術(shù)

GBase 8a MPP Cluster應(yīng)用場景:數(shù)倉、 BI、決策支持系統(tǒng)。
核心技術(shù)如下:
? 數(shù)據(jù)存儲(chǔ):列式存儲(chǔ) 、壓縮存儲(chǔ)、智能索引
? 并行計(jì)算:多線程并行、多節(jié)點(diǎn)并行
? 集群高可用:調(diào)度集群、計(jì)算集群、管理集群
? 在線擴(kuò)展:集群擴(kuò)容、節(jié)點(diǎn)替換
? 虛擬集群和資源管理:虛擬集群、鏡像集群、多實(shí)例、多租戶
? 數(shù)據(jù)集成:數(shù)據(jù)集成方案、數(shù)據(jù)加載、數(shù)據(jù)導(dǎo)出
? 安全管理:數(shù)據(jù)脫敏、透明加密、監(jiān)控系統(tǒng)

1.1數(shù)據(jù)存儲(chǔ)

列式存儲(chǔ)
? 表的每一列物理上分開存儲(chǔ)。
? 數(shù)據(jù)以DC(數(shù)據(jù)單元)為單位進(jìn)行組織, 存成DC文件。
? DC文件依據(jù)操作系統(tǒng)的文件大小限制進(jìn)行分裂和存儲(chǔ)。
? DC是基本I/O單位, 只有查詢所涉及到的列才產(chǎn)生I/O。
? 每個(gè)DC包含65536行數(shù)據(jù), 數(shù)據(jù)行數(shù)不足時(shí)以DC尾塊形式單獨(dú)存放。
? DC尾塊不封裝、 不壓縮。

壓縮存儲(chǔ)
基于一列內(nèi)同類型數(shù)據(jù),實(shí)現(xiàn)高壓縮比存儲(chǔ),節(jié)省了存儲(chǔ)和電能,也大幅降低磁盤IO。
? 壓縮比可達(dá)到1:20, 遠(yuǎn)遠(yuǎn)高于行存儲(chǔ)。
? 實(shí)現(xiàn)庫級、表級、列級三級壓縮選項(xiàng)。
? 壓縮算法按數(shù)據(jù)類型和數(shù)據(jù)分布不同而優(yōu)化,自動(dòng)選擇最優(yōu)壓縮算法,靈活平衡性能與壓縮比的關(guān)系。
? 可以對壓縮方式進(jìn)行修改。

粗粒度智能索引
? 粗粒度: 輕量級索引(最大、最小、求和、空值等), 索引的建立和維護(hù)對系統(tǒng)資源的占用和性能影響幾乎為零。
? 透明性: 索引自動(dòng)建立, 并且隨數(shù)據(jù)變化自動(dòng)更新, 無需人工干預(yù)。
? 有效性: 大大縮小查詢和數(shù)據(jù)物化的范圍, 迅速定位目標(biāo)數(shù)據(jù)集。

1.2并行計(jì)算

單節(jié)點(diǎn)多線程并行
多節(jié)點(diǎn)MPP并行

1.3集群高可用

基于集群功能模塊的高可用。

GCluster 調(diào)度集群(類比TiDBServer)
GCluster 負(fù)責(zé)SQL 的解析、 SQL 優(yōu)化、 分布式執(zhí)行計(jì)劃生成、 執(zhí)行調(diào)度。
? 元數(shù)據(jù)自動(dòng)同步, 避免單點(diǎn)故障(所有調(diào)度集群節(jié)點(diǎn)的元數(shù)據(jù)都在后臺(tái)自動(dòng)同步, 對用戶透明)
? 自動(dòng)故障倒換, 接管SQL執(zhí)行(GCware服務(wù)實(shí)時(shí)探測節(jié)點(diǎn)失效并且馬上啟動(dòng)故障倒換機(jī)制)
? 多類日志保障, 節(jié)點(diǎn)信息同步(重新恢復(fù)的調(diào)度節(jié)點(diǎn)根據(jù)GCware日志信息恢復(fù)到最新的元數(shù)據(jù))

GNode(類比TiKVServer)
表數(shù)據(jù)按照一定的規(guī)則分別存儲(chǔ)在不同的節(jié)點(diǎn)上, 各節(jié)點(diǎn)根據(jù)預(yù)先設(shè)定的分片規(guī)則進(jìn)行備份。
GNode 是集群中最基本的存儲(chǔ)和計(jì)算單元。 GNode 負(fù)責(zé)集群數(shù)據(jù)在節(jié)點(diǎn)上的實(shí)際存儲(chǔ), 并從GCluster 接收和執(zhí)行經(jīng)分解的SQL 執(zhí)行計(jì)劃,執(zhí)行結(jié)果返回給GCluster。
? 數(shù)據(jù)高可用:支持多副本, 最多2個(gè);支持指定副本存放位置。
? 多分片機(jī)制:實(shí)現(xiàn)負(fù)載均衡,解決木桶效應(yīng)。

GCware(類比PDServer)
GCWare 用于各節(jié)點(diǎn)實(shí)例間共享信息, 以及控制多副本數(shù)據(jù)操作時(shí), 提供可操作節(jié)點(diǎn),并在多副本操作中, 控制各節(jié)點(diǎn)數(shù)據(jù)一致性狀態(tài)。
? 選舉機(jī)制:通過選舉機(jī)制, 從若干gcware節(jié)點(diǎn)中選舉出一個(gè)Leader與其它功能組件進(jìn)行通信和交互。同時(shí)發(fā)送心跳消息與其它gcware節(jié)點(diǎn)保持聯(lián)系(詳見2.3)
? 大數(shù)原則:當(dāng)GCWare集群大規(guī)模節(jié)點(diǎn)故障, 達(dá)到或超過GCWare集群節(jié)點(diǎn)總數(shù)的1/2時(shí), Leader無法確認(rèn)執(zhí)行的安全性, 集群任務(wù)將停止工作。

1.4 集群擴(kuò)展

線性動(dòng)態(tài)擴(kuò)展
Shared Nothing + MPP集群性能隨節(jié)點(diǎn)數(shù)增加呈近似線性關(guān)系

在線擴(kuò)容/縮容
分片重分布和手動(dòng)搬移分片的方式實(shí)現(xiàn)集群擴(kuò)容和縮容。分片搬移方式提高了擴(kuò)容/縮容的效率

節(jié)點(diǎn)替換
? 節(jié)點(diǎn)故障: 隨著集群規(guī)模不斷擴(kuò)大, 集群節(jié)點(diǎn)故障的概率會(huì)隨之增加。
? 集群硬件升級: 隨著數(shù)據(jù)量的增大, 單個(gè)節(jié)點(diǎn)的計(jì)算能力和存儲(chǔ)能力也會(huì)成為瓶頸。

1.5 虛擬集群和資源管理

虛擬集群(VC)
VC是物理集群的虛擬化,是一種資源隔離手段,將一個(gè)大集群進(jìn)行物理垂直分割,形成多個(gè)邏輯子集群。 各邏輯子集
群可以根據(jù)不同業(yè)務(wù)的存儲(chǔ)與計(jì)算需求, 獨(dú)立規(guī)劃、 擴(kuò)展集群規(guī)模和計(jì)算資源;

集群鏡像
? 建立與終止鏡像關(guān)系操作靈活。 終止鏡像關(guān)系后, 兩集群均可各自工作。
? 鏡像集群數(shù)據(jù)實(shí)時(shí)同步, 滿足應(yīng)用快速切換。
? 鏡像集群同步鎖管理, 避免一張表數(shù)據(jù)多個(gè)站點(diǎn)同時(shí)修改。 有效控制一致性,實(shí)現(xiàn)讀寫負(fù)載分離。
? 鏡像集群互為備份, 可實(shí)現(xiàn)同城異地容災(zāi), 保證業(yè)務(wù)不間斷。

應(yīng)用場景:
? 雙活備份(同城/異地)
? 集群遷移
? 負(fù)載分擔(dān)

多實(shí)例
可以解決以下服務(wù)器硬件性能無法充分利用的問題:
1.當(dāng)服務(wù)器CPU邏輯核數(shù)大于32時(shí),單個(gè)數(shù)據(jù)庫實(shí)例上的單個(gè)任務(wù)無法隨核數(shù)的增加而性能線性提升;

  1. 當(dāng)服務(wù)器采用NUMA架構(gòu)并具有多個(gè)NUMA節(jié)點(diǎn)時(shí), 單個(gè)數(shù)據(jù)庫實(shí)例頻繁的跨NUMA節(jié)點(diǎn)訪問內(nèi)存資源,性能無法實(shí)現(xiàn)最優(yōu);
  2. 單個(gè)數(shù)據(jù)庫實(shí)例無法發(fā)揮SSD/NVME等新硬件的處理能力。

多租戶
通過對有限的系統(tǒng)資源進(jìn)行管理和分配, 使特定用戶或者任務(wù)能夠得到更多的資源或更優(yōu)先的服務(wù), 從而使數(shù)據(jù)的使用效率最大化。
物理資源包括:
? CPU
? 內(nèi)存
? 磁盤I/O
? 磁盤空間
? 網(wǎng)絡(luò)連接數(shù)
管理資源包括:
? 任務(wù)優(yōu)先級
? 并發(fā)任務(wù)數(shù)
? 任務(wù)等待時(shí)間

1.6 數(shù)據(jù)集成

集成方案
? GBase 8a MPP支持多種數(shù)據(jù)源的加載和同步操作
? 通過和Kafka系統(tǒng)無縫集成, GBase 8a MPP實(shí)現(xiàn)和主流關(guān)系型、 非關(guān)系型數(shù)據(jù)的實(shí)時(shí)接入流式加載。

批量加載
? 簡單易用:sql方式下發(fā)加載命令;支持ftp、http、hadoop(hdfs)等多種數(shù)據(jù)源
? 高性能:加載只寫主分片,副本內(nèi)部自動(dòng)同步,性能大幅提升;加載速度:30T+/小時(shí)
? 可擴(kuò)展:集群整體加載吞吐能力隨節(jié)點(diǎn)數(shù)增加而線性提升

數(shù)據(jù)導(dǎo)出
? 查詢數(shù)據(jù)導(dǎo)出:通過select語句的形式導(dǎo)出數(shù)據(jù);支持普通文本、 定長文本、 壓縮文件、 HDFS文件導(dǎo)出;支持遠(yuǎn)程導(dǎo)出
? 表結(jié)構(gòu)導(dǎo)出:導(dǎo)出表結(jié)構(gòu),導(dǎo)出存儲(chǔ)過程,導(dǎo)出自定義函數(shù)

1.7安全管理

動(dòng)態(tài)數(shù)據(jù)脫敏
? 用戶權(quán)限控制
? 指定脫敏屬性字段
? 多種脫敏方式:默認(rèn)脫敏default()、隨機(jī)脫敏random(start,end)、哈希脫敏sha()

高效透明加密
? 透明加密/解密:數(shù)據(jù)在后臺(tái)自動(dòng)加密和解密
? 輕量級數(shù)據(jù)加密/解密:加解密負(fù)載對整體性能影響小于5%
? 面向數(shù)據(jù)列的加密/解密:根據(jù)數(shù)據(jù)字段的安全級別進(jìn)行加密

圖形化管理監(jiān)控系統(tǒng)
監(jiān)控:集群運(yùn)行狀態(tài)、資源利用情況、網(wǎng)絡(luò)通訊情況...

02.工作機(jī)制

2.1功能組件

核心組件
? GCluster:
GCluster 是整個(gè)集群的統(tǒng)一入口。 主要負(fù)責(zé)從業(yè)務(wù)端接受連接并將查詢結(jié)果返回給業(yè)務(wù)端。 GCluster 會(huì)接受 SQL、 進(jìn)行解析優(yōu)化, 生成分布式執(zhí)行計(jì)劃, 選取可操作的節(jié)點(diǎn)執(zhí)行分布式調(diào)度, 并將結(jié)果反饋給業(yè)務(wù)端。
? GCWare:
GCWare 為集群提供一致性服務(wù)。 主要負(fù)責(zé)記錄并保存集群結(jié)構(gòu)、 節(jié)點(diǎn)狀態(tài)、 節(jié)點(diǎn)資源狀態(tài)、 并行控制和分布式排隊(duì)鎖等信息。 在多副本數(shù)據(jù)操作時(shí), 記錄和查詢可操作節(jié)點(diǎn), 提供各節(jié)點(diǎn)數(shù)據(jù)一致性狀態(tài)。
? GNode:
GNode 是集群中最基本的存儲(chǔ)和計(jì)算單元。 GNode 主要負(fù)責(zé)存儲(chǔ)集群數(shù)據(jù)、 接收和執(zhí)行 GCluster 下發(fā)的 SQL 并將執(zhí)行結(jié)果返回給 GCluster。

輔助組件
用于監(jiān)測和保障三大核心功能組件的正常運(yùn)行。
? GCMonit:
用于實(shí)時(shí)監(jiān)測GCluster和GNode核心組件的運(yùn)行狀態(tài), 同時(shí)監(jiān)測gcmmonit服務(wù), 一旦發(fā)現(xiàn)監(jiān)測的進(jìn)程狀態(tài)出現(xiàn)異常, 會(huì)自動(dòng)根據(jù)配置文件中的內(nèi)容啟用相應(yīng)的服務(wù), 從而保證各組件正常運(yùn)行。
? GCMMonit:
負(fù)責(zé)監(jiān)測 gcmonit 程序的運(yùn)行狀況, 當(dāng)發(fā)現(xiàn)gcmonit 進(jìn)程狀態(tài)異常, 會(huì)自動(dòng)拉起該進(jìn)程。
? GCware_Monit:
用于實(shí)時(shí)監(jiān)測 GCware 組件及gcware_mmonit的運(yùn)行狀態(tài), 一旦發(fā)現(xiàn)監(jiān)測的服務(wù)進(jìn)程發(fā)生狀態(tài)變化, 會(huì)根據(jù)配置文件中的內(nèi)容來執(zhí)行相應(yīng)的服務(wù)啟動(dòng)命令, 從而保證服務(wù)組件正常運(yùn)行。
? GCware_MMonit:
負(fù)責(zé)監(jiān)測 gcware_monit 程序的運(yùn)行狀況, 當(dāng)發(fā)現(xiàn)該進(jìn)程狀態(tài)異常, 會(huì)自動(dòng)拉起該進(jìn)程。
? GCRecover & SyncServer:
用于多副本間的數(shù)據(jù)同步。 一旦發(fā)生多副本間數(shù)據(jù)文件不一致則調(diào)用該進(jìn)程進(jìn)行同步, 從而保證多副本數(shù)據(jù)文件的一致性。 GCrecover部署于gcluster節(jié)點(diǎn), SyncServer部署于gnode節(jié)點(diǎn)。

服務(wù)進(jìn)程
功能組件和服務(wù)進(jìn)程列表:
GCluster gclusterd
GCWare gcware
GNode gbased
GCMonit gcmonit
GCMMonit gcmmonit
GCware_Monit gcware_monit
GCware_MMonit gcware_mmonit
GCRecover gcrecover
SyncServer gc_sync_server

節(jié)點(diǎn)服務(wù)
? Gcluster Node:
部署GCluster 組件的節(jié)點(diǎn), 運(yùn)行 gclusterd、 gcrecover、 gcmonit、 gcmmonit 服務(wù)。
? Gcware Node:
部署GCware組件的節(jié)點(diǎn), 運(yùn)行 gcware、 gcware_monit、 gcware_mmonit 服務(wù)。
? Data Node:
部署GNode組件的節(jié)點(diǎn), 運(yùn)行有 gbased、 gc_sync_server、 gcmonit、 gcmmonit 服務(wù)。

注:
GBase 8a MPP Cluster支持一臺(tái)節(jié)點(diǎn)服務(wù)器同時(shí)承擔(dān)多個(gè)節(jié)點(diǎn)角色任務(wù)。 如果一臺(tái)節(jié)點(diǎn)服務(wù)器
同時(shí)承擔(dān)了Gcluster和Gcware節(jié)點(diǎn)角色, 那么該節(jié)點(diǎn)就被稱為“Coordinator Node” 。

2.2集群架構(gòu)

按照節(jié)點(diǎn)角色的不同, 可以邏輯上分為多個(gè)功能集群, 從而形成聯(lián)邦架構(gòu)。

? GCware 集群
GCWare 集群由一臺(tái)或多臺(tái)安裝了GCWare組件的服務(wù)器節(jié)點(diǎn)組成。 GCWare 集群內(nèi)的各節(jié)點(diǎn)通過內(nèi)部選舉機(jī)制選舉出一個(gè)“Leader” , 并由該“Leader” 與其它功能集群進(jìn)行信息交互,從而為GBase 8a 集群整體提供信息一致性服務(wù)。 GCWare 集群的節(jié)點(diǎn)規(guī)模不得超過64臺(tái)。

? GCluster 集群
GCluster 集群是GBase 8a 數(shù)據(jù)庫的統(tǒng)一入口。 主要負(fù)責(zé)從業(yè)務(wù)端接受連接并將操作結(jié)果返回給業(yè)務(wù)端。 GCluster 會(huì)接收 SQL, 進(jìn)行解析、 優(yōu)化, 生成分布式執(zhí)行計(jì)劃, 選取可操作的節(jié)點(diǎn)執(zhí)行分布式調(diào)度, 并將操作結(jié)果反饋給業(yè)務(wù)端。

? Data 集群
Data 集群由若干GNode節(jié)點(diǎn)組成。 數(shù)據(jù)分布存儲(chǔ)并行計(jì)算。 支持按業(yè)務(wù)物理分割成多個(gè)虛擬集群 (VC) 。

2.3核心機(jī)制

選舉機(jī)制
選舉機(jī)制是在眾多GCware節(jié)點(diǎn)中選舉出一個(gè)Leader(領(lǐng)導(dǎo)者) 用于與Gcluster集群和Gnode集群進(jìn)行實(shí)時(shí)交互, 提供數(shù)據(jù)一致性保障。 Leader(領(lǐng)導(dǎo)者) 選舉出來后會(huì)向其它GCware節(jié)點(diǎn)定期發(fā)送心跳消息, 并實(shí)時(shí)同步更新信息。 整個(gè)過程對用戶透明。參考RAFT協(xié)議:

https://www.bilibili.com/video/BV1so4y1r7eM/?spm_id_from=333.337.search-card.all.click&vd_source=adbe4dade12efbb9aa6895c308f74a54

? Leader: 全權(quán)負(fù)責(zé)接收客戶端的請求命令, 并將命令作為日志條目復(fù)制給其他服務(wù)器, 在確認(rèn)安全的時(shí)候, 將日志命令提交執(zhí)行。
? Candidate: 是選舉階段的候選者。 當(dāng)Leader故障時(shí), 所有follower會(huì)根據(jù)隨機(jī)計(jì)時(shí)器產(chǎn)生Candidate, Candidate發(fā)送選票并接收確認(rèn)信息。 只有收到多數(shù)選票的確認(rèn)才會(huì)成為新的Leader。
? Follower: 是所有服務(wù)器的最初狀態(tài), 也是所有未贏得選舉的服務(wù)器的最終狀態(tài)。

注:
在一個(gè)任期中, 每個(gè)節(jié)點(diǎn)都只能投一次票, 獲得了大多數(shù)選票的Candidate會(huì)成為Leader。 每次接收到選票信息時(shí), 節(jié)點(diǎn)會(huì)檢查其任期值并進(jìn)行校驗(yàn)或更新。 如果一個(gè)節(jié)點(diǎn)發(fā)現(xiàn)自己的任期號比其他節(jié)點(diǎn)小, 它會(huì)更新到較大的任期號。 若該節(jié)點(diǎn)是Candidate或Leader, 它就會(huì)立刻回退到Follower狀態(tài)。 如果收到的任期號比自己的小, 它會(huì)拒絕此次請求。
若集群節(jié)點(diǎn)大規(guī)模關(guān)閉或故障造成參與投票的gcware節(jié)點(diǎn)數(shù)無法超過總gcware節(jié)點(diǎn)數(shù)的一半時(shí), 選舉過程將無法選舉出Leader。集群任務(wù)將被阻塞。 只有g(shù)cware集群內(nèi)的可用節(jié)點(diǎn)數(shù)再次超過1/2時(shí), 才能選舉出Leader, 集群任務(wù)也才能夠正常執(zhí)行。

Failover機(jī)制
數(shù)據(jù)庫執(zhí)行DDL/DML操作時(shí), 如果在提交階段出現(xiàn)執(zhí)行節(jié)點(diǎn)的服務(wù)崩潰或者網(wǎng)絡(luò)異常, Failover能夠自動(dòng)的由另外一個(gè)gcluster節(jié)點(diǎn)對故障節(jié)點(diǎn)上運(yùn)行的提交動(dòng)作進(jìn)行接管, 從而保證集群數(shù)據(jù)的一致性。

GCluster啟動(dòng)后會(huì)與GCware建立連接。
上層應(yīng)用發(fā)起DDL/DML操作時(shí), 接收到的Gcluster會(huì)向GCware注冊Failover信息并下發(fā)此執(zhí)行任務(wù)。
當(dāng)下發(fā)執(zhí)行任務(wù)的Gcluster節(jié)點(diǎn)由于意外故障處于不可用狀態(tài)時(shí),Gcware集群會(huì)監(jiān)測到,并通知正??捎玫腉cluster節(jié)點(diǎn)來依次領(lǐng)取failover任務(wù)。
接管節(jié)點(diǎn)對已執(zhí)行的操作進(jìn)行回滾, 保持?jǐn)?shù)據(jù)一致性。

每個(gè)gcluster每次只能接管一條failover任務(wù)。 若多個(gè)gcluster在同一時(shí)間接管多個(gè)failover任務(wù), 它們可以同時(shí)執(zhí)行。 執(zhí)行成功并提交后, failover信息將從gcware中被刪除。 整個(gè)過程對用戶完全透明。

多分片機(jī)制
“分片” 可以理解為是集群的一個(gè)hash桶, 存在于集群的gnode節(jié)點(diǎn)上。 hash桶的數(shù)量由數(shù)據(jù)庫管理員在創(chuàng)建Distribution分布表時(shí)指定。 數(shù)據(jù)庫根據(jù)hash桶的數(shù)量分配hashkey, 從而決定用戶數(shù)據(jù)最終存儲(chǔ)在哪個(gè)gnode節(jié)點(diǎn)上。
分布表是8a數(shù)據(jù)庫存放數(shù)據(jù)的核心映射表。 它記錄著VC、 節(jié)點(diǎn)和分片布局的關(guān)鍵信息。 它是數(shù)據(jù)庫數(shù)據(jù)訪問和存儲(chǔ)的關(guān)鍵, 決定著數(shù)據(jù)庫的整體性能和高可用性。

主分片: 是用戶在創(chuàng)建分布表時(shí)指定的hash桶。
備份分片: 是對主分片的備份, 也是對應(yīng)的數(shù)據(jù)副本存儲(chǔ)的位置。

分布表:
? 支持指定主分片數(shù)量和位置
? 支持指定備份分片存放位置
? 支持每個(gè)主分片最多兩份備份

多分片的價(jià)值:
? 靈活分配節(jié)點(diǎn)存儲(chǔ)比例
? 有效解決集群木桶效應(yīng)
? 支持?jǐn)U容時(shí)的分片快速搬移

分片主副本的倒換機(jī)制
①GNode啟動(dòng)后與GCware建立連接。
②GCware發(fā)現(xiàn)gnode故障, 將設(shè)置gnode節(jié)點(diǎn)的gbased服務(wù)為close。 Gcluster會(huì)獲知。
③新sql不再下發(fā)至該gnode節(jié)點(diǎn), 而是下發(fā)至該故障節(jié)點(diǎn)的備份分片所在的節(jié)點(diǎn)。
缺省情況下, 當(dāng)GCware發(fā)現(xiàn)gnode故障, gcware每30秒定時(shí)檢測問題節(jié)點(diǎn), 直至恢復(fù)正常。

2.4數(shù)據(jù)分布

元數(shù)據(jù)的存儲(chǔ)
? 元數(shù)據(jù)主要由GCluster組件負(fù)責(zé)管理和保存。
GCluster節(jié)點(diǎn)保存的元數(shù)據(jù)包括: VC信息、 TableID信息、 庫字符集信息、 表結(jié)構(gòu)信息、 列
屬性信息、 表屬性信息和索引信息等。
用戶可以通過查詢系統(tǒng)庫information_schema和gbase庫進(jìn)行查看。
所有GCluster節(jié)點(diǎn)的元數(shù)據(jù)內(nèi)容保持一致。
? GCware組件負(fù)責(zé)記錄集群所需的一致性信息。
Gcware節(jié)點(diǎn)保存的元數(shù)據(jù)包括: 集群的拓?fù)浣Y(jié)構(gòu)和分片規(guī)則、 SCN號 、 TABLE_ID 、COMMIT_ID 、 TASK_ID、 VCID、 集群恢復(fù)日志、 集群狀態(tài)、 集群鎖等信息。
所有GCware節(jié)點(diǎn)的元數(shù)據(jù)內(nèi)容保持一致。
? GNode節(jié)點(diǎn)上只保存屬于自己的元數(shù)據(jù)。 包括: 讀寫標(biāo)志信息、 DC信息等。

用戶數(shù)據(jù)的存儲(chǔ)
用戶數(shù)據(jù)的存儲(chǔ)依賴于分布表, 即distribution分布信息表。 分布表是8a數(shù)據(jù)庫存放數(shù)據(jù)的核心映射表。 它記錄著VC、 節(jié)點(diǎn)和分片布局的關(guān)鍵信息。 它是數(shù)據(jù)庫數(shù)據(jù)訪問和存儲(chǔ)的關(guān)鍵,決定著數(shù)據(jù)庫的整體性能和高可用性。

分布表的分片分布規(guī)則

  1. pattern 1 “負(fù)載均衡模式”
  2. pattern 2 “節(jié)點(diǎn)高可用模式”
  3. 自定義模式(編寫xml分片配置文件, 自定義高可用方案)
    注意:
    ? pattern 1 模式和pattern 2 模式是數(shù)據(jù)庫系統(tǒng)提供的內(nèi)置分片模板。 管理員可選擇使用。
    ? 自定義模式則完全由管理員通過改寫配置文件, 自定義分片和副本規(guī)則。

pattern 1
Pattern 1是數(shù)據(jù)庫分片分布的默認(rèn)模板。 它會(huì)根據(jù)rack的設(shè)置, 自動(dòng)選擇不同的備份規(guī)則。

pattern 2
該模式采用將節(jié)點(diǎn)內(nèi)的主分片自動(dòng)完整備份到下一個(gè)節(jié)點(diǎn)的備份方式。 此種方式忽略了rack的概念, 完全是針對節(jié)點(diǎn)進(jìn)行的備份

自定義模式
該模式是對前兩種Pattern模式的替代。 前兩種模式都是按照系統(tǒng)規(guī)則自動(dòng)設(shè)置主分片和備份分片的位置, 操作簡便, 但靈活度低。 自定義模式, 給予管理員更多的配置靈活性。

表類型對數(shù)據(jù)分布的影響
GBase 8a 支持兩種用戶分布表:
? 隨機(jī)分布表
用戶數(shù)據(jù)按照一個(gè)隨機(jī)數(shù)計(jì)算hash并匹配distribution分布信息表內(nèi)的分片, 根據(jù)分片與節(jié)
點(diǎn)的映射關(guān)系存放到指定節(jié)點(diǎn)上。 各節(jié)點(diǎn)分片數(shù)據(jù)基本保持平均。
? hash分布表
按照建表時(shí)指定的hash分布列內(nèi)的實(shí)際用戶數(shù)據(jù)計(jì)算hash結(jié)果, 再匹配distribution分布
信息表內(nèi)的分片, 存儲(chǔ)到指定節(jié)點(diǎn)上。 用戶數(shù)據(jù)散列分布, 有可能產(chǎn)生分布傾斜。

03.安裝與卸載

服務(wù)組件默認(rèn)端口:

默認(rèn)端口 端口協(xié)議類型 組件名稱 端口含義
5258 TCP Gcluster Coordinator集群節(jié)點(diǎn)對外提供服務(wù)的端口
5050 TCP Gnode Data集群節(jié)點(diǎn)對外提供服務(wù)的端口
5918 TCP/UDP Gcware gcware節(jié)點(diǎn)間通訊端口
5919 TCP gcware 外部連接gcware節(jié)點(diǎn)端口
6268 TCP Recover_monit_port 監(jiān)控收集信息端口
5288 TCP syncServer syncServer服務(wù)端口
6268 TCP GcrecoverMonit Gcrecover服務(wù)端口
16066-16166 TCP 數(shù)據(jù)遠(yuǎn)程導(dǎo)出端口 數(shù)據(jù)遠(yuǎn)程導(dǎo)出端口

關(guān)鍵文件:
SetSysEnv.py:運(yùn)行環(huán)境設(shè)置腳本
gcinstall.py:安裝腳本
demo.options:安裝配置文件
gcChangeInfo.xml:描述集群內(nèi)節(jié)點(diǎn)和rack(機(jī)柜) 對應(yīng)關(guān)系的文件

生成分布信息表:gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 1
連接并登錄數(shù)據(jù)庫:gccli -uroot -p
初始化操作:gbase> initnodedatamap;
停止Gcluster和Gnode節(jié)點(diǎn)的相關(guān)服務(wù):gcluster_services all stop
安裝:./gcinstall.py --silent=demo.options
卸載集群:unInstall.py --silent=demo.options
查看集群節(jié)點(diǎn)狀態(tài):gcadmin

04.客戶端

例:
./gccli –uroot –p111111 -h172.16.9.167–P5258 –Dtest -e “show databases;select database();”
SQL文件輸入方法:
$./gccli -uroot -p111111 -Dtest -vvv -f <query_join.sql >>query_join.result 2>query_join.err
客戶端安裝節(jié)點(diǎn)應(yīng)為非Gcluster節(jié)點(diǎn),Gcluster節(jié)點(diǎn)已內(nèi)置命令行客戶端,無需安裝

05.集群管理

5.1集群管理工具

gcadmin工具隨GBase 8a數(shù)據(jù)庫一起安裝, 部署在gcware/bin目錄中

5.2集群狀態(tài)管理

gcadmin
查看集群信息:
gcadmin showcluster f

集群工作狀態(tài) : ACTIVE/shrinkOnly
集群模式: normal/readonly/recovery
模組進(jìn)程狀態(tài): open / close / offline
數(shù)據(jù)一致性狀態(tài): 0 / 1

切換集群模式:
gcadmin switchmode readonly

模組進(jìn)程種類
? GCware node:
gcware進(jìn)程名: gcware
? Coordinator node:
gcluster進(jìn)程名: gclusterd
自動(dòng)恢復(fù)進(jìn)程名: gcrecover
? Data node:
gnode進(jìn)程名: gbased
syncserver進(jìn)程名: gc_sync_server

模組監(jiān)控工具是一種模組進(jìn)程狀態(tài)查看和保護(hù)程序, 當(dāng)監(jiān)控的模組進(jìn)程意外關(guān)閉, 模組監(jiān)控工具會(huì)自
動(dòng)嘗試將其拉起, 從而保障集群服務(wù)正常運(yùn)行。

監(jiān)控工具 運(yùn)行節(jié)點(diǎn) 監(jiān)控的模組名
gcware_monit gcware節(jié)點(diǎn) gcware、gcware_mmonit
gcware_mmonit gcware節(jié)點(diǎn) gcware_monit
gcmonit gcluster節(jié)點(diǎn) gcluster、gcrecover
gcmonit gnode節(jié)點(diǎn) gbase_節(jié)點(diǎn)IP、syncserver_節(jié)點(diǎn)IP
gcmonit gcluster/gnode節(jié)點(diǎn) gcmmonit
gcmmonit gcluster/gnode節(jié)點(diǎn) gcmonit

監(jiān)控語句:
gcware_monit --status
gcmonit --status

模組啟停語句:
gcware_services all start
gcluster_services all info

系統(tǒng)自動(dòng)恢復(fù):
gcrecover 遵循先恢復(fù) DDL 操作,然后調(diào)用同步服務(wù) gc_sync_server 恢復(fù)數(shù)據(jù)的原則?;謴?fù)后,系統(tǒng)自動(dòng)將 1 轉(zhuǎn)換為 0

自動(dòng)恢復(fù)原理:
當(dāng)某個(gè)節(jié)點(diǎn)執(zhí)行命令失敗后,數(shù)據(jù)恢復(fù)工具可監(jiān)控到錯(cuò)誤日志,然后調(diào)用同步工具,自動(dòng)修復(fù)節(jié)點(diǎn)數(shù)據(jù)不一致的情況,確保各節(jié)點(diǎn)數(shù)據(jù)的一致性。

5.3集群同步日志

DDL event日志
gcadmin showddlevent

DML event日志
gcadmin showdmlevent

DMLstorageevent 日志
gcadmin showdmlstorageevent

Failover 日志
gcadmin showfailover

5.4分布信息管理

即對distribution表的管理。 gcadmin工具提供對distribution表的創(chuàng)建、 刪除和導(dǎo)出等操作。
創(chuàng)建:
gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 1
gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 2
gcadmin distribution gcChangeInfo.xml
導(dǎo)出:
gcadmin getdistribution 1 distribution_info.xml
查看:
gcadmin showdistribution node
刪除:
gcadmin rmdistribution [ID]

06.SQL基礎(chǔ)

? 遵循 SQL 92 標(biāo)準(zhǔn), 支持 SQL99 和 SQL:2003 部分標(biāo)準(zhǔn);
? SQL 的關(guān)鍵詞不區(qū)分大小寫;
? 默認(rèn) SQL 執(zhí)行采用自動(dòng)提交方式,自動(dòng) commit ;
? 單VC模式(兼容模式),默認(rèn)VC名字是vc00001,在訪問路徑中可以省略。

數(shù)據(jù)庫、表、列和別名等對象的名稱都稱為標(biāo)識符。

標(biāo)識符 最大長度(字符) 允許的字符
數(shù)據(jù)庫 48 a~ z、 A~ Z、 0~ 9、下劃線、 必須以字母或下劃線開頭
表、視圖 56 a~ z、 A~ Z、 0~ 9、下劃線,必須以字母或下劃線開頭
64 a~ z、 A~ Z、 0~ 9、下劃線, “-” 、必須以字母或下劃線開頭
別名 255 a~ z、 A~ Z、 0~ 9、下劃線、中文,必須以字母或下劃線開頭
存儲(chǔ)過程 64 a~ z、 A~ Z、 0~ 9、下劃線,必須以字母或下劃線開頭
變量 a~ z、 A~ Z、 0~ 9、下劃線,必須以字母或下劃線開頭

注:
1、除了表內(nèi)注明的限制,數(shù)據(jù)庫、表和列名不應(yīng)以空格結(jié)尾。
2、如果標(biāo)識符是一個(gè)限制詞或包含特殊字符,必須用反引號` `引用它,比如: SELECT * FROM `select`.id>100。
3、如果標(biāo)識符長度超過最大長度限制,數(shù)據(jù)庫、表、列、視圖、存儲(chǔ)過程的命令將報(bào)錯(cuò),而別名將會(huì)截?cái)嘀?256個(gè)字
符進(jìn)行顯示。
4、當(dāng)庫名、表名、列名為中文時(shí),最大支持的漢字個(gè)數(shù):庫名 48 個(gè)漢字;表名 21 個(gè)漢字;參數(shù)gcluster_extend_ident設(shè)置為1,即開啟創(chuàng)建中文庫名、表名、列名的功能,默認(rèn)為0,不開啟

列的引用需要不產(chǎn)生二義性
含有關(guān)鍵詞和特殊字符的標(biāo)識符,不能直接組合作為一個(gè)整體來引用。
`gs-table`.`gs-column`合法, `gs-table.gs-column` 不合法。

注釋語法:#、--、/注釋內(nèi)容/

用戶變量:用戶變量的生命周期是會(huì)話級的,對其它會(huì)話不可見。當(dāng)用戶退出時(shí),此用戶的所有用戶
變量會(huì)自動(dòng)釋放。用戶變量以@開頭,不區(qū)分大小寫: @var_name,通過 SET 語法來定義并為變量賦值

數(shù)據(jù)類型:見文檔

07.DDL數(shù)據(jù)庫、表管理

08.DDL視圖、索引

09.DML語句

10.DQL語句

11.常用系統(tǒng)函數(shù)

12.DCL語句

13.系統(tǒng)表

14.SQL綜合

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容