全部產品
Search
文件中心

PolarDB:RDMA日誌傳輸

更新時間:Jul 06, 2024

PolarDB MySQL版通過RDMA技術對日誌傳輸模組進行了最佳化,推出了RDMA日誌傳輸(RDMA-based log shipment技術方案。該方案通過RDMA來替代傳統的基於共用儲存或TCP的傳輸方式, 可以把日誌傳輸輸送量提升100%,並在此基礎之上,把複製延遲降低50%以上本文主要介紹RDMA-based log shipment技術方案的原理、開啟方式以及標準情境下的效能測試結果。

RDMA-based log shipment技術原理

PolarDB預設基於共用儲存或TCP的傳輸方式進行日誌同步。為了追求更快的日誌同步速度,降低日誌同步開銷,PolarDB引入了RDMA-based log shipment技術。RDMA-based log shipment的技術原理如下:

  • 將RO節點的Redo log buffer當作是RW節點的Redo log buffer的遠端鏡像;

  • RW節點在log buffer寫盤之前,將Redo log遠端非同步寫到RO節點的log buffer,最後再將位點同步給RO節點;

  • RO節點通過讀取本地的log buffer來替代讀取共用儲存中的Redo log file,加快複製同步效率。

相比於two-sided操作,RDMA-based log shipment技術使用的one-sided操作基於Read/Write Verbs,無需接收端CPU的參與。通過遠程地址+密鑰的方式,將日誌直接寫入到遠端RO節點的記憶體中。

使用限制

  • 叢集版本需為PolarDB MySQL版8.0.1版本且核心小版本需為8.0.1.1.33及以上。

  • 全球資料庫網路GDN中的從叢集不支援開啟RDMA日誌傳輸功能

使用方法

您可以通過loose_innodb_polar_log_rdma_transfer參數開啟RDMA日誌傳輸功能。

參數

層級

說明

loose_innodb_polar_log_rdma_transfer

Global

RDMA日誌傳輸功能開關,取值範圍:

  • ON:開啟RDMA日誌傳輸功能。

  • OFF(預設):關閉RDMA日誌傳輸功能。

效能提升

降低複寫延遲

在多種寫入情境下,基於RDMA的日誌傳輸功能都可以極大的降低RO節點的複寫延遲。

32核128 GBPolarDB MySQL版8.0叢集為例,測試資料量為20張表,單表200W資料,進行RO節點的複寫延遲測試。分別對比開啟和關閉RDMA日誌傳輸功能,在不同Redo速率下,RO節點的複寫延遲變化情況。

image..png

從上圖可以看出,開啟RDMA日誌傳輸功能後,隨著Redo寫入速率的增加,RO節點的複寫延遲將大大的降低。

提升PolarDB全域一致性讀效能

PolarDB MySQL版開啟全域一致性(高效能模式)後,RO節點的複寫延遲對效能影響較大。通過RDMA-based log shipment技術可以有效提升全域一致性讀效能。

8核32 GBPolarDB MySQL版8.0叢集為例,測試資料量為20張表,單表20W資料,進行RO節點的全域一致性讀效能測試。分別對比開啟和關閉RDMA日誌傳輸功能,在不同的線程數下,RO節點的全域一致性讀效能變化情況。

image..png

從上圖可以看出,開啟RDMA日誌傳輸功能後,RO節點的全域一致性讀效能提升了20%左右。