PolarDB-X V2.4 列存引擎開源正式發佈

来源:https://www.cnblogs.com/yunqishequ/p/18193798
-Advertisement-
Play Games

架構簡介 PolarDB-X 採用 Shared-nothing 與存儲分離計算架構進行設計,系統由5個核心組件組成。 PolarDB分散式 架構圖 計算節點(CN, Compute Node) 計算節點是系統的入口,採用無狀態設計,包括 SQL 解析器、優化器、執行器等模塊。負責數據分散式路由、計 ...


架構簡介

PolarDB-X 採用 Shared-nothing 與存儲分離計算架構進行設計,系統由5個核心組件組成。

PolarDB分散式 架構圖
  • 計算節點(CN, Compute Node) 計算節點是系統的入口,採用無狀態設計,包括 SQL 解析器、優化器、執行器等模塊。負責數據分散式路由、計算及動態調度,負責分散式事務 2PC 協調、全局二級索引維護等,同時提供 SQL 限流、三權分立等企業級特性。
  • 存儲節點(DN, Data Node) 存儲節點負責數據的持久化,基於多數派 Paxos 協議提供數據高可靠、強一致保障,同時通過 MVCC 維護分散式事務可見性。
  • 元數據服務(GMS, Global Meta Service) 元數據服務負責維護全局強一致的 Table/Schema, Statistics 等系統 Meta 信息,維護賬號、許可權等安全信息,同時提供全局授時服務(即 TSO)。
  • 日誌節點(CDC, Change Data Capture) 日誌節點提供完全相容 MySQL Binlog 格式和協議的增量訂閱能力,提供相容 MySQL Replication 協議的主從複製能力。
  • 列存節點 (Columnar) 列存節點提供持久化列存索引,實時消費分散式事務的binlog日誌,基於對象存儲介質構建列存索引,能滿足實時更新的需求、以及結合計算節點可提供列存的快照一致性查詢能力

開源地址:[]

版本說明

梳理下PolarDB-X 開源脈絡:

  • 2021年10月,在雲棲大會上,阿裡雲正式對外開源了雲原生分散式資料庫PolarDB-X,採用全內核開源的模式,開源內容包含計算引擎、存儲引擎、日誌引擎、Kube等。
  • 2022年1月,PolarDB-X 正式發佈 2.0.0 版本,繼 2021 年 10 月 20 號雲棲大會正式開源後的第一次版本更新,更新內容包括新增集群擴縮容、以及binlog生態相容等特性,相容 maxwell 和 debezium 增量日誌訂閱,以及新增其他眾多新特性和修複若幹問題。
  • 2022年3月,PolarDB-X 正式發佈 2.1.0 版本,包含了四大核心特性,全面提升 PolarDB-X 穩定性和生態相容性,其中包含基於Paxos的三副本共識協議
  • 2022年5月,PolarDB-X正式發佈2.1.1 版本,重點推出冷熱數據新特性,可以支持業務表的數據按照數據特性分別存儲在不同的存儲介質上,比如將冷數據存儲到Aliyun OSS對象存儲上。
  • 2022年10月,PolarDB-X 正式發佈2.2.0版本,這是一個重要的里程碑版本,重點推出符合分散式資料庫金融標準下的企業級和國產ARM適配,共包括八大核心特性,全面提升 PolarDB-X 分散式資料庫在金融、通訊、政務等行業的普適性。
  • 2023年3月,PolarDB-X 正式發佈2.2.1版本,在分散式資料庫金融標準能力基礎上,重點加強了生產級關鍵能力,全面提升PolarDB-X面向資料庫生產環境的易用性和安全性,比如:提供數據快速導入、性能測試驗證、生產部署建議等。
  • 2023年10月份,PolarDB-X 正式發佈 2.3.0版本,重點推出PolarDB-X標準版(集中式形態),將PolarDB-X分散式中的DN節點提供單獨服務,支持paxos協議的多副本模式、lizard分散式事務引擎,同時可以100%相容MySQL,對應PolarDB-X公有雲的標準版

2024年4月份,PolarDB-X 正式發佈2.4.0版本,重點推出列存節點Columnar,可以提供持久化列存索引(Clustered Columnar Index,CCI)。PolarDB-X的行存表預設有主鍵索引和二級索引,列存索引是一份額外基於列式結構的二級索引(預設覆蓋行存所有列),一張表可以同時具備行存和列存的數據,結合計算節點CN的向量化計算,可以滿足分散式下的查詢加速的訴求,實現HTAP一體化的體驗和效果。

01 列存索引

隨著雲原生技術的不斷普及,以Snowflake為代表的新一代雲原生數倉、以及資料庫HTAP架構不斷創新,可見在未來一段時間後行列混存HTAP會成為一個資料庫的標配能力,需要在當前資料庫列存設計中面相未來的低成本、易用性、高性能上有更多的思考

PolarDB-X在V2.4版本正式發佈列存引擎,提供列存索引的形態(Clustered Columnar Index,CCI),行存表預設有主鍵索引和二級索引,列存索引是一份額外基於列式結構的二級索引(覆蓋行存所有列),一張表可以同時具備行存和列存的數據。

PolarDB-X 列存索引

相關語法

索引創建的語法:

列存索引創建的DDL語法

  • CLUSTERED COLUMNAR:關鍵字,用於指定添加的索引類型為CCI。
  • 索引名:索引表的名稱,用於在SQL語句中指定該索引。
  • 排序鍵:索引的排序鍵,即數據在索引文件中按照該列有序存儲。
  • 索引分區子句:索引的分區演算法,與CREATE TABLE中分區子句的語法一致。

實際例子:

# 先創建表
CREATE TABLE t_order (
  `id` bigint(11) NOT NULL AUTO_INCREMENT,
  `order_id` varchar(20) DEFAULT NULL,
  `buyer_id` varchar(20) DEFAULT NULL,
  `seller_id` varchar(20) DEFAULT NULL,
  `order_snapshot` longtext DEFAULT NULL,
  `order_detail` longtext DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `l_i_order` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 partition by hash(`order_id`) partitions 16;
# 再創建列存索引
CREATE CLUSTERED COLUMNAR INDEX `cc_i_seller` ON t_order (`seller_id`) partition by hash(`order_id`) partitions 16;
  • 主表:"t_order" 是分區表,分區的拆分方式為按照 "order_id" 列進行哈希。
  • 列存索引:"cc_i_seller" 按照 "seller_id" 列進行排序,按照 "order_id" 列進行哈希。
  • 索引定義子句:CLUSTERED COLUMNAR INDEX cc_i_seller ON t_order (seller_id) partition by hash(order_id) partitions 16。

原理簡介

列存索引的數據結構:

列存數據結構

列存索引是由列存引擎(Columnar)節點來構造的,數據結構基於Delta+Main(類LSM結構)二層模型,實時更新採用了標記刪除的技術(update轉化為delete標記 + insert),確保了行存和列存之間實現低延時的數據同步,可以保證秒級的實時更新。數據實時寫入到MemTable,在一個group commit的周期內,會將數據存儲到一個本地csv文件,並追加到OSS上對應csv文件的尾部,這個文件稱為delta文件。OSS對象存儲上的.csv文件不會長期存在,而是由compaction線程不定期地轉換成.orc文件。

列存索引的數據流轉:

數據流轉

列存索引,構建流程:

  1. 數據通過CN寫入到DN(正常的行存數據寫入)
  2. CDC事務日誌,提供實時提取邏輯binlog(獲取事務日誌)
  3. Columnar實時消費snapshot數據和cdc 增量binlog流,構建列存索引(非同步實現行轉列)

列存索引,查詢流程:

  1. CN節點,基於一套SQL引擎提供了統一入口
  2. CN 從GMS獲取當前最新的TSO(事務時間戳)
  3. CN基於TSO獲取當前列存索引的快照信息(GMS中存儲了列存索引的元數據)
  4. 從DN或者OSS掃描數據,拉到CN做計算(行列混合計算)

tips. 更多列存引擎相關的技術原理文章,後續會逐步發佈,歡迎大家持續關註。

性能體驗

測試集:TPC-H 100GB 硬體環境:

機器用途 機型 規格
壓力機 ecs.hfg7.6xlarge 24c96g
資料庫機器 ecs.i4.8xlarge * 3 32c256g + 7TB的存儲,單價:7452元/月

按照正常導入TPC-H 100GB數據後,執行SQL創建列存索引:

create clustered columnar index `nation_col_index` on nation(`n_nationkey`) partition by hash(`n_nationkey`) partitions 1;
create clustered columnar index `region_col_index` on region(`r_regionkey`) partition by hash(`r_regionkey`) partitions 1;
create clustered columnar index `customer_col_index` on customer(`c_custkey`) partition by hash(`c_custkey`) partitions 96;
create clustered columnar index `part_col_index` on part(`p_size`) partition by hash(`p_partkey`) partitions 96;
create clustered columnar index `partsupp_col_index` on partsupp(`ps_partkey`) partition by hash(`ps_partkey`) partitions 96;
create clustered columnar index `supplier_col_index` on supplier(`s_suppkey`) partition by hash(`s_suppkey`) partitions 96;
create clustered columnar index `orders_col_index` on orders(`o_orderdate`,`o_orderkey`) partition by hash(`o_orderkey`) partitions 96;
create clustered columnar index `lineitem_col_index` on lineitem(`l_shipdate`,`l_orderkey`) partition by hash(`l_orderkey`) partitions 96;

場景1:單表聚合場景( count 、 groupby)

場景 列存 (單位秒) 行存 (單位秒) 性能提升
tpch-Q1 2.98 105.95 35.5 倍
select count(*) from lineitem 0.52 19.85 38.1 倍

tpch-Q1的行存和列存的效果對比圖:

tpch-Q1

select count的行存和列存的效果對比圖:

count查詢

場景2:TPC-H 22條query

基於列存索引的性能白皮書,開源版本可以參考:TPC-H測試報告

TPC-H 100GB,22條query總計25.76秒

詳細數據如下:

查詢語句 耗時(單位秒)
Q1 2.59
Q2 0.80
Q3 0.82
Q4 0.52
Q5 1.40
Q6 0.13
Q7 1.33
Q8 1.15
Q9 3.39
Q10 1.71
Q11 0.53
Q12 0.38
Q13 1.81
Q14 0.41
Q15 0.46
Q16 0.59
Q17 0.32
Q18 3.10
Q19 0.88
Q20 0.81
Q21 1.84
Q22 0.79
Total 25.76 秒

02 相容MySQL 8.0.32

PolarDB-X V2.3版本,推出了集中式和分散式一體化架構(簡稱集分一體),在2023年10月公共雲和開源同時新增集中式形態,將分散式中的DN多副本單獨提供服務,支持Paxos多副本、lizard分散式事務引擎,可以100%相容MySQL。 所謂集分一體化,就是兼具分散式資料庫的擴展性和集中式資料庫的功能和單機性能,兩種形態可以無縫切換。在集分一體化資料庫中,數據節點被獨立出來作為集中式形態,完全相容單機資料庫形態。當業務增長到需要分散式擴展的時候,架構會原地升級成分散式形態,分散式組件無縫對接到原有的數據節點上進行擴展,不需要數據遷移,也不需要應用側做改造。

回顧下MySQL 8.0的官方開源,8.0.11版本在2018年正式GA,歷經5年左右的不斷演進,修複和優化了眾多穩定性和安全相關的問題,2023年後的8.0.3x版本後逐步進入穩態。 PolarDB-X在V2.4版本,跟進MySQL 8.0的官方演進,分散式的DN多副本中全面相容MySQL 8.0.32,快速繼承了官方MySQL的眾多代碼優化:

  • 更好用的DDL能力,比如:Instant DDL(加列、減列)、Parallel DDL(並行索引創建)
  • 更完整的SQL執行能力,比如:Hash Join、視窗函數等

標準版架構

PolarDB-X標準版,採用分層架構:

  • 日誌層:採用Paxos的多數派複製協議,基於Paxos consensus協議日誌完全相容MySQL binlog格式。相比於開源MySQL主備複製協議(基於binlog的非同步或半同步),PolarDB-X標準版可以金融級容災能力,滿足機房級故障時,不丟任何數據,簡稱RPO=0。
  • 存儲層:自研Lizard事務系統,對接日誌層,可以替換傳統MySQL InnoDB的單機事務系統,分別設計了 SCN 單機事務系統和 GCN 分散式事務系統來解決這些弊端,可以滿足集中式和分散式一體化的事務優化,同時PolarDB-X標準版基於SCN 單機事務系統可以提供完全相容MySQL的事務隔離級別。
  • 執行層:類似於MySQL的Server層,自研xRPC Server可以對接PolarDB-X企業版的分散式查詢。同時為完全相容MySQL,也提供相容MySQL Server的SQL執行能力,對接存儲層的事務系統來提供數據操作。

性能體驗

硬體環境:

機器用途 機型 規格
壓力機 ecs.hfg7.6xlarge 24c96g
資料庫機器 ecs.i4.8xlarge * 3 32c256g + 7TB的存儲,單價:7452元/月

TPCC場景:對比開源MySQL(採用相同的主機硬體部署)

場景 併發數 MySQL 8.0.34
主備非同步複製
PolarDB-X 標準版 8.0.32
Paxos多數派
性能提升
TPCC 1000倉 300併發 170882.38 tpmC 236036.8 tpmC ↑38%

03 全球資料庫 GDN

資料庫容災架構設計是確保企業關鍵數據安全和業務連續性的核心。隨著數據成為企業運營的命脈,任何數據丟失或服務中斷都可能導致重大的財務損失。在規劃容災架構時,企業需要考慮數據的恢復時間目標(RTO)和數據恢復點目標(RPO),以及相關的成本和技術實現的複雜性。

常見容災架構

異地多活,主要指跨地域的容災能力,可以同時在多地域提供讀寫能力。金融行業下典型的兩地三中心架構,更多的是提供異地容災,日常情況下異地並不會直接提供寫流量。但隨著數字化形式的發展,越來越多的行業都面臨著容災需求。比如,運營商、互聯網、游戲等行業,都對異地多活的容災架構有比較強的訴求。 目前資料庫業界常見的容災架構:

  • 同城3機房,一般是單地域多機房,無法滿足多地域多活的訴求
  • 兩地三中心,分為主地域和異地災備地域,流量主要在主地域,異地主要承擔災備容災,異地機房日常不提供多活服務。
  • 三地五中心,基於Paxos/Raft的多地域複製的架構
  • Geo-Partitioning,基於地域屬性的partition分區架構,提供按用戶地域屬性的就近讀寫能力
  • Global Database,構建全球多活的架構,寫發生在中心,各自地域提供就近讀的能力

總結一下容災架構的優劣勢:

容災架構 容災範圍 最少機房要求 數據複製 優缺點
同城3機房 單機房級別 3機房 同步 比較通用,業務平均RT增加1ms左右
兩地三中心 機房、地域 3機房 + 2地域 同步 比較通用,業務平均RT增加1ms左右
三地五中心 機房、地域 5機房 + 3地域 同步 機房建設成本比較高,業務平均RT會增加5~10ms左右(地域之間的物理距離)
Geo-Partitioning 機房、地域 3機房 + 3地域 同步 業務有適配成本(表分區增加地域屬性),業務平均RT增加1ms左右
Global Database 機房、地域 2機房 + 2地域 非同步 比較通用,業務就近讀+ 遠程轉發寫,適合異地讀多寫少的容災場景

PolarDB-X的容災能力

PolarDB-X 採用數據多副本架構(比如3副本、5副本),為了保證副本間的強一致性(RPO=0),採用Paxos的多數派複製協議,每次寫入都要獲得超過半數節點的確認,即便其中1個節點宕機,集群也仍然能正常提供服務。Paxos演算法能夠保證副本間的強一致性,徹底解決副本不一致問題。

PolarDB-X V2.4版本以前,主要提供的容災形態:

  • 單機房(3副本),能夠防範少數派1個節點的故障
  • 同城3機房(3副本),能夠防範單機房故障
  • 兩地三中心(5副本),能夠防範城市級的故障

阿裡集團的淘寶電商業務,在2017年左右開始建設異地多活的架構,構建了三地多中心的多活能力,因此在PolarDB-X V2.4我們推出了異地多活的容災架構,我們稱之為全球資料庫(Global Database Network,簡稱GDN)。 PolarDB-X GDN 是由分佈在同一個國家內多個地域的多個PolarDB-X集群組成的網路,類似於傳統MySQL跨地域的容災(比如,兩個地域的資料庫採用單向複製、雙向複製 , 或者多個地域組成一個中心+單元的雙向複製等)。

常見的業務場景:

  1. 基於GDN的異地容災
異地容災

業務預設的流量,讀寫都集中在中心的主實例,異地的從實例作為災備節點,提供就近讀的服務能力 PolarDB-X 主實例 和 從實例,採用雙向複製的能力,複製延遲小於2秒,通過備份集的異地備份可以快速創建一個異地從實例。 當PolarDB-X 中心的主實例出現地域級別的故障時,可以手動進行容災切換,將讀寫流量切換到從實例

2. 基於GDN的異地多活

異地多活

業務適配單元化分片,按照數據分片的粒度的就近讀和寫,此時主實例和從實例,均承擔讀寫流量 PolarDB-X 主實例 和 從實例,採用雙向複製的能力,複製延遲小於2秒 當PolarDB-X 中心的主實例出現地域級別的故障時,可以手動進行容災切換,將讀寫流量切換到從實例

使用體驗

PolarDB-X V2.4版本,暫時僅提供基於GDN的異地容災,支持跨地域的主備複製能力(異地多活形態會在後續版本中發佈)。GDN是一個產品形態,其基礎和本質是數據複製,PolarDB-X提供了高度相容MySQL Replica的SQL命令來管理GDN,簡單來說,會配置MySQL主從同步,就能快速的配置PolarDB-X GDN。

1. 可以使用相容MySQL的CHANGE MASTER命令,搭建GDN複製鏈路

CHANGE MASTER TO option [, option] ... [ channel_option ]
option: {
    MASTER_HOST = 'host_name'
  | MASTER_USER = 'user_name'
  | MASTER_PASSWORD = 'password'
  | MASTER_PORT = port_num
  | MASTER_LOG_FILE = 'source_log_name'
  | MASTER_LOG_POS = source_log_pos
  | MASTER_LOG_TIME_SECOND = source_log_time
  | SOURCE_HOST_TYPE = {RDS|POLARDBX|MYSQL}
  | STREAM_GROUP = 'stream_group_name'
  | WRITE_SERVER_ID = write_server_id
  | TRIGGER_AUTO_POSITION = {FALSE|TRUE}
  | WRITE_TYPE = {SPLIT|SERIAL|TRANSACTION}
  | MODE = {INCREMENTAL|IMAGE}
  | CONFLICT_STRATEGY = {OVERWRITE|INTERRUPT|IGNORE|DIRECT_OVERWRITE}
  | IGNORE_SERVER_IDS = (server_id_list)
}
channel_option:
    FOR CHANNEL channel
server_id_list:
    [server_id [, server_id] ... ]

2. 可以使用相容MySQL的SHOW SLAVE STATUS命令,監控GDN複製鏈路

SHOW SLAVE STATUS [ channel_option ]
channel_option:
    FOR CHANNEL channel

3. 可以使用相容MySQL的CHANGE REPLICATION FILTER命令,配置數據複製策略

CHANGE REPLICATION FILTER option [, option] ... [ channel_option ]
option: {
    REPLICATE_DO_DB = (do_db_list)
  | REPLICATE_IGNORE_DB = (ignore_db_list)
  | REPLICATE_DO_TABLE = (do_table_list)
  | REPLICATE_IGNORE_TABLE = (ignore_table_list)
  | REPLICATE_WILD_DO_TABLE = (wild_do_table_list)
  | REPLICATE_WILD_IGNORE_TABLE = (wile_ignore_table_list)
  | REPLICATE_SKIP_TSO = 'tso_num'
  | REPLICATE_SKIP_UNTIL_TSO = 'tso_num'
  | REPLICATE_ENABLE_DDL = {TRUE|FALSE}
}
channel_option:
    FOR CHANNEL channel

4. 可以使用相容MySQL的START SLAVE 和 STOP SLAVE命令,啟動和停止GDN複製鏈路

START SLAVE [ channel_option ]
channel_option:
    FOR CHANNEL channel
STOP SLAVE [ channel_option ]
channel_option:
    FOR CHANNEL channel

5.可以使用相容MySQL的RESET SLAVE,刪除GDN複製鏈路

RESET SLAVE ALL [ channel_option ]
channel_option:
    FOR CHANNEL channel

擁抱生態,提供相容MySQL的使用方式,可以大大降低使用門檻,但PolarDB-X也需要做最好的自己,我們在相容MySQL的基礎上,還提供了很多定製化的功能特性。

功能特性 功能描述
一鍵創建多條GDN複製鏈路 在 CHANGE MASTER 語句中,指定 STREAM_GROUP 選項,即PolarDB-X多流binlog集群的流組名稱,可以一鍵創建多條複製鏈路(具體取決於binlog流的數量),帶來極簡的使用體驗。什麼是多流binlog?參見binlog日誌服務
基於時間戳的複製鏈路搭建 在 CHANGE MASTER 語句中,指定 MASTER_LOG_TIME_SECOND 選項,可以基於指定的時間點,來構建複製鏈路,相比通過指定file name和file positiion的方式,更加靈活。

比如在搭建GDN時,一般的流程為先通過全量複製或備份恢復的方式準備好從實例,然後啟動增量複製鏈路,通過指定 MASTER_LOG_TIME_SECOND 顯然更加簡便。尤其是當對接的是PolarDB-X多流binlog時,為每條鏈路分別指定file name和file position,相當繁瑣,而結合STREAM_GROUP和MASTER_LOG_TIME_SECOND,則相當簡便。
多種模式的 DML 複製策略 在 CHANGE MASTER 語句中,指定 WRITE_TYPE 選項,可以指定DML的複製策略,可選策略如下
- TRANSACTION:嚴格按照binlog中的事務單元,進行原樣回放,適用於對數據一致性、事務完整性有高要求的場景
- SERIAL:打破binlog中的事務單元,重新組織事務單元,進行串列回放,適用於對事務完整性要求不高,但仍需要串列複製的場景
- SPLIT:打破binlog中的事務單元,依賴內置的數據衝突檢測演算法,進行全並行回放,適用於高吞吐、高併發的場景
全量增量一體化複製搭建 誰說 CHANGE MASTER 只能創建增量同步?在 CHANGE MASTER 語句中,指定 MODE 選項,可以指定鏈路的搭建模式
- INCREMENTAL: 直接創建增量複製鏈路
- IMAGE: 先完成全量複製,再基於全量複製開始的時間點,啟動增量複製鏈路
原生的輕量級雙向複製能力 在 CHANGE MASTER 語句中,組合使用 WRITE_SERVER_ID 和 IGNORE_SERVER_IDS 選項,可配置基於server_id的防流量迴環雙向複製鏈路,相比需要額外引入事務表的方案,不僅使用簡單,而且性能無損。

原生的輕量級雙向複製能力,舉例來說:

  1. PolarDB-X實例 R1 的server_id為100
  2. PolarDB-X實例 R2 的server_id為200
  3. 構建 R1 到 R2的複製鏈路時,在R2上執行CHANGE MASTER並指定WRITE_SERVER_ID = 300、IGNORE_SERVER_IDS = 400
  4. 構建R2 到 R1的複製鏈路時,在R1上執行CHANGE MASTER並指定WRITE_SERVER_ID = 400、IGNORE_SERVER_IDS = 300

GDN場景下,保證主從實例之間的數據一致性是最為關鍵的因素,提供便捷的數據校驗能力則顯得尤為關鍵,V2.4版本不僅提供了完善的主從複製能力,還提供了原生的數據校驗能力,在從實例上執行相關SQL命令,即可實現線上數據校驗。V2.4版本暫時只支持直接校驗模式(校驗結果存在誤報的可能),基於sync point的快照校驗能力(校驗結果不會出現誤報),會在下個版本進行開源。

#開啟校驗
CHECK REPLICA TABLE {`test_db`.`test_tb`} | {`test_db`} 
[MODE='direct' | 'tso'] 
FOR CHANNEL xxx;
#查看校驗進度
CHECK REPLICA TABLE [`test_db`.`test_tb`] | [`test_db`] SHOW PROGRESS;
#查看差異數據
CHECK REPLICA TABLE {`test_db`.`test_tb`} | {`test_db`} SHOW DIFFERENCE;

此外,數據的一致性不僅體現在數據內容的一致性上,還體現在schema的一致性上,只有二者都保證一致,才是真正的一致,比如即使丟失一個索引,當發生主從切換後,也可能引發嚴重的性能問題。PolarDB-X GDN支持各種類型的DDL複製,基本覆蓋了其所支持的全部DDL類型,尤其是針對PolarDB-X特有schema的DDL操作,更是實現了充分的支持,典型的例子如:sequenc、tablegroup等DDL的同步。

除了數據一致性,考量GDN能力的另外兩個核心指標為RPO和RTO,複製延遲越低則RPO越小,同時也間接影響了RTO,本次V2.4版本提供了RPO <= 2s、RTO分鐘級的恢復能力,以Sysbench和TPCC場景為例,GDN單條複製鏈路在不同網路延遲條件(0.1ms ~ 20ms之間)下可以達到的最大RPS分佈在2w/s 到 5w/s之間。當業務流量未觸達單條複製鏈路的RPS瓶頸時,用單流binlog + GDN的組合來實現容災即可,而當觸達瓶頸後,則可以選擇多流binlog + GDN的組合來提升擴展性,理論上只要網路帶寬沒有瓶頸,不管多大的業務流量,都可實現線性擴展,PolarDB-X GDN具備高度的靈活性和擴展性,以及在此基礎之上的高性能表現。

04 開源生態完善

快速運維部署能力

PolarDB-X支持多種形態的快速部署能力,可以結合各自需求盡心選擇

部署方式 說明 安裝工具的快速安裝 依賴項
RPM包 零組件依賴,手工快速部署 RPM下載、RPM安裝 rpm
PXD 自研快速部署工具,通過yaml文件配置快速部署 PXD安裝 python3、docker
K8S 基於k8s operator的快速部署工具 K8S安裝 k8s、docker

polardbx-operator是基於k8s operator架構,正式發佈1.6.0版本,提供了polardb-x資料庫的部署和運維能力,生產環境優先推薦,可參考polardbx-operator運維指南

polardbx-operator 1.6.0新版本,圍繞數據安全、HTAP、可觀測性等方面完善集中式與分散式形態的運維能力,支持標準版的備份恢復,透明加密(TDE),列存只讀(HTAP)、一鍵診斷工具、CPU 綁核等功能。同時相容了8.0.32 新版本內核,優化了備份恢復功能的穩定性。詳見:Release Note

pxd 是基於開源用戶物理機裸機部署的需求,提供快速部署和運維的能力, 可參考pxd運維

發佈pxd 0.7新版本,圍繞版本升級、備庫重搭,以及相容8.0.32新版本內核。

標準版生態

V2.3版本開始,為方便用戶進行快速體驗,提供rpm包的下載和部署能力,可以一鍵完成標準版的安裝,參考鏈接:

PolarDB-X標準版,基於Paxos協議實現多副本,基於Paxos的選舉心跳機制,MySQL自動完成節點探活和HA切換,可以替換傳統MySQL的HA機制。如果PolarDB-X替換MySQL,作為生產部署使用,需要解決生產鏈路的HA切換適配問題,開發者們也有自己的一些嘗試(比如HAProxy 或 自定義proxy)。 在V2.4版本,我們正式適配了一款開源Proxy組件。

ProxySQL作為一款成熟的MySQL中間件,能夠無縫對接MySQL協議支持PolarDB-X,並且支持故障切換,動態路由等高可用保障,為我們提供了一個既可用又好用的代理選項,更多信息可參考文檔:使用開源ProxySQL構建PolarDB-X標準版高可用路由服務

原文鏈接

本文為阿裡雲原創內容,未經允許不得轉載。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Linux中可以不需要有腳本或者二進位程式的文件在文件系統上實際存在,只需要有對應的數據在記憶體中,就有辦法執行這些腳本和程式。 原理其實很簡單,Linux里有辦法把某塊記憶體映射成文件描述符,對於每一個文件描述符,Linux會在/proc/self/fd/<文件描述符>這個路徑上創建一個對應描述符的 ...
  • 目錄開源庫移植步驟[1]:下載庫的源碼包[2]:解壓,且閱讀“README(自述文件)",瞭解對應庫的使用規則[3]:打開源碼中的install.txt的文本,學習庫的移植和安裝步驟[4]:把下載好的源碼包jpegsrc.v9f.tar.gz發送到linux系統的家目錄下進行解壓[5] :“配置” ...
  • PWM
    PWM PWM 1. 什麼是PWM? 2. 面積等效原理 2.1. 什麼是面積等效原理? 2.2. 面積等效原理的理解 3. 相關概念 3.1. 周期和頻率 3.2. 占空比 4. 總結 參考鏈接 others 1. 什麼是PWM? PWM是Pulse Width Modulation的縮寫,中文是 ...
  • 筆者使用SeaTunnel 2.3.2版本將Doris數據同步到Hive(cdh-6.3.2)首次運行時有如下報錯,並附上報錯的解決方案: java.lang.NoClassDefFoundError: org/apache/hadoop/hive/metastore/api/MetaExcepti ...
  • 2024年5月15日,白鯨開源CEO郭煒在2024 DataOps發展大會上被正式聘任為DataOps專家,並獲得了榮譽證書。本次大會由中國通信標準化協會主辦,中關村科學城管委會提供支持,大數據技術標準推進委員會(CCSATC601)承辦,旨在推動DataOps領域的標準化和實踐發展。 在大會的圓桌 ...
  • 指標設計是企業戰略落地、經營決策支持和績效評估的基礎。在數字化轉型的大背景下,準確有效的指標體系能夠幫助企業快速響應市場變化,優化資源配置,提升運營效率。因此,科學合理的指標設計不僅是技術實現的問題,更是企業戰略方向和業務邏輯的體現。 企業指標體系設計面臨的典型困境 企業在構建指標體系的征途中,常遭 ...
  • 在MySQL的查詢中常常會用到 order by 和 group by 這兩個關鍵字,它們的相同點是都會對欄位進行排序,那查詢語句中的排序是如何實現的呢? ...
  • 轉載自tuoluzhe8521 導讀:通過簡化複雜的任務依賴關係, DolphinScheduler為數據工程師提供了強大的工作流程管理和調度能力。在3.2.0版本中,DolphinScheduler帶來了一系列新功能和改進,使其在生產環境中的穩定性和可用性得到了顯著提升。 為了幫助讀者更好地理解和 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...