CN113961592A - 基于主从数据库的数据查询方法、装置、设备及存储介质 - Google Patents

基于主从数据库的数据查询方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113961592A
CN113961592A CN202111121700.2A CN202111121700A CN113961592A CN 113961592 A CN113961592 A CN 113961592A CN 202111121700 A CN202111121700 A CN 202111121700A CN 113961592 A CN113961592 A CN 113961592A
Authority
CN
China
Prior art keywords
database
slave
difference value
master
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111121700.2A
Other languages
English (en)
Inventor
韩硕
谢萍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Telecom Corp Ltd
Original Assignee
China Telecom Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Telecom Corp Ltd filed Critical China Telecom Corp Ltd
Priority to CN202111121700.2A priority Critical patent/CN113961592A/zh
Publication of CN113961592A publication Critical patent/CN113961592A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Abstract

本发明提供了基于主从数据库的数据查询方法、装置、设备及存储介质,该方法包括:接收服务器发送的查询请求;根据查询请求,确定待查询表名;自映射表中查找待查询表名的最大第一标识差值,映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,第一标识差值用于标识主数据库的数据更新操作,表名为主数据库的数据更新操作中所操作的表名;查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值;根据第二标识差值以及最大第一标识差值的大小,确定查询请求的目标数据库。本发明避免由于数据同步时间差导致数据获取存在误差的情况。

Description

基于主从数据库的数据查询方法、装置、设备及存储介质
技术领域
本发明涉及计算机数据同步领域,具体地说,涉及基于主从数据库的 数据查询方法、装置、设备及存储介质。
背景技术
数据主从复制时难免会有时间差:主库一边写入数据,从库一边监听 并复制主库的数据,从严格意义上讲,是一种异步操作
当一次性写入大批量数据时由于一些网络带宽的瓶颈等因素容易造 成数据积压:主库写入大批量数据时可能会由于执行时间长,从库持续监 听并复制数据,从库数据同步时可能会产生不可忽略的时间差。具体而言, 当采用数据库主从访问的架构模式时,在大批量执行主库数据更新时,从 库事务执行完毕,返回前端执行成功的消息,但因为数据主从库服务器的 网络带宽等原因,导致当前端发起查询数据的请求时,从库可能还没有完 全复制完主库的数据,从而查询出的并不是完整的结果。主从同步实质是 从库监听主库binlog日志文件的增量变化,复制增量到从库的binlog中 从而达到改变从库数据使其达到和主库数据一致的效果。
由此,如何避免由于数据同步时间差导致数据获取存在误差的情况, 是本领域技术人员亟待解决的技术问题。
需要说明的是,上述背景技术部分公开的信息仅用于加强对本发明的 背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术 的信息。
发明内容
针对现有技术中的问题,本发明的目的在于提供基于主从数据库的数 据查询方法、装置、设备及存储介质,克服了现有技术的困难,避免由于 数据同步时间差导致数据获取存在误差的情况。
本发明的实施例提供一种基于主从数据库的数据查询方法,包括:
接收服务器发送的查询请求;
根据所述查询请求,确定待查询表名;
自映射表中查找待查询表名的最大第一标识差值,所述映射表储存主 数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差 值用于标识主数据库的数据更新操作,所述第一标识差值随所述主数据库 的数据更新操作的增加而增加,所述表名为所述主数据库的数据更新操作 中所操作的表名;
查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的 第二标识差值,所述第二标识差值随所述从数据库的数据更新操作的增加 而增加;
根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主 数据库和所述从数据库中确定所述查询请求的目标数据库。
在本发明的一些实施例中,所述映射表通过如下步骤储存主数据库数 据更新时提交至日志中的表名和第一标识差值:
接收所述主数据库完成所述服务器的数据更新请求时,向服务器返回 的数据更新反馈信息;
响应于所述数据更新反馈信息,自所述主数据库的日志中,获取本次 数据更新操作提交的表名和第一标识差值;
储存所获取的表名和第一标识差值。
在本发明的一些实施例中,所述从数据库的数量为多个,所述根据所 述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所 述从数据库中确定所述查询请求的目标数据库包括:
根据所述第二标识差值以及所述最大第一标识差值的大小,确定各所 述从数据库是否完成所述待查询表名的同步更新;
根据完成所述待查询表名的同步更新的从数据库的数量,自所述主数 据库和所述从数据库中确定所述查询请求的目标数据库,
其中,当所述从数据库的第二标识差值大于等于所述最大第一标识差 值时,该从数据库完成所述待查询表名的同步更新。
在本发明的一些实施例中,所述根据完成所述待查询表名的同步更新 的从数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求 的目标数据库包括:
响应于完成所述待查询表名的同步更新的从数据库的数量为所述从 数据库的总量,根据负载均衡算法,自多个所述从数据库中选择目标数据 库。
在本发明的一些实施例中,所述根据完成所述待查询表名的同步更新 的从数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求 的目标数据库包括:
响应于完成所述待查询表名的同步更新的从数据库的数量小于所述 从数据库的总量且大于零,根据负载均衡算法,自多个完成所述待查询表 名的同步更新的从数据库中选择目标数据库。
在本发明的一些实施例中,所述根据完成所述待查询表名的同步更新 的从数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求 的目标数据库包括:
响应于完成所述待查询表名的同步更新的从数据库的数量为零,将所 述主数据库确定为目标数据库。
在本发明的一些实施例中,所述根据所述第二标识差值以及所述最大 第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请 求的目标数据库还包括:
响应于完成所述待查询表名的同步更新的从数据库的数量为所述从 数据库的总量,自所述映射表中删除含有所述待查询表名,且第一标识差 值小于等于所述最大第一标识差值的数据记录,
其中,当未在所述映射表中查询到所述待查询表名时,指示完成所述 待查询表名的同步更新的从数据库的数量为所述从数据库的总量。
根据本发明的又一方面,还提供一种基于主从数据库的数据查询装 置,包括:
接收模块,配置成接收服务器发送的查询请求;
第一确定模块,配置成根据所述查询请求,确定待查询表名;
第一查找模块,配置成自映射表中查找待查询表名的最大第一标识差 值,所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识 差值,所述第一标识差值用于标识主数据库的数据更新操作,所述第一标 识差值随所述主数据库的数据更新操作的增加而增加,所述表名为所述主 数据库的数据更新操作中所操作的表名;
第二查找模块,配置成查找待查询表名在从数据库的日志中,最新一 次数据更新操作对应的第二标识差值,所述第二标识差值随所述从数据库 的数据更新操作的增加而增加;
第二确定模块,配置成根据所述第二标识差值以及所述最大第一标识 差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标 数据库。
根据本发明的又一方面,还提供一种基于主从数据库的数据查询处理 设备,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行如上所述基 于主从数据库的数据查询方法的步骤。
本发明的实施例还提供一种计算机可读存储介质,用于存储程序,所 述程序被执行时实现上述基于主从数据库的数据查询方法的步骤。
相比现有技术,本发明的目的在于:
通过自映射表中查找待查询表名的最大第一标识差值,查找待查询表 名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,由 于所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识 差值,所述第一标识差值用于标识主数据库的数据更新操作,所述表名为 所述主数据库的数据更新操作中所操作的表名,且所述第一标识差值随所 述主数据库的数据更新操作的增加而增加,所述第二标识差值随所述从数 据库的数据更新操作的增加而增加,从而可以根据所述第二标识差值以及 所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所 述查询请求的目标数据库,以在进行查询前,能够将已完成同步的数据库 作为目标数据库,避免获取的数据不准确/不完整。进一步地,本发明通 过从主数据的日志直接获取修改操作的表名,从而使得查询比对的对象更 为合适和准确;当服务器进行查询时,才从从数据库中获取第二标识差值,避免了持续心跳监听造成的资源损耗。本发明所提供的查询方式更为简 便,且适用于主从数据库的同步中。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的 其它特征、目的和优点将会变得更明显。
图1是本发明的基于主从数据库的数据查询方法的一种实施例的流 程图。
图2是本发明的基于主从数据库的数据查询方法的另一种实施例的 流程图。
图3是本发明的主从数据库的数据同步的流程图。
图4是本发明的更新网关映射表的流程图。
图5是本发明的基于主从数据库的数据查询方法的再一种实施例的 流程图。
图6是本发明的基于主从数据库的数据查询装置的一种实施例的模 块图。
图7是本发明的基于主从数据库的数据查询装置的另一种实施例的 模块图。
图8是本发明的基于主从数据库的数据查询设备的结构示意图。
图9是本发明一实施例的计算机可读存储介质的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能 够以多种形式实施,且不应被理解为限于在此阐述的实施方式。相反,提 供这些实施方式使得本发明将全面和完整,并将示例实施方式的构思全面 地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的结 构,因而将省略对它们的重复描述。
参见图1,图1是本发明的基于主从数据库的数据查询方法的一种实 施例的流程图。本发明的实施例提供一种基于主从数据库的数据查询方 法,包括以下步骤:
步骤S110:接收服务器发送的查询请求。
步骤S120:根据所述查询请求,确定待查询表名。
具体而言,所述查询请求可以包含待查询表名或者指示待查询表名的 信息。
步骤S130:自映射表中查找待查询表名的最大第一标识差值,所述 映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所 述第一标识差值用于标识主数据库的数据更新操作,所述第一标识差值随 所述主数据库的数据更新操作的增加而增加,所述表名为所述主数据库的 数据更新操作中所操作的表名。
具体而言,映射表可以响应于主数据库完成具体事务/数据更新操作 时,对主数据库的日志(binlog)进行分析,从而获取对应的表名和第一 标识差值。第一标识差值为当前第一标识值与第一标识初始值的差值。第 一标识初始值为主数据库的唯一标识值。
步骤S140:查找待查询表名在从数据库的日志中,最新一次数据更 新操作对应的第二标识差值,所述第二标识差值随所述从数据库的数据更 新操作的增加而增加。
具体而言,第二标识差值为当前第二标识值与第二标识初始值的差 值。第二标识初始值为从数据库的唯一标识值。所述第二标识差值用于标 识从数据库的数据更新操作。其与第一标识差值的作用一致。从数据库的 日志为从数据库的binlog。具体而言,在执行步骤S140之前,从数据库 需开启binlog记录功能。当从数据库与主数据库同步时,从数据库的各 表名和第二标识差值的对应关系应与主数据库的表名和第一标识差值的 对应关系一致。
步骤S150:根据所述第二标识差值以及所述最大第一标识差值的大 小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库。
具体而言,正是由于,当从数据库与主数据库同步时,从数据库的各 表名和第二标识差值的对应关系应与主数据库的表名和第一标识差值的 对应关系一致,因此,可以通过第二标识差值和最大第一标识差值的大小 比较,来确定从数据库是否已完成同步更新。以此可以根据从数据库是否 已完成同步更新,自所述主数据库和所述从数据库中确定所述查询请求的 目标数据库。
本发明通过自映射表中查找待查询表名的最大第一标识差值,查找待 查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差 值,由于所述映射表储存主数据库数据更新时提交至日志中的表名和第一 标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述表 名为所述主数据库的数据更新操作中所操作的表名,且所述第一标识差值 随所述主数据库的数据更新操作的增加而增加,所述第二标识差值随所述 从数据库的数据更新操作的增加而增加,从而可以根据所述第二标识差值 以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确 定所述查询请求的目标数据库,以在进行查询前,能够将已完成同步的数 据库作为目标数据库,避免获取的数据不准确/不完整。进一步地,本发 明通过从主数据的日志直接获取修改操作的表名,从而使得查询比对的对 象更为合适和准确;当服务器进行查询时,才从从数据库中获取第二标识差值,避免了持续心跳监听造成的资源损耗。本发明所提供的查询方式更 为简便,且适用于主从数据库的同步中。
具体而言,每次重新建立主从数据库同步关系时,主从数据库的标识 初始值重置(当数据库出问题修复后一般会重新建立一次主从库同步关 系)。
图2是本发明的基于主从数据库的数据查询方法的另一种实施例的 流程图。具体而言,图2所示的步骤可以应用于服务器和数据库之间的网 关中。该网关可以维护映射表,记录每一步数据变更提交操作的唯一标识 (第一标识差值),所操作的表名,以及各从数据库是否已完成同步的标 识。
如图2所示,该基于主从数据库的数据查询方法,包括:
步骤S201:接收所述主数据库完成所述服务器的数据更新请求时, 向服务器返回的数据更新反馈信息。
步骤S202:响应于所述数据更新反馈信息,自所述主数据库的日志 中,获取本次数据更新操作提交的表名和第一标识差值。
具体而言,服务器发送数据更新请求时,主数据库更新数据完成时通 知服务器操作完成,网关拦截并从主数据库中分析该次提交时commit(命 令)对应的xid差值(第一标识差值)的值,以及从主数据库的table map (表地图)映射中得到所操作的表名。对于数据库的binlog文件,每一 步数据提交操作,binlog都会记录一些重要信息:
CENTOS1 1504 Anonymous 1 SET@@SESSION.GTID_NEXT=’ANONOYMOUS’
CENTOS1 1583 Query 1 BEGIN
CENTOS1 1656 Table_map 1 Table_id:97(hw.test2)
CENTOS1 1717 Write_row 1 Table_id:97flag:STMT_END_F
CENTOS1 1764 Xid 1 COMMIT/*xid=42838/
上表为一步提交操作所记录的信息示例,第三列是每一种信息记录名 称,第二列和第五列分别为每一种信息的记录的初始位移和末位移 (log_pos),最后一列为详请。从中可以得到,在操作完成提交时会记 录一个xid,示例中的/*xid=4283*/,可以得到此次操作xid为4283,xid 在数据库日志中是唯一值,且随着日志的增长而增加,例如下一步操作数 据一次性commit10条数据,则下一次COMMIT对应的xid会变为4293。 Table map中记录数据库服务器对于每一张业务表的id和表名的映射。 所以,从Table map中可以得知此次操作更新的表是hw中的test2表。
步骤S203:储存所获取的表名和第一标识差值。也就是xid与xid 初始值的差值。
具体而言,binlog是数据库层产生。在一个10万修改的大事务的实 施例中,其在提交前是向redo log(物理日志)中顺序记录的;而binlog 可以是直到事务提交前,一次性写入的。
步骤S210:接收服务器发送的查询请求。
步骤S220:根据所述查询请求,确定待查询表名。
步骤S230:自映射表中查找待查询表名的最大第一标识差值,所述 映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所 述第一标识差值用于标识主数据库的数据更新操作,所述第一标识差值随 所述主数据库的数据更新操作的增加而增加,所述表名为所述主数据库的 数据更新操作中所操作的表名。
步骤S240:查找待查询表名在从数据库的日志中,最新一次数据更 新操作对应的第二标识差值,所述第二标识差值随所述从数据库的数据更 新操作的增加而增加。
步骤S251:根据所述第二标识差值以及所述最大第一标识差值的大 小,确定各所述从数据库是否完成所述待查询表名的同步更新。
具体而言,步骤S230查询出的最大第一标识差值为主数据库最后一 次完成该表数据操作提交后的第一标识差值,从数据库如果还未从主数据 库复制完该表对应的操作日志,则从数据库最新的COMMIT操作的第二 标识差值肯定比该最大第一标识差值小。当从数据库同步完成时最新的第 二标识差值会与所查询出的这个最大第一标识差值相等,但从数据库是持 续监听从主数据库日志文件并复制增量的,如果在查询从数据库之前,主数据库后续还有对其他表的数据操作,那么从数据库会继续监听并复制, 这样从数据库的最新的第二标识差值就会大于所查询出的最大第一标识 差值,所以判断从数据库对于查询表的记录是否已完成与主数据库同步, 就是判断从库的最新第二标识差值是否大于等于所查询出的最大第一标 识差值,若是则为已完成数据同步。
步骤S252:根据完成所述待查询表名的同步更新的从数据库的数量, 自所述主数据库和所述从数据库中确定所述查询请求的目标数据库,
其中,当所述从数据库的第二标识差值大于等于所述最大第一标识差 值时,该从数据库完成所述待查询表名的同步更新。
步骤S252包括:
步骤S2521:响应于完成所述待查询表名的同步更新的从数据库的数 量为所述从数据库的总量,自所述映射表中删除含有所述待查询表名,且 第一标识差值小于等于所述最大第一标识差值的数据记录,
其中,当未在所述映射表中查询到所述待查询表名时,指示完成所述 待查询表名的同步更新的从数据库的数量为所述从数据库的总量。
具体而言,步骤S2521可以通过更新映射表的从库同步标识字段。 当所有从库都完成了数据同步,则网关删除映射表中含有该表名且第一标 识差值值小于等于该最大第一标识差值的所有记录。
步骤S2522:响应于完成所述待查询表名的同步更新的从数据库的数 量为所述从数据库的总量,根据负载均衡算法,自多个所述从数据库中选 择目标数据库。
步骤S2523:响应于完成所述待查询表名的同步更新的从数据库的数 量小于所述从数据库的总量且大于零,根据负载均衡算法,自多个完成所 述待查询表名的同步更新的从数据库中选择目标数据库。
步骤S2524:响应于完成所述待查询表名的同步更新的从数据库的数 量为零,将所述主数据库确定为目标数据库。
本专利提出的在数据查询时网关拦截查询的表名,从网关映射表查询 已记录的对应表名的最大的xid差值,同时对比从库binlog中已存在的最 新COMMIT的xid值与xid初始值的差值,可判断出可以从哪个库获取查 询结果能够避免由于从库复制的延迟造成的主从库数据不一致的情况。
由此,本申请从主库binlog直接获取修改操作的表名,更为合适和 准确。相较于判断标的为binlog的位移偏量差值,本申请中当服务器进 行查询时网关才从从库中获取计数器的值,避免了持续心跳监听造成的资 源损耗。但数据库中,数据库重启,数据备份时刷新日志,binlog文件大 小达到设定阈值时都会引发binlog文件变更,也就是生成另一个新的 binlog文件继续记录,当新binlog文件生成时,位移偏量都会重新置位从 头开始,而且新文件都会有一个文件头产生,记录对该文件的一些描述, 这些描述会产生一部分位移偏量,会对使用为偏量差值的方案中提到的偏 移量差值计算产生干扰。而且本申请中也提到了在每一次数据提交时 binlog会记录多个不同的位移偏量,这也增加了对比专利中计算位移偏量 差值的难度。因此本申请中提到的方法更为简便,合适。
图3是本发明的主从数据库的数据同步的流程图。
步骤S301:主数据库310完成数据操作后,将操作写入主数据库310 的binlog311。
步骤S302:从数据库320连接主数据库310。
步骤S303:主数据库的binlog311向从数据库320推送binlog数据。
步骤S304:从数据库320将获得binlog数据写入中继日志322。
步骤S305:从数据库320自中继日志322读取事件并执行。
步骤S305:从数据库320将操作记录到从数据库的binlog321中。
由此可知,当从数据库写完本地binlog后,其自身已完成数据同步。
图4是本发明的更新网关映射表的流程图。图4共示出如下步骤:
步骤S410:服务器向主数据库发送写数据请求。
步骤S420:所述主数据库完成所述服务器的写数据请求时,向服务 器反馈信息。
步骤S430:网关拦截并分析主数据库binlog,从而获取主数据库提 交数据时操作的表名以及xid差值(第一标识差值)。
步骤S440:网关将xid差值和表名储存到映射表中。
由此,实现写数据的过程。
图5是本发明的基于主从数据库的数据查询方法的再一种实施例的 流程图。
步骤S501:服务器发送的查询请求。
步骤S502:往往管拦截查询请求,并根据所述查询请求,确定待查 询表名。
步骤S503:网关自映射表中查找待查询表名的最大第一标识差值。
步骤S504:网关从各从数据库的binlog中查找待查询表名最新一次 数据更新操作对应的第二标识差值。
步骤S505:判断第二标识差值是否大于最大第一标识差值。
若步骤S505判断为是,则执行步骤S507:网关判断该从数据库完 成对该表的数据同步。
步骤S508:更新从数据库的同步标识字段为已同步完成。
若步骤S505判断为否,则质心各班组后S510:网关判断该从数据 库未完成对该表的数据同步。
步骤S511:更新从库的同步标识字段为未完成。
当对所有从库执行完上述步骤后,执行步骤S509:判断对应最大第 一标识差值的各从库是否都已完成同步。
若步骤S509判断为是,则执行步骤S512网关删除表名字段为该表 名,且第一标识差值小于等于最大第一标识差值的所有记录。
步骤S509判断为否,或者步骤S512之后,执行步骤S513:网关 根据同步标识和记录内容判断是否所有从库皆已完成同步。
若步骤S513判断为是,则执行步骤S514:网关根据负载均衡算法 从已完成同步的从库中选择目标库。
若步骤S513判断为否,则执行步骤S515:判断是否有从库完成同 步。
若步骤S515判断为是,则执行步骤S516:网关根据负载均衡算法 从已完成同步的从库中选择目标库。
若步骤S515判断为否,则执行步骤S517:将主库作为目标库。
由此,本发明能够智能分析主从库对应的提交标记对应的xid差值, 提取出主库提交数据操作的表名与xid差值关联记录网关映射表,当读取 数据操作时网关自动比对实时的从库日志中最新提交操作的xid差值与网 关映射表中相应的xid差值的大小来判断哪个从库已完成数据同步从而选 择从合适的库读取数据。
以上仅仅是示意性地描述本发明的具体实现方式,本发明并非也以此 为限制,步骤的拆分、合并、执行顺序的变化、模块的拆分、合并、信息 传输的变化皆在本发明的保护范围之内。
图6是本发明的基于主从数据库的数据查询装置的一种实施例的模 块示意图。本发明的基于主从数据库的数据查询装置600,如图6所示, 包括但不限于:接收模块610、第一确定模块620、第一查找模块630、 第二查找模块640以及第二确定模块650。
接收模块610配置成接收服务器发送的查询请求;
第一确定模块620配置成根据所述查询请求,确定待查询表名;
第一查找模块630配置成自映射表中查找待查询表名的最大第一标 识差值,所述映射表储存主数据库数据更新时提交至日志中的表名和第一 标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述第 一标识差值随所述主数据库的数据更新操作的增加而增加,所述表名为所 述主数据库的数据更新操作中所操作的表名;
第二查找模块640配置成查找待查询表名在从数据库的日志中,最 新一次数据更新操作对应的第二标识差值,所述第二标识差值随所述从数 据库的数据更新操作的增加而增加;
第二确定模块650配置成根据所述第二标识差值以及所述最大第一 标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的 目标数据库。
上述模块的实现原理参见基于主从数据库的数据查询方法中的相关 介绍,此处不再赘述。
本发明的基于主从数据库的数据查询装置通过自映射表中查找待查 询表名的最大第一标识差值,查找待查询表名在从数据库的日志中,最新 一次数据更新操作对应的第二标识差值,由于所述映射表储存主数据库数 据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标 识主数据库的数据更新操作,所述表名为所述主数据库的数据更新操作中 所操作的表名,且所述第一标识差值随所述主数据库的数据更新操作的增 加而增加,所述第二标识差值随所述从数据库的数据更新操作的增加而增 加,从而可以根据所述第二标识差值以及所述最大第一标识差值的大小, 自所述主数据库和所述从数据库中确定所述查询请求的目标数据库,以在 进行查询前,能够将已完成同步的数据库作为目标数据库,避免获取的数 据不准确/不完整。进一步地,本发明通过从主数据的日志直接获取修改 操作的表名,从而使得查询比对的对象更为合适和准确;当服务器进行查询时,才从从数据库中获取第二标识差值,避免了持续心跳监听造成的资 源损耗。本发明所提供的查询方式更为简便,且适用于主从数据库的同步 中。
图7是本发明的基于主从数据库的数据查询装置的另一种实施例的 模块示意图。本发明的基于主从数据库的数据查询装置700包括但不限 于:第一接收模块701、第一获取模块702、储存模块703、第二接收模 块710、第一确定模块720、第一查找模块730、第二查找模块740以及 第二确定模块750。
第一接收模块701,配置成接收所述主数据库完成所述服务器的数据 更新请求时,向服务器返回的数据更新反馈信息;
第一获取模块702,配置成响应于所述数据更新反馈信息,自所述主 数据库的日志中,获取本次数据更新操作提交的表名和第一标识差值;
储存模块703,配置成储存所获取的表名和第一标识差值
第二接收模块710,配置成接收服务器发送的查询请求;
第一确定模块720,配置成根据所述查询请求,确定待查询表名;
第一查找模块730,配置成自映射表中查找待查询表名的最大第一标 识差值,所述映射表储存主数据库数据更新时提交至日志中的表名和第一 标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述第 一标识差值随所述主数据库的数据更新操作的增加而增加,所述表名为所 述主数据库的数据更新操作中所操作的表名;
第二查找模块740,配置成查找待查询表名在从数据库的日志中,最 新一次数据更新操作对应的第二标识差值,所述第二标识差值随所述从数 据库的数据更新操作的增加而增加;
第二确定模块750配置成根据所述第二标识差值以及所述最大第一 标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的 目标数据库。
第二确定模块750包括第三确定模块751和第四确定模块752。
第三确定模块751,配置成根据所述第二标识差值以及所述最大第一 标识差值的大小,确定各所述从数据库是否完成所述待查询表名的同步更 新
第四确定模块752,配置成根据完成所述待查询表名的同步更新的从 数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求的目 标数据库,其中,当所述从数据库的第二标识差值大于等于所述最大第一 标识差值时,该从数据库完成所述待查询表名的同步更新。
第四确定模块752包括删除模块7521、第五确定模块7522、第六确 定模块7523、第七确定模块7524。
删除模块7521,配置成响应于完成所述待查询表名的同步更新的从 数据库的数量为所述从数据库的总量,自所述映射表中删除含有所述待查 询表名,且第一标识差值小于等于所述最大第一标识差值的数据记录,
其中,当未在所述映射表中查询到所述待查询表名时,指示完成所述 待查询表名的同步更新的从数据库的数量为所述从数据库的总量。
第五确定模块7522,配置成响应于完成所述待查询表名的同步更新 的从数据库的数量为所述从数据库的总量,根据负载均衡算法,自多个所 述从数据库中选择目标数据库。
第六确定模块7523,配置成响应于完成所述待查询表名的同步更新 的从数据库的数量小于所述从数据库的总量且大于零,根据负载均衡算 法,自多个完成所述待查询表名的同步更新的从数据库中选择目标数据 库。
第七确定模块7524,配置成响应于完成所述待查询表名的同步更新 的从数据库的数量为零,将所述主数据库确定为目标数据库。
上述模块的实现原理参见基于主从数据库的数据查询方法中的相关 介绍,此处不再赘述。
图6和图7仅仅是示意性的分别示出本发明提供的基于主从数据库的 数据查询装置600以及700,在不违背本发明构思的前提下,模块的拆分、 合并、增加都在本发明的保护范围之内。本发明提供的基于主从数据库的 数据查询装置600以及700可以由软件、硬件、固件、插件及他们之间 的任意组合来实现,本发明并非以此为限。
本发明实施例还提供一种基于主从数据库的数据查询处理设备,包括 处理器。存储器,其中存储有处理器的可执行指令。其中,处理器配置为 经由执行可执行指令来执行的基于主从数据库的数据查询方法的步骤。
如上所示,该实施例本发明的基于主从数据库的数据查询处理设备通 过自映射表中查找待查询表名的最大第一标识差值,查找待查询表名在从 数据库的日志中,最新一次数据更新操作对应的第二标识差值,由于所述 映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所 述第一标识差值用于标识主数据库的数据更新操作,所述表名为所述主数 据库的数据更新操作中所操作的表名,且所述第一标识差值随所述主数据 库的数据更新操作的增加而增加,所述第二标识差值随所述从数据库的数 据更新操作的增加而增加,从而可以根据所述第二标识差值以及所述最大 第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请 求的目标数据库,以在进行查询前,能够将已完成同步的数据库作为目标 数据库,避免获取的数据不准确/不完整。进一步地,本发明通过从主数 据的日志直接获取修改操作的表名,从而使得查询比对的对象更为合适和准确;当服务器进行查询时,才从从数据库中获取第二标识差值,避免了 持续心跳监听造成的资源损耗。本发明所提供的查询方式更为简便,且适 用于主从数据库的同步中。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系 统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式, 即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等), 或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块” 或“平台”。
图8是本发明的基于主从数据库的数据查询处理设备的结构示意图。 下面参照图8来描述根据本发明的这种实施方式的电子设备800。图8显 示的电子设备800仅仅是一个示例,不应对本发明实施例的功能和使用 范围带来任何限制。
如图8所示,电子设备800以通用计算设备的形式表现。电子设备 800的组件可以包括但不限于:至少一个处理单元810、至少一个存储单 元820、连接不同平台组件(包括存储单元820和处理单元810)的总线 830、显示单元840等。
其中,存储单元存储有程序代码,程序代码可以被处理单元810执 行,使得处理单元810执行本说明书上述基于主从数据库的数据查询方 法部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元 810可以执行如图1中所示的步骤。
存储单元820可以包括易失性存储单元形式的可读介质,例如随机 存取存储单元(RAM)8201和/或高速缓存存储单元8202,还可以进一 步包括只读存储单元(ROM)8203。
存储单元820还可以包括具有一组(至少一个)程序模块8205的程 序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一 个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个 或某种组合中可能包括网络环境的实现。
总线830可以为表示几类总线结构中的一种或多种,包括存储单元 总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用 多种总线结构中的任意总线结构的局域总线。
电子设备800也可以与一个或多个外部设备8001(例如键盘、指向 设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备 800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它 计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这 种通信可以通过输入/输出(I/O)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(LAN),广 域网(WAN)和/或公共网络,例如因特网)通信。网络适配器860可以 通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未 示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限 于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系 统、磁带驱动器以及数据备份存储平台等。
本发明实施例还提供一种计算机可读存储介质,用于存储程序,程序 被执行时实现的基于主从数据库的数据查询方法的步骤。在一些可能的实 施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括 程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执 行本说明书上述基于主从数据库的数据查询方法部分中描述的根据本发 明各种示例性实施方式的步骤。
如上所示,该实施例的用以执行基于主从数据库的数据查询的计算机 可读存储介质能够通过自映射表中查找待查询表名的最大第一标识差值, 查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二 标识差值,由于所述映射表储存主数据库数据更新时提交至日志中的表名 和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作, 所述表名为所述主数据库的数据更新操作中所操作的表名,且所述第一标 识差值随所述主数据库的数据更新操作的增加而增加,所述第二标识差值 随所述从数据库的数据更新操作的增加而增加,从而可以根据所述第二标 识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据 库中确定所述查询请求的目标数据库,以在进行查询前,能够将已完成同 步的数据库作为目标数据库,避免获取的数据不准确/不完整。进一步地, 本发明通过从主数据的日志直接获取修改操作的表名,从而使得查询比对 的对象更为合适和准确;当服务器进行查询时,才从从数据库中获取第二 标识差值,避免了持续心跳监听造成的资源损耗。本发明所提供的查询方 式更为简便,且适用于主从数据库的同步中。
图9是本发明的计算机可读存储介质的结构示意图。参考图9所示, 描述了根据本发明的实施方式的用于实现上述方法的程序产品900,其可 以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在 终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在 本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序 可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是 可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、 磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的 组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或 多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、 便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者 上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的 数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种 形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存 储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发 送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合 使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传 输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的 组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明 操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如 Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类 似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地 在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上 部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。 在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络, 包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者, 可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连 接)。
综上,本申请通过自映射表中查找待查询表名的最大第一标识差值, 查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二 标识差值,由于所述映射表储存主数据库数据更新时提交至日志中的表名 和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作, 所述表名为所述主数据库的数据更新操作中所操作的表名,且所述第一标 识差值随所述主数据库的数据更新操作的增加而增加,所述第二标识差值 随所述从数据库的数据更新操作的增加而增加,从而可以根据所述第二标 识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据 库中确定所述查询请求的目标数据库,以在进行查询前,能够将已完成同 步的数据库作为目标数据库,避免获取的数据不准确/不完整。进一步地, 本发明通过从主数据的日志直接获取修改操作的表名,从而使得查询比对 的对象更为合适和准确;当服务器进行查询时,才从从数据库中获取第二标识差值,避免了持续心跳监听造成的资源损耗。本发明所提供的查询方 式更为简便,且适用于主从数据库的同步中。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说 明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术 领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若 干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (10)

1.一种基于主从数据库的数据查询方法,其特征在于,包括:
接收服务器发送的查询请求;
根据所述查询请求,确定待查询表名;
自映射表中查找待查询表名的最大第一标识差值,所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述表名为所述主数据库的数据更新操作中所操作的表名;
查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,所述第二标识差值随所述从数据库的数据更新操作的增加而增加;
根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库。
2.根据权利要求1所述的基于主从数据库的数据查询方法,其特征在于,所述映射表通过如下步骤储存主数据库数据更新时提交至日志中的表名和第一标识差值:
接收所述主数据库完成所述服务器的数据更新请求时,向服务器返回的数据更新反馈信息;
响应于所述数据更新反馈信息,自所述主数据库的日志中,获取本次数据更新操作提交的表名和第一标识差值;
储存所获取的表名和第一标识差值。
3.根据权利要求1所述的基于主从数据库的数据查询方法,其特征在于,所述从数据库的数量为多个,所述根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库包括:
根据所述第二标识差值以及所述最大第一标识差值的大小,确定各所述从数据库是否完成所述待查询表名的同步更新;
根据完成所述待查询表名的同步更新的从数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库,
其中,当所述从数据库的第二标识差值大于等于所述最大第一标识差值时,该从数据库完成所述待查询表名的同步更新。
4.根据权利要求3所述的基于主从数据库的数据查询方法,其特征在于,所述根据完成所述待查询表名的同步更新的从数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库包括:
响应于完成所述待查询表名的同步更新的从数据库的数量为所述从数据库的总量,根据负载均衡算法,自多个所述从数据库中选择目标数据库。
5.根据权利要求3所述的基于主从数据库的数据查询方法,其特征在于,所述根据完成所述待查询表名的同步更新的从数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库包括:
响应于完成所述待查询表名的同步更新的从数据库的数量小于所述从数据库的总量且大于零,根据负载均衡算法,自多个完成所述待查询表名的同步更新的从数据库中选择目标数据库。
6.根据权利要求3所述的基于主从数据库的数据查询方法,其特征在于,所述根据完成所述待查询表名的同步更新的从数据库的数量,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库包括:
响应于完成所述待查询表名的同步更新的从数据库的数量为零,将所述主数据库确定为目标数据库。
7.根据权利要求3所述的基于主从数据库的数据查询方法,其特征在于,所述根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库还包括:
响应于完成所述待查询表名的同步更新的从数据库的数量为所述从数据库的总量,自所述映射表中删除含有所述待查询表名,且第一标识差值小于等于所述最大第一标识差值的数据记录,
其中,当未在所述映射表中查询到所述待查询表名时,指示完成所述待查询表名的同步更新的从数据库的数量为所述从数据库的总量。
8.一种基于主从数据库的数据查询装置,其特征在于,包括:
接收模块,配置成接收服务器发送的查询请求;
第一确定模块,配置成根据所述查询请求,确定待查询表名;
第一查找模块,配置成自映射表中查找待查询表名的最大第一标识差值,所述映射表储存主数据库数据更新时提交至日志中的表名和第一标识差值,所述第一标识差值用于标识主数据库的数据更新操作,所述第一标识差值随所述主数据库的数据更新操作的增加而增加,所述表名为所述主数据库的数据更新操作中所操作的表名;
第二查找模块,配置成查找待查询表名在从数据库的日志中,最新一次数据更新操作对应的第二标识差值,所述第二标识差值随所述从数据库的数据更新操作的增加而增加;
第二确定模块,配置成根据所述第二标识差值以及所述最大第一标识差值的大小,自所述主数据库和所述从数据库中确定所述查询请求的目标数据库。
9.一种基于主从数据库的数据查询处理设备,其特征在于,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至7任意一项所述基于主从数据库的数据查询方法的步骤。
10.一种计算机可读存储介质,用于存储程序,其特征在于,所述程序被执行时实现权利要求1至7任意一项所述基于主从数据库的数据查询方法的步骤。
CN202111121700.2A 2021-09-24 2021-09-24 基于主从数据库的数据查询方法、装置、设备及存储介质 Pending CN113961592A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111121700.2A CN113961592A (zh) 2021-09-24 2021-09-24 基于主从数据库的数据查询方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111121700.2A CN113961592A (zh) 2021-09-24 2021-09-24 基于主从数据库的数据查询方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN113961592A true CN113961592A (zh) 2022-01-21

Family

ID=79462142

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111121700.2A Pending CN113961592A (zh) 2021-09-24 2021-09-24 基于主从数据库的数据查询方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113961592A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114553895A (zh) * 2022-04-24 2022-05-27 浙江中控技术股份有限公司 一种数据同步方法、系统、存储介质及电子设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114553895A (zh) * 2022-04-24 2022-05-27 浙江中控技术股份有限公司 一种数据同步方法、系统、存储介质及电子设备

Similar Documents

Publication Publication Date Title
CN106874281B (zh) 实现数据库读写分离的方法和装置
WO2016180160A1 (zh) 数据快照的恢复方法和装置
US7873808B2 (en) Method and system for synchronizing direct access storage volumes
US20150347250A1 (en) Database management system for providing partial re-synchronization and partial re-synchronization method of using the same
KR20190044145A (ko) 원격 데이터베이스에 대한 변경사항들의 처리
US20160041885A1 (en) Data Replicating System, Data Replicating Method, Node Device, Management Device and Computer Readable Medium
CN109918229B (zh) 非日志模式的数据库集群副本构建方法及装置
US20080005183A1 (en) Method And Apparatus for Propagating Tables While Preserving Cyclic Foreign Key Relationships
US20160048430A1 (en) Method of operating a shared nothing cluster system
JP5146020B2 (ja) 情報処理装置、リソース同定プログラム、リソース同定方法
CN114661816B (zh) 数据同步方法、装置、电子设备、存储介质
US10095737B2 (en) Information storage system
CN113961592A (zh) 基于主从数据库的数据查询方法、装置、设备及存储介质
JP5106062B2 (ja) ファイル検索方法、ファイル検索装置、検索システム、及び、ファイル検索プログラム
WO2017156855A1 (en) Database systems with re-ordered replicas and methods of accessing and backing up databases
CN111046246B (zh) 标签更新方法及装置、分布式存储系统
CN111767282A (zh) 基于MongoDB的存储系统及数据插入方法和存储介质
US10216590B2 (en) Communication control determination of storing state based on a requested data operation and a schema of a table that stores therein data to be operated by the data operation
US7949632B2 (en) Database-rearranging program, database-rearranging method, and database-rearranging apparatus
CN115080666A (zh) 数据同步方法、系统、电子设备及存储介质
CN110413617B (zh) 一种根据数据量的大小动态调节哈希表组的方法
US20200249876A1 (en) System and method for data storage management
US20050071366A1 (en) Method, apparatus and computer program for retrieving data
JP2005234945A (ja) 同時実行制御方法及び装置
US10866756B2 (en) Control device and computer readable recording medium storing control program

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination