IT 运维
IT Operation and Maintenance
65
2020 . 03 中国金融电脑
大型数据中心主机查询下移技术研究
中国农业银行数据中心  马成才  徐志华
上世纪90年代,为了满足业务信息化建设需求,国内主要大型商业银行陆续采用了数据和应用大集中的管理模式,即核心应用和数据全部放在IBM 大型主机上进行统一管理。随着银行业务的快速发展,集中式核心业务系统对IBM 大型主机依赖性越来越强,使得IBM 大型主机在银行核心系统中逐渐处于垄断地位。除了高额的软硬件成本及服务费用外,在信息安全方面,国外软硬件屡屡爆出后门,信息系统的安全问题也日益凸显。
为了节约主机资源,强化信息安全,构建更为灵活的银行应用系统,国内主要大型商业银行近几年陆续开始了针对主机业务下移到开放平台的相关研究和建设。中国农业银行(以下简称“农行”)新一代核心系统
投产后,查询交易在每天总交易量中占比最大。为了减少交易增长对主机MIPS 资源的压力,农行经过长期的探索和研究,逐步基于QREP 数据复制技术在开放端构建了一套高性能、自主可控的主机下移查询系统,并逐步将近一半的查询业务下移到了开放平台运行。
一、QREP 数据复制技术
QREP 是用于实现主机DB2数据库与其他同构或异构数据库进行数据准实时复制的同步软件。使用QREP 首先需要在源端数据库和目标端数据库间进行数据铺底,即将源端数据库相关应用表的当前数据迁移到目标端数据库中,主要有以下两种模式。
1.利用QREP 软件自带的自动加载工具
该方式下QREP 自动调初始化数据(Cross-Load)并同步获取增量数据复制到目标端数据库中。该模式操
作相对简单,但速度较慢,因此只适用于数据量较小的应用表。
2.人工外部加载初始化
该方式需要人工进行源端数据库数据表的导出、转码、目标端数据库导入以及增量数据追数等一系列操
作,全部成功后开启数据复制。该模式人工操作复杂,但速度相对较快且可以解决特殊字符的EBCDIC 编码转UTF-8编码等QREP 自身无法解决的问题,该模式是当前常用的数据铺底方式。
源端数据库和目标端数据库间的数据铺底完成后,通过启动订阅的方式可以开启QREP 增量数据复制,主机至开放QREP 复制的基本原理如图1所示。主机端核心交易(包含查询交易和修改交易)访问主机DB2数据库,QREP Capture 组件从DB2数据库的LOG 中将应用数据的修改提取出来并整理成特定格式的SQL Message,然后通过主机端的MQ 组件将这些SQL Message 发送到开放端的MQ 组件,开放端的QREP Apply 组件从前面的MQ 中获取SQL Message 并通过多个agent 并发处理将这些SQL Message 所代表的SQL 语句在ORACLE 数据库中执行。通过这样异步传输并执行的方式,QREP 保证了在主机DB2端发生的数据变化都可以被准实时地复制到开放端的Oracle 数据库中,从而可以将主机端原来访问DB2数据库的部分查询类交易下移到开放端,通过访问Oracle 数据库执行。
二、目标端开放平台的高可用设计
承担主机下移查询业务的开放平台Oracle 数据库采用RAC 集部署,通过QREP 实现和主机DB2数据库
IT运维IT  OPERATION  AND
的数据同步,通过RAC集内部高可用机制实现数据库的高可用,同时,该RAC集还部署了ADG备库,可在确保Oracle主库业务响应时间的情况下实现主备库的数据同步。当主库不用时可以切换到ADG备库,进一步增强了承担主机下移查询业务的Oracle数据库集的高可用性。查询下移应用程序通过JDBC访问Oracle RAC获取从主机DB2同步的数据,在出现故障时,可以通过两种方式实现“一键回切”,使查询下移回切主机运行以保证业务的连续性,如图2所示。
1.数据源回切
仅将开放端应用程序连接的数据库从开放端Oracle 改为主机DB2,此时查询应用程序仍运行在开放平台上。该回切方式适用于开放端程序运行正常但Oracle数据库异常的场景。
2.交易整体回切
即将应用程序和数据库都切回主机运行,该回切方式适用于开放端程序运行异常等场景。
开放平台下移查询系统是主机核心系统的有益补充,通过持续支撑原主机端的联机查询交易、报表批量下移至开放平台,可以有效解决主机核心系统交易量日益增多、MIPS资源日趋紧张的问题。
三、关键技术点
1.QREP容量及分组传输
QREP的Capture组件和Apply组件对于单位时间内应用表的IUD(Insert、Update和Delete)变化量存在容量上限,需要合理规划应用表的分组。在保证各业务模块用表汇聚的前提下尽可能实现应用表依据IUD量错峰分组,即将IUD变化高峰不在同一个时段的应用表划分到同一路QREP传输,以降低单路QREP承载的瞬时IUD峰值过高,避免造成性能瓶颈。
2.开放端数据库存储规划
主机端DB2数据库使用的是EBCDIC编码,开放端Oracle数据库使用的是UTF-8编码。对于大多数字符,UTF-8比EBCDIC占用的字节更多,因此存储相同的数据信息,开放端Oracle数据表的字段长度需要根据编码差异进行适当放大。同样,开放端存储Oracle数据的磁盘容量也需要根据上述差异规划足够的空间。
3.合理设置MQ容量
MQ用于承接源端和目标端的IUD
消息传输,其消图1  主机至开放QREP数据复制基本原理示意
66FINANCIAL COMPUTER OF CHINA
IT 运维
IT Operation and Maintenance
67
2020 . 03 中国金融电脑
息队列深度设置对QREP 传输的性能有重要影响。队列深度的大小需要根据具体应用消息的长短和当前服务器配置进行多轮性能测试后确定,设置过大可能会导致大量的消息积压在MQ 磁盘中,从而出现MQ 性能急剧恶化的情况,而设置过小会频繁导致QREP Capture 因为MQ 消息队列写满而异常下宕。
4. 改造应用表
使用QREP 进行数据复制,源端DB2数据库必须进行FULL LOG 改造,以确保DB2 LOG 记录的是应用表各字段完整的变化信息。当然,这增加了DB2 LOG 的总体数据量,为了避免日志空间爆满,需要根据实际需求适量调大DB2的ACTIVE LOG 及ARCHIVE LOG。
此外,为了提高复制性能,建议所有应用表至少有一个唯一索引。唯一索引可以减少目标端Apply 时的锁冲突,提高Apply 的速度,同时可以很好地解决由于变
更或应急处置时Capture 指针回指导致的数据重复等诸多问题。
5. 设置监控指标
QREP 数据传输的总体延迟时间对目标端查询交易执行结果的准确性有直接影响,因此需要重点对Capture、MQ 以及Apply 各组件的延迟情况进行分类重点监控。此外,为了更全面地掌握QREP 整体运行情况,各应用表复制进程的状态、MQ 队列的堆积情况以及MQ 各传输通道的状态等重要指标也需要设置相应的监控。
在主机查询下移技术研究和系统建设的道路上,农行经过长期探索和实践,基于QREP 数据复制技术,逐步在开放端建成了一套高性能、高可用的分布式核心业务系统。目前该系统已承担了农行近一半的核心查询业务,有效地降低了运营成本,提升了整体服务
能力。
2  主机至开放查询下移架构及“一键回切”示意
银行为什么用db2数据库栏目编辑:孔蕊 ***************