⚙️ 1. 环境部署
| 组件 | 配置说明 | 存储位置 |
|---|---|---|
| CDB ROOT | 1个 | /data1 (NVMe SSD) |
| PDB$SEED | 1个 | /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普通全量 | 普通 | 70G | 650 | 632 | -2.7% |
| 70G加密 | AES128 | 70G | 580 | 562 | -3.1% |
| 1000仓压缩 | zstd low | ≈230G | 520 | 510 | -1.9% |
| 1000仓恢复 | lz4 low | ≈230G | 600 | 588 | -2.0% |
⚠️ 8. 注意事项
环境一致性:
单机对比测试需使用 相同硬件配置
测试前重启服务器清除缓存
bash
echo 3 > /proc/sys/vm/drop_caches
执行规范:
每种备份类型运行3次取平均值
排除首次执行的缓存影响
监控手段:
bash
# 实时监控IO $ iostat -xmt 2 # 监控yasrman进程 $ top -p $(pgrep yasrman)
异常处理:
sql
-- 检查备份异常 SELECT tag, status, error FROM dba_backup_set WHERE status!='COMPLETED';
📝 9. 最终交付物
性能对比报告:包含多租户 vs 单机的速率对比图表
磁盘IO分析:备份期间的iostat数据
自动化脚本:
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




