深度乾貨 | OceanBase 主動切主技術解讀
__all_core_table
的主副本(Leader)所在的伺服器上。本文主要介紹 RootService(以下以 RS 簡稱)對切主的管理。主要分為以下五個部分:-
涉及到的基礎概念
-
負載均衡場景描述
-
對主動切主的管理
-
切主是如何觸發的
-
切主是如何執行的
涉及到的基礎概念
1.2. 均衡組
-
PARTITION_TABLE_BALANCE_GROUP
-
TABLE_GROUP_BALANCE_GROUP
-
NON_PARTITION_TABLE_BALANCE_GROUP
1.3. 租戶(Tenant)
1.4. 首選區(Primary Zone)
primary_zone
預設為
RANDOM
;其它級別該屬性預設為依次向上繼承,直到發現非空屬性:表 ➡︎(TableGroup 或 Schema)➡︎ 租戶。如果對該屬性有顯式制定,以顯式指定為準。以下例來具體解讀 Zone 的優先策略:
primary_zone = zone1,zone2;zone3,zone4;zone5
zone1
和
zone2
(以逗號隔開)的優先順序相同且優先順序最高,
zone3
和
zone4
(以逗號隔開)的優先順序並列,最後面的
zone5
的優先順序最低。1.5. 首選域(Primary Region)
-
zone1; zone2; zone3
-
zone1; zone2, zone3
-
random
(預設設定) -
zone1,zone2,zone3
(效果和random
相同)
-
zone1,zone2;zone3
負載分攤場景描述
primary_zone='zone1'
;或,在已存在的租戶上調整
primary_zone
配置。
對主動切主的管理
OB 中強讀和寫都是在 Leader上進行的。若分割槽 Leader 沒有打散而是聚集在個別幾臺伺服器上,大量的 IO 會導致這些伺服器的效能很快達到瓶頸。有時使用者希望利用所有的伺服器來避免達到瓶頸,將
primary_zone
設定成
RANDOM
,語義就是將 Leader 均勻地打散到該租戶下所有可用
Zone
的所有可用伺服器上。當然,有時使用者就是希望所有的 Leader 都集中在一兩個 Zone 上,以避免發生跨城市切主,造成訪問延遲,對業務產生不良影響。因此,RS 對切主的管理,首要還是根據使用者的需要,結合當前叢集的狀態,來調整各個租戶下所有分割槽的 Leader 分佈。切主是如何觸發的
enable_auto_leader_switch
,該配置項決定是否執行 RS 的後臺切主執行緒。Alter system set enable_auto_leader_switch = true/false;
4.1. 手動切主
alter system switch replica leader/follower partition = '$partition_id' server = '$server_ip:$server_port';alter system switch replica leader/follower zone = '$zone_name' tenant = '$tenant_name';alter system switch replica leader/follower server = '$server_ip:$server_port' tenant = '$tenant_name';
enable_auto_leader_switch
。4.2. 容災操作
enable_auto_leader_switch
。4.3. 修改 Primary Zone
primary_zone
屬性都是可以動態調整的。alter tenant/database/tablegroup/table $name primary_zone = '$new_pz_strategy';
4.4. 自動均衡
4.5. 輪轉合併
切主是如何執行的
5.1. Leader 的分配原則
-
伺服器或 Zone 的可用狀態
-
Primary Region 的設定
-
合併狀態
-
候選數量(candidate_cnt)
-
拉黑列表(In_blacklist)
-
Primary Zone 的設定
5.2. Leader 的切換流程
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69909943/viewspace-2841484/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 陽振坤:OceanBase 4.0 核心技術解讀
- 乾貨:基於scss的主題配色解決方案CSS
- 技術博主
- 乾貨!天翼雲DPU技術解碼
- 服務端主動推送技術☞WebSocket服務端Web
- 技術分享主幹
- ostgreSQL主從切換-手動SQL
- echarts 主題動態切換Echarts
- 技術乾貨:LeetCode1- 20題詳解LeetCode
- HDC 2022 開發者主題演講與技術分論壇乾貨分享(附課件)
- 深度解讀GaussDB邏輯解碼技術原理
- 技術乾貨 | WebRTC 技術解析之 Android VDMWebAndroid
- 學術乾貨|深入淺出解讀 Java 虛擬機器的差別測試技術Java虛擬機
- [乾貨分享]1000篇乾貨好文!量子技術——進階篇
- [乾貨分享]1000篇乾貨好文!量子技術——資訊篇
- 阿里技術精華乾貨整理阿里
- 2019年大前端技術趨勢深度解讀前端
- .NET Core技術研究-主機
- TDSQL | 深度解讀HTAP系統的問題與主義之爭SQL
- (九)主題切換
- Redis主從切換Redis
- 聊聊雙11互動主動法中前端技術亮點前端
- 技術乾貨| MongoDB時間序列集合MongoDB
- 技術乾貨 | 漫遊Linux塊IOLinux
- 2020文章合集 技術乾貨
- [乾貨分享]1000篇乾貨好文!量子技術——專家觀點篇
- Redis 主從複製技術原理Redis
- 內含福利 | DTCC第十屆中國資料庫技術大會,100+乾貨主題,與您共享資料庫
- 手工切換MySQL主從MySql
- Redis sentinel主從切換Redis
- 深度解讀:數字技術適老化發展報告
- 技術乾貨:Applewatch APP設計規範APP
- 技術乾貨:RabbitMQ面試題及答案MQ面試題
- 技術乾貨:ActiveMQ面試題及答案MQ面試題
- 技術乾貨:Hadoop面試題及答案Hadoop面試題
- 技術乾貨 | WebRTC ADM 原始碼流程分析Web原始碼
- 技術乾貨 | 解鎖Redis 時間序列資料的應用Redis
- 怎麼做張好的商品主圖?分享製作乾貨!