背景條件:使用 sysbench 壓力工具對 10 張 1 萬記錄表進行增改刪操作使用 TC 工具來模擬高延時,低頻寬場景工具準備:
1.tc # 模擬網路頻寬受限以及增加延遲
2.iperf3 # 驗證網路頻寬
3.sysbench # 製造資料壓力
環境準備:
1.DTLE 版本
3.20.10.0
2.伺服器
3.在兩臺 DTLE 伺服器上新增網路頻寬限制以及增加延遲(經測試網路延遲配置只對傳送有效,故需要在源端和目標端同時新增 TC 規則,每端延遲配置為預期延遲的一半)。
#!/usr/bin/env bash# Name of the traffic control command.TC=`which tc`# The network interface we're planning on limiting bandwidth.IF=eth0 # Interface# Download limitDNLD=2mbit # DOWNLOAD Limit# Upload limitUPLD=2mbit # UPLOAD Limit# IP address of the machine we are controllingIP=10.186.63.145 # Host IP#IP=10.186.63.20# Network latencyDELAY=125ms# Filter options for limiting the intended interface.U32="$TC filter add dev $IF protocol ip parent 1:0 prio 1 u32"$TC qdisc add dev $IF root handle 1: htb default 1$TC class add dev $IF parent 1: classid 1:10 htb rate $DNLD$TC class add dev $IF parent 1: classid 1:20 htb rate $UPLD$TC qdisc add dev $IF parent 1:10 handle 10: netem delay $DELAY$TC qdisc add dev $IF parent 1:20 handle 20: netem delay $DELAY$U32 match ip dst $IP/32 flowid 1:10$U32 match ip src $IP/32 flowid 1:20
4.驗證配置生效
DTLE 源端伺服器 ping DTLE 目標端伺服器DTLE 目標端伺服器 ping DTLE 源端伺服器DTLE 源端到 DTLE 目標端網路頻寬 DTLE 目標端伺服器 iperf3 -s DTLE 源端伺服器 iperf3 -c 10.186.63.145DTLE 目標端到 DTLE 源端網路頻寬 DTLE 目標端伺服器 iperf3 -s DTLE 源端伺服器 iperf3 -c 10.186.63.145 -R5.分別在伺服器 10.186.63.20 和 10.186.63.145 部署 DTLE 組成叢集
場景一:不同網路延遲下資料庫同步延遲網路頻寬 2Mbits/s、資料壓力 300QPS(binlog 產生速率為 1.47Mbit/s(約 15GB/天))持續壓測 120 秒透過改變 TC 指令碼來模擬不同網路延遲情況下對 DTLE 資料同步延遲的影響job 配置中 GroupTimeout 的值為網路延遲的 2 倍減 10ms(例如:網路延遲為 100ms 則 GroupTimeout=190)job 配置中 GroupMaxSize 的值為 512000 (500KB)
注:圖中複製延遲為 120 秒壓力測試中的最高複製延遲時間
小結:
1.不同的網路延時,透過 DTLE 複製延遲在 2 秒內
2.特殊限制場景:
網路頻寬不足的場景下,複製延時會線性增長場景二:極限頻寬下,MySQL 原生複製和 DTLE 壓力對比網路頻寬 2Mbits/s、網路延遲 250ms在不產生線性遞增複製延遲的條件下,所能支援的最大資料壓力job 配置中 GroupTimeout 的值為 490(網路延遲的 2 倍減 10ms)job 配置中 GroupMaxSize 的值為 1024000 (1000KB)jbo 配置中 ReplChanBufferSize 的值為 600
注:718QPS 相當於每秒產生 452KB binlog(3.6Mbit/s),367 QPS 相當於每秒產生 231KB binglog(1.8Mbit/s)。
小結:
1.在網路受限的條件下,MySQL 原生複製在 1.8Mbit/s 的壓力下,到達最高壓力
2.在網路受限的條件下,DTLE 複製在 2.7Mbit/s 的壓力下,到達最高壓力
3.DTLE 利用分組和壓縮,在網路受限場景下,能承載更高的複製壓力,更好的適應窄頻寬的場景
場景三:頻寬不受限,MySQL 原生複製和 DTLE 使用頻寬對比網路延遲 250ms、無頻寬限制在不同資料壓力下,傳輸佔用的網路頻寬job 配置中 GroupTimeout 的值為 490job 配置中 GroupMaxSize 和 ReplChanBufferSize 的值隨壓力增加而增大小結:
1.完成同等資料量的傳輸複製,DTLE 相比 MySQL 原生複製提供更低的頻寬佔用;頻寬佔用率最高是 MySQL 原生複製的近 1/3。
最新評論