一种数据库集群读写分发方法技术

技术编号:37989693 阅读:5 留言:0更新日期:2023-06-30 10:04
一种数据库集群读写分发方法,包括以下步骤:S1:应用程序在建立连接的数据库上发送SQL语句,通过SQL语句驱动解析出请求语句的类型及特征;S2:驱动创建读写分离分发器,根据语法解析结果生成执行策略,将SQL语句发送到主节点及从节点执行;S3:通过数据库日志事务号判断主节点及从节点之间的数据是否一致,如果不一致,将查询发送给主节点执行;如果达到一致状态,通过负载均衡算法选择出一个从节点发送请求。既可以通过从节点分担主节点的压力负载,又保证了数据查询的一致性,业务应用程序可以在不做任何修改的情况下直接利用驱动的读写分离提升业务响应并发能力,同时可尽可能的利用数据库集群的性能,支持更大的业务负载。载。载。

【技术实现步骤摘要】
一种数据库集群读写分发方法


[0001]本专利技术涉及数据库
,尤其是涉及一种数据库集群读写分发方法。

技术介绍

[0002]当业务系统对数据库性能有要求时,单个数据库的服务能力是有限的,为了增强数据库系统服务能力,业界普遍使用数据库集群的“读写分离”方案。使用主库完成写操作,备库作为只读节点,竭尽可能的执行业务系统中的读请求,进而降低主库的压力。技术上普遍使用数据库中间件,或者业务应用自己拆分业务去实现读写分离。
[0003]数据库中间件的缺陷主要在于其性能损耗大,数据库中间件作为衔接业务系统与数据库的功能组件,存在着将业务请求转发给后端数据库节点,将后端节点的返回结果接收后转发给业务系统的过程,相较于业务系统直连数据库增加了一次网络转发过程。
[0004]传统的业务拆分对于开发人员来说需要更多的研发时间成本,当主从节点存在不一致的时候,业务系统难以高效的确认主从一致性,难以达到理想预期。

技术实现思路

[0005]针对现有技术存在的问题,本专利技术提供了一种数据库集群读写分发方法,解决数据库中间件,业务拆分无法充分发挥数据库集群性能的问题。
[0006]本专利技术中的数据库集群读写分发方法,包括以下步骤:
[0007]S1:应用程序在建立连接的数据库上发送SQL语句,通过SQL语句驱动解析出请求语句的类型及特征;
[0008]S2:驱动创建读写分离分发器,根据语法解析结果生成执行策略,将SQL语句发送到主节点及从节点执行;
[0009]S3:通过数据库日志事务号判断主节点及从节点之间的数据是否一致,如果不一致,将查询发送给主节点执行;如果达到一致状态,通过负载均衡算法选择出一个从节点发送请求。
[0010]进一步地,步骤S1中,应用程序调用驱动建立数据库连接,驱动检测到用户设置启用读写分离功能的连接配置,驱动创建与数据库各个节点的连接,在业务系统通过驱动发送请求时,驱动先对请求进行语法词法分析。
[0011]进一步地,步骤S2中,如果是主节点执行策略,则请求分发将SQL语句分发到主节点执行并返回执行结果;
[0012]如果是从节点执行策略,则请求分发将SQL语句分发到从节点执行并返回执行结果;
[0013]如果是需要主节点及从节点都发送,则请求分发将SQL语句分发到所有节点上进行执行,先发送至从节点执行,后发送至主节点执行。
[0014]进一步地,步骤S2中,识别SQL请求语句中的SQL类型,事务操作以及特殊字符;
[0015]当检测到SQL请求语句为写相关操作,设置执行策略为主节点执行;
[0016]当检测到SQL请求语句为事务操作,SET请求,设置执行策略为所有节点执行;
[0017]当检测到当前SQL请求语句是在事务中执行的,根据语句分发策略选择是否将执行策略设置分发;如果检测到当前SQL请求语句为查询语句,将执行策略设置为从节点执行;如存在特殊字符时则设置为主节点执行;
[0018]所述语句分发策略包括两种:一种是事务中的所有语句都分发到主节点,另一种是代表事务开始的读语句分发到从节点,一旦出现写语句,后面的语句都分发到主节点。
[0019]进一步地,步骤S2中,读写分离分发器通过主节点连接发送SQL语句到数据库主节点服务器,数据库主节点在执行完SQL语句后将结果返回客户端;
[0020]读写分离分发器通过从节点连接发送SQL语句到数据库从节点服务器,数据库从节点在执行完SQL语句后将结果返回客户端;
[0021]读写分离分发器通过所有节点连接发送SQL语句到数据库从节点服务器及主节点服务器,数据库主节点在执行完SQL语句后,比较从节点结果,如从节点结果与主节点不一致时,将从节点下线,驱动将主节点结果集返回给客户端。
[0022]进一步地,步骤S3中,通过数据库日志事务号判断主节点及从节点之间的数据是否一致包括:
[0023]S31:应用程序通过驱动建立与数据库集群的连接;
[0024]S32:在业务系统与数据库集群连接运行中,驱动中的健康检查器对数据库集群的主从身份确认更新,并更新各个节点的最新数据库日志事务号的值。
[0025]进一步地,步骤S32中,健康管理器根据连接配置中的健康检查的配置时间定期的对各个节点进行探活操作,以此来确认主节点与从节点的身份,并确定节点是否可用。
[0026]进一步地,步骤S32中,主节点及从节点的数据同步进度通过数据库日志事务号进行确认,主节点产生数据库日志事务号,从节点应用数据库日志事务号,当从节点的数据库日志事务号与主节点的数据库日志事务号等同时,可认为主节点及从节点的数据是完全一致的。
[0027]进一步地,步骤S3中,主节点及从节点的一致性算法包括:
[0028]业务系统通过驱动连续数据库集群实现读写分离时,驱动根据写操作更新主节点的数据库日志事务号的值;
[0029]读写分离器在发从节点前基于事务日志比较从节点数据库日志事务号的值+参数配置数据库日志事务号的允许延迟值>主节点写数据库日志事务号的值;
[0030]更新节点的数据库日志事务号包括:驱动与数据库服务器通信时,数据库服务器会通知驱动当前服务器的数据库日志事务号的值,主节点会根据操作类型选择性的记录数据库日志事务号的值,仅当写操作后的数据库日志事务号的值会被记录下。
[0031]进一步地,步骤S3中,负载均衡算法包括:
[0032]应用程序通过驱动在建立连接的数据库连接上发送SQL语句;
[0033]基于语句分发器选定的从节点策略及连接配置进行负载均衡;
[0034]在负载均衡时根据节点配置的权重,节点可用性,节点一致性以及随机算法,选择出从节点的ID,然后基于从节点ID进行发送。
[0035]进一步地,驱动包括UXDB的C接口驱动、java驱动或者数据库代理驱动。
[0036]进一步地,驱动为UXDB的C接口驱动。
[0037]本专利技术中的数据库集群读写分发方法,通过驱动连接到主从数据库节点,在用户执行SQL语句的时候,根据语句类型,将写类型语句发送到主节点执行,将读语句发送到从节点执行,在分发至从节点之前,会通过重做日志数据库日志事务号判断主从节点间数据是否一致,如果不一致,会将查询发送给主节点执行;如果达到一致状态,则通过负载均衡算法选择出一个从节点发送请求。
[0038]通过上述数据库集群读写分发方法,既可以通过从节点分担主节点的压力负载,又保证了数据查询的一致性,业务应用程序可以在不做任何修改的情况下直接利用驱动的读写分离提升业务响应并发能力,同时可尽可能的利用数据库集群的性能,支持更大的业务负载。
附图说明
[0039]在下文中将基于实施例并参考附图来对本专利技术进行更详细的描述。其中:
[0040]图1为本专利技术中数据库集群读写分发方法的流程图;
[0041]图2为本专利技术中SQL语句分发的流程示意图;
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库集群读写分发方法,其特征在于,包括以下步骤:S1:应用程序在建立连接的数据库上发送SQL语句,通过SQL语句驱动解析出请求语句的类型及特征;S2:驱动创建读写分离分发器,根据语法解析结果生成执行策略,将SQL语句发送到主节点及从节点执行;S3:通过数据库日志事务号判断主节点及从节点之间的数据是否一致,如果不一致,将查询发送给主节点执行;如果达到一致状态,通过负载均衡算法选择出一个从节点发送请求。2.根据权利要求1所述的数据库集群读写分发方法,其特征在于,步骤S1中,应用程序调用驱动建立数据库连接,驱动检测到用户设置启用读写分离功能的连接配置,驱动创建与数据库各个节点的连接,在业务系统通过驱动发送请求时,驱动先对请求进行语法词法分析。3.根据权利要求1所述的数据库集群读写分发方法,其特征在于,步骤S2中,如果是主节点执行策略,则请求分发将SQL语句分发到主节点执行并返回执行结果;如果是从节点执行策略,则请求分发将SQL语句分发到从节点执行并返回执行结果;如果是需要主节点及从节点都发送,则请求分发将SQL语句分发到所有节点上进行执行,先发送至从节点执行,后发送至主节点执行。4.根据权利要求3所述的数据库集群读写分发方法,其特征在于,步骤S2中,识别SQL请求语句中的SQL类型,事务操作以及特殊字符;当检测到SQL请求语句为写相关操作,设置执行策略为主节点执行;当检测到SQL请求语句为事务操作,SET请求,设置执行策略为所有节点执行;当检测到当前SQL请求语句是在事务中执行的,根据语句分发策略选择是否将执行策略设置分发;如果检测到当前SQL请求语句为查询语句,将执行策略设置为从节点执行;如存在特殊字符时则设置为主节点执行;所述语句分发策略包括两种:一种是事务中的所有语句都分发到主节点,另一种是代表事务开始的读语句分发到从节点,一旦出现写语句,后面的语句都分发到主节点。5.根据权利要求3所述的数据库集群读写分发方法,其特征在于,步骤S2中,读写分离分发器通过主节点连接发送SQL语句到数据库主节点服务器,数据库主节点在执行完SQL语句后将结果返回客户端;读写分离分发器通过从节点连接发送SQL语句到数据库从节点服务器,数据库从节点在执行完SQL语句后将结果返回客户端;...

【专利技术属性】
技术研发人员:李勇马骅梁继良张文江王亚辉冯国瑜孙家彦
申请(专利权)人:北京优炫软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1