rman备份流量不能简单用数据库大小除以时间估算,实际受压缩比、归档速率、通道并发数及section size等共同影响;例如2tb库日增150gb归档、压缩比2.3:1时,真实带宽需求远超理论值,须监控归档速率、压缩吞吐与通道带宽,并排查listener、存储网关或文件系统瓶颈。
备份流量不是“数据库大小 ÷ 时间”这么算
直接拿数据库总大小除以备份窗口时间,会严重低估真实带宽需求。rman 备份实际流量受压缩比、归档日志生成速率、通道并发数、section size切分方式共同影响。比如一个 2 tb 数据库,若每日归档日志增量达 150 gb,且启用 compressed backupset(实测压缩比约 2.3:1),那有效传输量远不止“2 tb ÷ 2 小时 = 278 mb/s”。更关键的是:归档日志必须在全备过程中实时捕获并传输,这部分是叠加流量。
必须盯住三个实时指标:归档速率、压缩后吞吐、通道实际带宽
仅看 RMAN 日志里的“completed backup piece”时间戳没用。要抓真实压力点:
- 查当前归档生成速度:
SELECT NAME, VALUE FROM V$SYSSTAT WHERE NAME LIKE 'redo log space requests%';配合V$ARCHIVED_LOG按小时统计blocks * block_size,得出每小时归档体积 - 跑一次小范围测试备份(如单个表空间),开启
TRACE:RMAN> SET COMMAND ID TO 'test_bw';再执行BACKUP TABLESPACE users FORMAT '/tmp/test_%U.bk';,然后从trc文件里提取bytes sent和elapsed time算出单通道实际 MB/s - 用
netstat -s | grep -i "segments retransm"或ss -i观察 TCP 重传率 —— 若 > 0.5%,说明网络已开始丢包,再提并发只会恶化吞吐
并行通道 ≠ 线性提速,瓶颈常卡在目标端监听或磁盘 I/O
你配了 CONFIGURE DEVICE TYPE DISK PARALLELISM 4,又手工 ALLOCATE CHANNEL 四次,但实际吞吐卡在 60 MB/s?大概率是下面某个环节被堵死:
- 目标端
listener.ora中MAX_PROCESSES小于并发通道数,新连接被拒绝,RMAN 自动降级为单通道 - 备份目标路径挂载的 NFS 或云存储网关,其单连接吞吐上限只有 30 MB/s,四通道全打在同一连接上,毫无意义
-
FORMAT路径所在文件系统使用 ext4 且未开启barrier=0或 XFS 未配logbsize,写入延迟飙升,通道空转等待
验证方法:分别对每个 ALLOCATE CHANNEL 指定不同 CONNECT 字符串(哪怕指向同一实例),再用 lsof -i :1521 看是否真建立了四个独立连接。
跨地域或千兆以下网络,别信“理论带宽”,重点压测 backupset 模式下的首字节延迟
广域网场景下,image copy 模式因无压缩、无打包,首字节延迟低但总流量爆炸;backupset 模式首字节延迟高(要等源端打包完第一个块),但后续流速稳。实测中,千兆网络下 backupset 单通道平均 85 MB/s,image copy 却因重传频繁掉到 42 MB/s。真正致命的是:一旦 RTT > 40ms,image copy 的 TCP 窗口利用率断崖下跌,而 backupset 的 chunked transfer 更耐抖动。
所以别只看峰值带宽数字。用 tc qdisc add dev eth0 root netem delay 30ms loss 0.1% 模拟弱网,跑两次相同备份,对比 ELAPSED TIME 和 OUTPUT BYTES 的比值变化 —— 这个比值才是你该按的带宽基数。











