项目测试组又反馈一个问题,XTTS执行全量备份速度慢,影响测试进度。

实际算了下,平均速度才150MB/s..

这个速度在客户生产环境的确是不够看,首先询问是否开了并行,开了多少?

回复是说有开32个并行,在xtt.properties配置文件中指定的。

另外也注意在RMAN中show all的配置是默认没有指定的。

同时有个重要的现象,在备份过程中,每次只生成一个数据文件,按照顺序写的。

这个现象一描述出来,就严重怀疑是并行没生效,怀疑是xtt.properties配置文件单独设置那个并行不生效。

用我自己的测试环境直接验证下吧,然后再给项目测试组去看到底该如何设置并行。

这里模拟3个场景:

  • 1.RMAN未配置并行,只在xtt配置文件中指定并行
  • 2.RMAN配置并行,xtt配置文件中不指定并行
  • 3.RMAN和xtt配置文件均指定并行

先做下准备工作:

在我的测试环境准备两个表空间TEST、JINGYU,

其中TEST表空间有2个数据文件,JINGYU表空间有1个数据文件,每个数据文件大小设置为1G(之前初始设置100M,结果发现太小的话不好观察且时间误差大);

测试XTTS脚本全量备份阶段的实际效率。

sqlplus sys/oracle@jingyu as sysdba

SQL>
select FILE_NAME, bytes/1024/1024 "MB" from dba_data_files where TABLESPACE_NAME in ('TEST','JINGYU'); FILE_NAME MB
---------------------------------------------------------------------------------------- ----------
/flash/oradata/DEMO/fb6d1d5d4f0a245be0530b01a8c024da/datafile/jingyu1.dbf 1024
/flash/oradata/DEMO/fb6d1d5d4f0a245be0530b01a8c024da/datafile/test.308.1140833299 1024
/flash/oradata/DEMO/fb6d1d5d4f0a245be0530b01a8c024da/datafile/test1.dbf 1024

1.RMAN未配置并行,只在xtt配置文件中指定并行

这也就是项目测试组目前的设置情况:

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;
grep -vE '^$|^#' xtt.properties RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; [oracle@bogon xtt]$ grep -vE '^$|^#' xtt.properties
tablespaces=TEST,JINGYU
platformid=13
src_scratch_location=/xtts
dest_datafile_location=+DATADG
dest_scratch_location=/xtts
parallel=3
rollparallel=2
getfileparallel=4
srcconnstr=sys/oracle@jingyu
destconnstr=sys/oracle@jingyu
allowstandby=1 [oracle@db01rac1 xtt]$
$ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3

注意:有个小技巧,为了反复全新测试这个XTTS第一次全备场景,在每次执行前可直接删除TMPDIR下的临时文件以及src_scratch_location下面备份出来的文件。

建议TMDIR设置在xtts脚本中的一个单独目录,这样好做清理。

比如我这里是:TMPDIR=/home/oracle/xtt/tmp

同时注意tmp目录下面的文件删除,tmp目录本身不能删除。

set lines 180 pages 200
COL INPUT_TYPE FORMAT a20
COL STATUS FORMAT a20
COL minutes FORMAT 999.999
COL Input_mb FORMAT 99,999.99
COL Output_mb FORMAT 99,999.99 SELECT SESSION_KEY, INPUT_TYPE, STATUS,
TO_CHAR(START_TIME,'yyyy-mm-dd hh24:mi:ss') start_time,
TO_CHAR(END_TIME,'yyyy-mm-dd hh24:mi:ss') end_time,
INPUT_BYTES/1024/1024 Input_mb,
OUTPUT_BYTES/1024/1024 Output_mb,
ELAPSED_SECONDS Seconds
FROM V$RMAN_BACKUP_JOB_DETAILS
ORDER BY SESSION_KEY;

本次测试结果:

SESSION_KEY INPUT_TYPE           STATUS               START_TIME          END_TIME              INPUT_MB  OUTPUT_MB    SECONDS
----------- -------------------- -------------------- ------------------- ------------------- ---------- ---------- ----------
5073 DATAFILE FULL COMPLETED 2023-07-04 12:33:19 2023-07-04 12:33:50 2,048.00 2,048.00 31
5075 DATAFILE FULL COMPLETED 2023-07-04 12:33:52 2023-07-04 12:34:07 1,024.00 1,024.00 15

可以看到,在xtt.properties配置文件中指定了3个并行度,rman配置文件默认为1的情况下:

TEST表空间2个数据文件,从2023-07-04 12:33:19 到 2023-07-04 12:33:50,耗时31秒。

JINGYU表空间1个数据文件,从2023-07-04 12:33:52 到 2023-07-04 12:34:07,耗时15秒。

整个任务共耗时46秒。整体平均速度68MB/s。

从这个数据判断,这种配置组合下并没有用到并行。

2.RMAN配置并行,xtt配置文件中不指定并行

那如果换过来测试呢?只在RMAN配置并行,xtt配置文件中不指定并行:

CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
grep -vE '^$|^#' xtt.properties RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET; using target database control file instead of recovery catalog
old RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters are successfully stored [oracle@bogon xtt]$ grep -vE '^$|^#' xtt.properties
tablespaces=TEST,JINGYU
platformid=13
src_scratch_location=/xtts
dest_datafile_location=+DATADG
dest_scratch_location=/xtts
parallel=1
rollparallel=2
getfileparallel=4
srcconnstr=sys/oracle@jingyu
destconnstr=sys/oracle@jingyu [oracle@db01rac1 xtt]$
rm -rf ./tmp/*
rm -rf /xtts/*.tf $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3

结果如下:

SQL> /
SESSION_KEY INPUT_TYPE STATUS START_TIME END_TIME INPUT_MB OUTPUT_MB SECONDS
----------- -------------------- -------------------- ------------------- ------------------- ---------- ---------- ----------
5078 DATAFILE FULL COMPLETED 2023-07-04 12:44:23 2023-07-04 12:44:49 3,072.00 3,072.00 26 [oracle@bogon xtts]$ ls -lrth
total 3.1G
drwx------. 2 root root 64K Jun 1 14:31 lost+found
-rw-r-----. 1 oracle oinstall 1.1G Jul 4 12:44 TEST_35.tf
-rw-r-----. 1 oracle oinstall 1.1G Jul 4 12:44 TEST_34.tf
-rw-r-----. 1 oracle oinstall 1.1G Jul 4 12:44 JINGYU_36.tf

可以看到,在xtt.properties配置文件中指定了1个并行度,rman配置文件设置为3的情况下:

TEST表空间2个数据文件和JINGYU表空间1个数据文件,作为一个任务跑,从2023-07-04 12:44:23 到 2023-07-04 12:44:49,耗时26秒。

从这个数据判断,这种配置组合下用到了并行。

整个过程耗时也是26秒。整体平均速度118MB/s。

3.RMAN和xtt配置文件均指定并行

这里均指定并行度3:

RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;

old RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters are successfully stored [oracle@bogon xtt]$ grep -vE '^$|^#' xtt.properties
tablespaces=TEST,JINGYU
platformid=13
src_scratch_location=/xtts
dest_datafile_location=+DATADG
dest_scratch_location=/xtts
parallel=3
rollparallel=2
getfileparallel=4
srcconnstr=sys/oracle@jingyu
destconnstr=sys/oracle@jingyu [oracle@db01rac1 xtt]$
rm -rf ./tmp/*
rm -rf /xtts/*.tf $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3

结果如下:

SQL> /
SESSION_KEY INPUT_TYPE STATUS START_TIME END_TIME INPUT_MB OUTPUT_MB SECONDS
----------- -------------------- -------------------- ------------------- ------------------- ---------- ---------- ----------
5081 DATAFILE FULL COMPLETED 2023-07-04 12:57:16 2023-07-04 12:57:42 2,048.00 2,048.00 26
5083 DATAFILE FULL COMPLETED 2023-07-04 12:57:45 2023-07-04 12:58:00 1,024.00 1,024.00 15

这个结果感觉是有点儿问题,但可以肯定TEST和JINGYU这两个表空间是串行执行的,可是TEST表空间内部的数据文件看起来有用到并行,但效果非常不好,为了排除掉我测试环境本身性能不稳定导致,所以清空环境重测一遍:

SQL> /
SESSION_KEY INPUT_TYPE STATUS START_TIME END_TIME INPUT_MB OUTPUT_MB SECONDS
----------- -------------------- -------------------- ------------------- ------------------- ---------- ---------- ----------
5085 DATAFILE FULL COMPLETED 2023-07-04 13:01:26 2023-07-04 13:01:42 2,048.00 2,048.00 16
5087 DATAFILE FULL COMPLETED 2023-07-04 13:01:45 2023-07-04 13:02:01 1,024.00 1,024.00 16

嗯,这次结果就非常清晰好看了:

TEST和JINGYU这两个表空间是串行执行的,然后TEST表空间内部的数据文件确认有用到并行。

可以看到,在xtt.properties配置文件中指定了3个并行度,rman配置文件也设置为3的情况下:

TEST表空间2个数据文件,从2023-07-04 13:01:26 到 2023-07-04 13:01:42,耗时16秒。这一阶段平均速度128MB/s。

JINGYU表空间1个数据文件,从2023-07-04 13:01:45 到 2023-07-04 13:02:01,耗时16秒。这一阶段平均速度64MB/s。

总耗时32秒。

总结

按照我测试环境的验证结果:

  • 1.RMAN未配置并行,只在xtt配置文件中指定并行

    不同表空间是串行执行,表空间内部的数据文件也是串行。

    也就是说全部串行操作,效率最差!

    总耗时46秒。整体平均速度68MB/s。

  • 2.RMAN配置并行,xtt配置文件中不指定并行

    有用到并行。

    总耗时26秒。整体平均速度118MB/s。

  • 3.RMAN和xtt配置文件均指定并行

    不同表空间是串行执行,表空间内部的数据文件有用到并行。

    第一阶段:平均速度128MB/s。

    第二阶段:平均速度64MB/s。

    总耗时32秒。整体平均速度96MB/s。

实践出真知,目前现象可以肯定的是,RMAN未配置并行肯定是不行的。

然后看起来xtt配置文件是否指定并行,对结果关系并不大?

因为XTTS脚本是MOS提供的,我们需要实际去看下这个脚本的说明文档,

  • V4 Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 2471245.1)

看看有关这个并行到底是咋描述的?

parallel

Defines the degree of parallelism used in copying (prepare phase), converting. Incremental backup creation parallelism is defined by RMAN configuration for DEVICE TYPE DISK PARALLELISM.

呵呵哒,增量备份(第一次0级备份也算增量备份)的并行度,人家文档说了要在RMAN配置的。

而这个xtts脚本中的并行,有点儿像是要把备份分成几批的感觉,完成一批就可以先做这部分的拷贝。

比如上面我测试场景2,不指定,两个表空间共3个文件就一个任务备份的,指定后,就拆分开来了。

我这里测试文件少就不展开了,如有兴趣可自行测试下。

总之,做XTTS测试时,这个RMAN并行度一定配置好,具体设置多少取决于你的存储IO能力、可用能力以及...你懂的。

XTTS系列之四:迷迷糊糊的并行度的更多相关文章

  1. Sql Server来龙去脉系列之四 数据库和文件

        在讨论数据库之前我们先要明白一个问题:什么是数据库?     数据库是若干对象的集合,这些对象用来控制和维护数据.一个经典的数据库实例仅仅包含少量的数据库,但用户一般也不会在一个实例上创建太多 ...

  2. Red Gate系列之四 SQL Data Compare 10.2.0.885 Edition 数据比较同步工具 完全破解+使用教程

    原文:Red Gate系列之四 SQL Data Compare 10.2.0.885 Edition 数据比较同步工具 完全破解+使用教程 Red Gate系列之四 SQL Data Compare ...

  3. .NET 4 并行(多核)编程系列之四 Task的休眠

    原文:.NET 4 并行(多核)编程系列之四 Task的休眠 .NET 4 并行(多核)编程系列之四 Task的休眠 前言:之前的几篇文章断断续续的介绍了Task的一些功能:创建,取消.本篇介绍Tas ...

  4. .Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础

    基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...

  5. 单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...

  6. C++ 提取网页内容系列之四正则

    标 题: C++ 提取网页内容系列之四作 者: itdef链 接: http://www.cnblogs.com/itdef/p/4173833.html 欢迎转帖 请保持文本完整并注明出处 将网页内 ...

  7. TCP/IP网络编程系列之四(初级)

    TCP/IP网络编程系列之四-基于TCP的服务端/客户端 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流的 ...

  8. nginx高性能WEB服务器系列之四配置文件详解

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  9. SQL Server 学习系列之四(SQL 内幕)

    SQL Server 学习系列之四(SQL 内幕) SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL ...

  10. R语言数据分析系列之四

    R语言数据分析系列之四 -- by comaple.zhang 说到统计分析我们就离不开随机变量,所谓随机变量就是数学家们为了更好的拟合现实世界的数据而建立的数学模型.有了她我们甚至能够来预測一个站点 ...

随机推荐

  1. [Linux]Windows远程CENTOS7桌面

    1 背景/问题描述 客户要在CENTOS7上运行我司的基于Java的一款图形化桌面软件,然后在Windows上远程该机器的桌面软件进行操作使用.但问题是,客户的CENTOS7服务器没有图形化桌面环境, ...

  2. Semantic Kernel 入门系列:🥑突破提示词的限制

    无尽的上下文 LLM的语言理解和掌握能力在知识内容的解读和总结方面提供了强大的能力. 但是由于训练数据本身来自于公共领域,也就注定了无法在一些小众或者私有的领域能够足够的好的应答. 因此如何给LLM ...

  3. .Net Core工作流WorkFlowCore

    前言 WorkFlowCore是一个针对.NetCore的轻量级的工作流引擎,提供了FluentAPI.多任务.持久化以及并行处理的功能,适合于小型工作流.责任链的需求开发.支持工作流长期运行,提供了 ...

  4. 帝国cms7.5和7.2 搜素模板支持 php和灵动标签以及不起作用

    帝国CMS搜索模板不支持动态标签调用,从7.0到7.2再到刚发布的7.5,帝国官方团队始终没解决这个问题,这很不方便,但是帝国的强大可以让我们忽略这个问题,今天老威就把这个bug的解决方法说一下. 第 ...

  5. 数据库mysql8.0安装+Navicat12

    第一次写博客,准备坚持下去把每天学习到的东西记录下来,刚好安装mysql8.0过程中遇到了一些问题并解决,系统win10.致敬博客 首先先粘贴一段mysql的百度百科词条:MySQL是一个关系型数据库 ...

  6. 目标检测(Object Detection)

    文章目录 目标检测(Object Detection) 一.基本概念 1. 什么是目标检测 2. 目标检测的核心问题 3. 目标检测算法分类 1)Tow Stage 2)One Stage 4. 目标 ...

  7. 浅谈如何使用 github.com/kardianos/service

    在实际开发过程中,有时候会遇到如何编写Go开机自启服务的需求,在linux中我们可以使用systemd来进行托管,windows下可以通过注册表来实现,mac下可以通过launchd来实现,上面的方式 ...

  8. 前端模拟“多线程”提交Http请求

    首先说,javascript没有多线程这样一个说法,我说的只是类似那种效果.其次,不建议使用这种方式解决问题,多线程应该交给后台去做. 但是,如果非要这样用,有什么方法呢? 我在工作中就遇到了这样的问 ...

  9. 大家都在用-神奇的Markdown格式

    概述 Markdown 是一种轻量级标记语言,它可以使我们专注于写作内容,而不用过多关注排版,很多博主.作家等都用它来撰写文章~ 本文将给各位小伙伴介绍 Markdown 语法的使用,本篇文章索奇就是 ...

  10. 关于前端vue打包项目以及静态网站部署项目到阿里云ECS云服务器初学简单教程

    准备工作: 1.首先进入https://ecs.console.aliyun.com/ 领取或者购买一台简单的ECS云服务器. 进入网站注册登录后拉到页面最下面或者顶部搜索免费云服务器领取立即试用 , ...