[发明专利]一种基于数据库集群的读写分离处理方法及系统在审
| 申请号: | 202211517315.4 | 申请日: | 2022-11-30 |
| 公开(公告)号: | CN115794948A | 公开(公告)日: | 2023-03-14 |
| 发明(设计)人: | 钟小燕;叶智伟;廖少波;邓龙亮 | 申请(专利权)人: | 天翼云科技有限公司 |
| 主分类号: | G06F16/27 | 分类号: | G06F16/27;G06F16/242 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 100010 北京市东城区青*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 数据库 集群 读写 分离 处理 方法 系统 | ||
本发明公开了一种基于数据库集群的读写分离处理方法及系统,涉及数据库技术领域。该基于数据库集群的读写分离处理方法,包括以一定的时间间隔采集主从节点的同步状态;对应用SQL语句进行语法解析,判断语句是否为写请求;将写请求发送到主节点,处理主节点发送的经过改造的ReadyForQuery消息。实时采集主从库最新应用的LSN位置,通过扩展ReadyForQuery消息的方式实时获取的语句执行后的LSN位置,读请求只发向已应用了上一个写请求的节点,避免发送到未同步上一个事务状态的从节点,充分的利用了从节点的数据库资源,提升数据库集群性能及稳定性,用户可透明使用数据库集群读写分离的功能。
技术领域
本发明涉及数据库技术领域,具体为一种基于数据库集群的读写分离处理方法及系统。
背景技术
PostgreSQL是世界上最先进的,开放源代码的客户/服务器关系型数据库管理系统(RDBMS),随着PostgreSQL的功能越来越强大,已经被应用到生活中的各种领域,WAL(Write-Ahead Logging)预写日志系统是一种数据库中高效的日志算法,采用追加写的方式,高效的将用户的修改操作记录到日志文件。被广泛应用到数据库的流复制,逻辑复制,数据库故障恢复等场景,LSN(Log Sequence Number)日志序列号,这是WAL日志的唯一的全局标识。如果事务语句对应的LSN在从库重放并应用,那么说明该事务在主从库的状态是一致的。
数据库读写分离的基本工作原理是通过代理装置对应用SQL语句进行语法解析,判断语句是读请求还是写请求。将写请求发送到主库执行,读请求则自动转发到从库执行,目前市面上常见的数据库读写分离方案,仅具备将读请求转移到从库处理的能力,以此来分担主库的压力。如果主从延迟较大的情况下,将读请求发送到从库处理,从库的查询结果可能会跟主库的查询结果存在较大的偏差,无法满足用户的实时性要求。
发明内容
针对现有技术的不足,本发明提供了一种基于数据库集群的读写分离处理方法,解决了主从延迟较大的情况下,将读请求发送到从库处理,从库的查询结果可能会跟主库的查询结果存在较大的偏差,无法满足用户的实时性要求的问题。
为实现以上目的,本发明通过以下技术方案予以实现:一种基于数据库集群的读写分离处理方法,包括以下步骤:
S1、以一定的时间间隔采集主从节点的同步状态;
S2、对应用SQL语句进行语法解析,判断语句是否为写请求;
S3、将写请求发送到主节点,处理主节点发送的经过改造的ReadyForQuery消息,并保存最新写请求的LSN位置;
S4、接收下一个写请求之前,将读请求发送到应用了S2中LSN位置的任意从节点。
进一步地,所述S1中的时间间隔为1ms,通过定时器时间定时。
进一步地,所述S1中使用druid解析器将SQL语句区分为写请求或读请求。
进一步地,所述S3中对ReadyForQuery消息的改造具体为添加一个长度为Int64的扩展字段标识LSN位置。
进一步地,所述对改造的ReadyForQuery消息的处理过程具体包括以下步骤:
接收主节点发送的改造的ReadyForQuery消息;
解析ReadyForQuery消息的扩展字段;
保存最新写请求的LSN位置。
进一步地,所述对改造的ReadyForQuery消息的处理过程还包括保存最新写请求的LSN位置后去掉ReadyForQuery消息的扩展字段后再发送给客户端。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天翼云科技有限公司,未经天翼云科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211517315.4/2.html,转载请声明来源钻瓜专利网。





