PolarDB for MySQLは、リモートダイレクトメモリアクセス (RDMA) テクノロジーを使用してログの出荷を最適化し、RDMAベースのログ出荷ソリューションを提供します。 このソリューション共有ストレージまたはTCPに基づく従来の出荷方法の代わりにRDMAを使用します。これにより、100% によってログ出荷スループットが向上し、レプリケーションが削減されます。 50% 以上の待ち時間。 このトピックでは、RDMAベースのログ出荷の仕組み、この機能を有効にする方法、および標準シナリオでの実行方法について説明します。
どのようにRDMAベースのログ出荷は機能します
デフォルトでは、PolarDBは共有ストレージまたはTCPに基づくメソッドを使用してログを同期します。 ログ同期を高速化し、オーバーヘッドを削減するために、PolarDBではRDMAベースのログ出荷テクノロジが導入されています。 これがRDMAベースのログ出荷の仕組みです。
読み取り専用ノードのredoログバッファは、プライマリノードのredoログバッファのリモートイメージと見なされます。
ログバッファがディスクに書き込まれる前に、プライマリノードはリモート読み取り専用ノードのログバッファにredoログを非同期に書き込み、オフセットを読み取り専用ノードに同期します。
読み取り専用ノードは、共有ストレージ内のredoログの代わりにローカルログバッファを読み取ります。これにより、レプリケーションと同期が高速化されます。
従来の方法の両面動作と比較して、RDMAベースのログ出荷の片面動作は、READ/WRITE動詞を使用し、受信側CPUを伴わない。 ログは、リモートアドレスとキーを使用して、リモート読み取り専用ノードのメモリに書き込まれます。
制限
クラスターはPolarDB for MySQL 8.0.1で、リビジョンバージョンは8.0.1.1.33以降です。
グローバルデータベースネットワーク (GDN) のセカンダリクラスターのRDMAベースのログ出荷機能を有効にすることはできません。
使用法
loose_innodb_polar_log_rdma_transferパラメーターを設定して、RDMAベースのログ配信を有効にします。
パラメーター | レベル | 説明 |
loose_innodb_polar_log_rdma_transfer | グローバル | RDMAベースのログ出荷機能を有効にするかどうかを指定します。 有効な値:
|
パフォーマンステスト
レプリケーション待ち時間の短縮
さまざまな書き込みシナリオで、RDMAベースのログ転送により、読み取り専用ノードのレプリケーション遅延を大幅に削減できます。
次の例では、32 CPUコアと128 GBのメモリを使用したPolarDB for MySQL 8.0クラスターのレプリケーション遅延テストについて説明します。 テストでは20のテーブルを使用し、それぞれに200万行のデータが含まれています。 このテストでは、RDMAベースのログ転送が有効または無効で、書き込み速度が異なる場合の読み取り専用ノードのレプリケーション待ち時間を比較します。
前の図に示すように、RDMAベースのログ転送が有効になっている場合、読み取り専用ノードのレプリケーション待機時間は、redo書き込み速度の増加に伴い大幅に短縮されます。
PolarDBのSCCパフォーマンスの向上
グローバル一貫性 (高パフォーマンスモード) が有効になっている場合、読み取り専用ノードのレプリケーションレイテンシがPolarDB for MySQLのパフォーマンスに大きく影響します。 RDMAベースのログ配信は、厳密整合性クラスタ (SCC) パフォーマンスを効果的に向上させることができます。
次の例では、8 CPUコアと32 GBのメモリを使用したPolarDB for MySQL 8.0クラスターのSCCパフォーマンステストについて説明します。 テストでは20のテーブルを使用し、それぞれに200万行のデータが含まれています。 このテストでは、RDMAベースのログ転送が有効または無効で、スレッド数が異なる場合の読み取り専用ノードのSCCパフォーマンスを比較します。
前の図に示すように、RDMAベースのログ転送を有効にすると、読み取り専用ノードのSCCパフォーマンスが約20% 向上します。