引言:
Oracle平台针对灾备和数据同步提供了几种不错的手段,其中包括OGG、ADG等。那么如何充分利用ADG,并保证其发挥最优性能,今天我们就来探究下针对使用了ADG的项目,该如何全面的进行非功能测试。
1、OGG与ADG的共性与区别
Oracle平台针对灾备和数据同步提供了几种同步软件,包括:ADG,OGG,DSG,高级复制,流复制以及自主开发的基于logmnr的数据同步软件。他们各有各自的优劣,这里主要介绍最常用的ADG和OGG。
1)ADG:最常用的同城,异地灾备解决方案。物理级备份,备机不可写,传输数据为所有redo日志的更改,数据量稍大。不过从以往的使用经验来看,也不太会影响网络。除非应用对网络有很苛刻的要求。即使有,也可以通过vlan或者路由或者多网卡的方法建立网络通道,主备库完全一致。缺点是必须全库备份,且仅支持同构数据平台进行数据同步。
2)OGG:逻辑备份,主要采用特有的技术从联机日志中抽取更改项应用到备库,主备库为两个库,可以全库同步也可以同步单张表或数张表,同步速度较快,传输数据量很少,DML操作和DDL操作均支持。OGG可以支持异构平台进行数据同步。
2、ADG的应用
随着Oracle ADG的出现,Oracle在读写分离的支持上又进一步了,可以在延迟很少的情况下提供读,而且不会出现复制错误或者数据不一致的问题。某银行的某系统负责全行所有客户的基本信息的查询工作,该系统特征包含以下几点:
1)数据存量非常大,系统包含若干张数据上亿的表。
2)每天访问量非常大。全行其他系统在查询客户的基本信息都需要访问该系统,日交易量上亿,峰值tps能达到4000-5000tps。
3)该系统的高频交易主要为查询交易,少量维护交易。
针对系统上述特点,同时为了提高系统所能承担的压力,决定对该系统增加一套数据库,并在两套数据库之间使用ADG进行数据的同步操作。其中一套设定为主库,该库允许进行读操作和写操作。而新增的第二套库为备库,该库只提供读服务。主库在进行了写操作后,会实时同步到备库上。
使用ADG的架构存在以下优势:
1)管理维护简单,DBA只要熟悉Dataguard的管理即可,无需再额外学习其他方面的新知识;
2)Active Dataguard Reader Farm节点是灵活可扩展的,可以在线添加或者删除节点,并且可以线性扩展而不对生产系统造成影响;
3)可以真正做到实时查询,不会因为事务造成同步阻塞,性能有保障;
4)没有数据类型的限制;
5)高可用性, 节点的宕机都不会影响到数据库的可用性。
以上仅仅只是对ActiveDataguard和Active Dataguard Reader Farm做一个简单的介绍,以下是读写分离的架构图:
3、ADG非功能测试小试
除了传统的非功能测试内容,性能测试、稳定性测试等,针对ADG的特性,我们还增加设计了以下几个方面的测试:
1)批量交易对ADG复制效率的影响:
测试场景设计:
在最优容量的联机交易场景下,增加批量交易作为背景压力。不断减小维护类交易脚本中查询结果的时间延迟(延长脚本中等待时长,获取返回结果是否为pass),以此获得交易100%成功的最小延迟时间。并与不带批量所测的延迟时间进行比较。
测试结果预期:
存在批量背景压力的情况,对ADG的复制效率基本没有影响。
实际测试结果:
通过测试,我们得到在有批量背景压力下,ADG的复制延迟时间与不带批量时ADG的复制延迟时间基本相同。
测试结论:
批量背景压力,不会对联机交易的ADG复制产生影响。
2)ADG能否支持1个主库带动两个备库的情况:
测试场景设计:
在原有两套数据库的情况下,增加一套数据库作为备库的备库,即构成一主两备的场景。在该配置下,发起最优容量的测试场景,获取维护类交易100%成功的最小延迟时间。并与一主一备的情况下的最小延迟时间进行比较。
测试结果预期:
一主两备的情况下,ADG的复制效率与一主一备没有影响。
实际测试结果:
通过测试,我们得到在一主两备的情况下,ADG的复制延迟时间与一主一备ADG的复制延迟时间基本相同。
测试结论:
主库性能CPU无明显变化、到第一套备库的复制延迟无明显变化。
3)突发网络故障对ADG复制的影响
测试场景设计:
在最优容量的联机交易场景下,模拟网络故障,获取5分钟网络不可达后恢复ADG复制恢复需要的时间。
测试结果预期:
在网络不可达5分钟后,重新联网,维护类交易能达到100%正确后,即为ADG复制恢复时间,且该时间不应过长。
实际测试结果:
通过测试,我们得到在2分钟内,所有维护类交易正常执行。
测试结论:
ADG恢复机制完备,能够在突发状况恢复后,很快恢复自身工作。
4、小结
Oracle提供的ADG数据复制同步机制,在读写分离的支持上又进一步,可以在延迟很小的情况下提供读,同时不会出现复制错误或者数据不一致的问题。同时,ADG的高可用性能好,节点的宕机或者网络不通等情况,均不会影响到数据库自身的可用性,并能在网络恢复后,迅速恢复ADG的正常复制工作。很适用作为多套数据库之间数据同步的灾备方案使用。