技术开发 频道

揭秘达梦数据库高性能读写分离集群

  【IT168 评论】随着各行业业务数据和数据结构复杂程度的不断攀升,数据库的访问压力正不断增强。在大型应用系统中往往存在上百万的用户,有上千万的数据量,产生众多的数据库查询操作,也有较多的数据库写操作。如果能将数据库的读写操作分离,无疑能大幅提升系统性能。

  1.系统概述

  在一个高并发的事务型系统中,当写事务占的比例相对读事务相对较小时,可以借助DM7的主备系统备机可读的特点,将读事务转移到备机执行,减少单节点的并发压力,通过增加备机节点资源,提高系统的并发能力,增强系统性能。

  DM7提供一种独具创新的主备方案,即时归档主备系统,该系统可通过客户端来实现读写事务的自动分离,读事务在备机执行,写事务在主机执行,减轻主机的负载。备机可以配置多个,备机配置的越多,更能分担主机的压力,系统整体并发效率越高。

  2.读写分离流程

  DM7使用JDBC驱动与服务器结合的方式实现读写分离,大致流程如下:

  1) 用户登录后,客户端首先连接到主机,主机根据即时归档的配置,获取一个有效的备机信息,并返回给客户端。

  2) 客户端根据主机返回的备机IP和端口,建立与该备机的连接。

  3) 客户端执行语句时先在备机上执行,如果是只读事务,则只在备机上执行。

  4) 如果系统收到客户端试图在备机模式下修改数据等错误,则说明该事务是写事务,则转移到主机上执行。

  5) 一旦主机上执行的写事务提交,则下次继续从备机开始执行。

  6) 为了实现负载均衡,防止出现读事务过多占用备机资源、主机空闲的情况,客户端采用一定的算法进行均衡,主机上也会执行一部分读事务。

系统概述与读写分离流程
图1 读写分离流程

  3.即时归档

  DM7支持多种归档类型,本地归档、实时归档、同步归档、异步归档等类型。为了实现读写分离,新增一种即时归档(Timely archive)类型,以区别实时归档。

  实时归档是实时发送日志到备机,备机收到日志不会等待日志APPLY完成,立即响应给主机,主机收到响应后才刷本地日志。

  即时归档是一种比实时归档更加严格的远程归档方式,先刷本地日志,然后发送到备机,并且等待备机APPLY完成,之所以要这么做,原因有2个:

  首先,即时归档主备系统不会发生主备切换,在主机发送完日志到备机后刷日志前主机崩溃的情况下,不能让备机多一段日志,确保主机数据是完整且最新的。

  其次,需要保证主备机的数据一致性,避免从备机读的数据到主机进行更新时数据已经不一致了。

  在某些不需要保证严格一致性的情况下,可以通过dmarch.ini中的ARCH_WAIT_APPLY配置项,来配置不需要等待备机重做完日志的主备系统,类似于实时归档,可以进一步提高系统性能。

  更多精彩尽在2014年4月10日-12日在北京五洲皇冠国际酒店举办的第五届中国数据库技术大会,3月25日之前订票可享受8.8折最低票价。

Facebook专家:Hadoop不足以处理大数据
进入官网了解更多详情

0
相关文章