暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

多租户备份恢复性能测试方案

原创 在突围的测试工作者 2025-08-12
130

⚙️ 1. 环境部署

组件配置说明存储位置
CDB ROOT1个/data1 (NVMe SSD)
PDB$SEED1个/data1
PDB实例2个 (PDB1, PDB2)/data1
数据文件所有库统一存储/data1
REDO日志集中存储/data2 (NVMe SSD)

存储优化:NVMe SSD确保IO瓶颈最小化,后期可切换用户实际存储环境测试


💾 2. 数据量设计(关键调整)

测试场景对比表

测试目标PDB数据量总数据量对比基准
性能摸底测试每个PDB TPCC 300仓≈70G单机70G环境
大数据量测试每个PDB TPCC 1000仓≈230G极限场景验证

调整说明

  • 两个PDB数据量总和 严格等于单机测试数据量(如单机测70G,则PDB1+PDB2=35G+35G)

  • 确保多租户与单机测试数据量完全一致,可比性更强


🔧 3. 备份类型矩阵


⏱️ 4. 性能统计方法(自动化实现)

备份/恢复速率计算公式

text

速率(MB/s) = INPUT_BYTES总和 / 命令执行时间

数据获取方式

指标 获取方式 精度说明
INPUT_BYTES CDB root, pdb1, pdb2分别查询dba_backup_set视图,再求和:SELECT input_bytes FROM dba_backup_set WHERE tag='<TAG>' 误差<0.05% (33G场景差16M)
OUTPUT_BYTES CDB root, pdb1, pdb2分别查询V$BACKUP_PROGRESS视图,再求和:SELECT output_bytes FROM $BACKUP_PROGRESS;  
执行时间 脚本记录:start=$(date +%s); yasrman ...; end=$(date +%s) 精确到秒级

统计优化

仅需在 CDB ROOT 层面统计即可(dba_backup_set已包含所有PDB备份元数据)——后期可调整,暂不支持


🎯 5. 性能达标标准

测试项合格标准验证方法
备份速率多租户速率 ≥ 单机速率的95%对比相同数据量单机测试结果
恢复速率多租户速率 ≥ 单机速率的95%对比相同数据量单机测试结果
磁盘瓶颈达到NVMe SSD 顺序读写极限的90%用fio测试磁盘基准:
fio -name=test -rw=write -bs=1M -size=100G

🔬 6. 测试执行步骤

场景1:70G数据量测试

bash

# 在PDB1和PDB2分别load TPCC 150仓数据
# 执行备份测试 (示例:AES128加密备份)
$ start_time=$(date +%s)
$ yasrman sys/****** -c "backup database encryption aes128 identified by '123456' tag 'pdb70g_aes'" -D /catalog
$ end_time=$(date +%s)

# 计算速率
$ input_bytes1=$(yasql sys/****** -c "SELECT input_bytes/1024/1024 FROM dba_backup_set WHERE tag='pdb70g_aes'")
$ input_bytes2=$(yasql sys/******@PDB1 -c "SELECT input_bytes/1024/1024 FROM dba_backup_set WHERE tag='pdb70g_aes'")
$ input_bytes3=$(yasql sys/******@PDB2 -c "SELECT input_bytes/1024/1024 FROM dba_backup_set WHERE tag='pdb70g_aes'")
$ input_bytes = input_bytes1 + input_bytes2 + input_bytes3
$ echo "备份速率: $((input_bytes/(end_time-start_time))) MB/s"

场景2:1000仓大数据量测试

bash

# load TPCC 1000仓数据集
# 执行压缩备份测试
$ yasrman ... -c "backup database compression algorithm zstd low tag='pdb1000_zstd'"

📈 7. 性能对比表模板

测试场景备份类型数据量单机速率(MB/s)多租户速率(MB/s)差异率
70G普通全量普通70G650632-2.7%
70G加密AES12870G580562-3.1%
1000仓压缩zstd low≈230G520510-1.9%
1000仓恢复lz4 low≈230G600588-2.0%

⚠️ 8. 注意事项

  1. 环境一致性

    • 单机对比测试需使用 相同硬件配置

    • 测试前重启服务器清除缓存

    bash

    echo 3 > /proc/sys/vm/drop_caches

  2. 执行规范

    • 每种备份类型运行3次取平均值

    • 排除首次执行的缓存影响

  3. 监控手段

    bash

    # 实时监控IO
    $ iostat -xmt 2
    # 监控yasrman进程
    $ top -p $(pgrep yasrman)
  4. 异常处理

    sql

    -- 检查备份异常
    SELECT tag, status, error FROM dba_backup_set WHERE status!='COMPLETED';

📝 9. 最终交付物

  1. 性能对比报告:包含多租户 vs 单机的速率对比图表

  2. 磁盘IO分析:备份期间的iostat数据

  3. 自动化脚本

    bash

    #!/bin/bash
    # 自动执行测试流程
    run_test() {
      local tag=$1
      local cmd=$2
      
      start=$(date +%s)
      yasrman ... -c "$cmd" -D /catalog
      end=$(date +%s)
      
      bytes=$(yasql ... -c "SELECT SUM(input_bytes) FROM dba_backup_set WHERE tag='$tag'")
      rate=$((bytes/(end-start)/1024/1024))
      echo "$tag | 耗时: $((end-start))s | 速率: ${rate}MB/s"
    }
    
    run_test "full_70g" "backup database tag 'full_70g'"
    run_test "aes_70g" "backup database encryption aes128 identified by '123456' tag 'aes_70g'"

通过该方案可科学验证多租户备份恢复性能是否达到单机水平,且数据量设计确保对比公平性。

最后修改时间:2025-08-12 21:50:31
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论