CN117370454A - 数据处理方法 - Google Patents

数据处理方法 Download PDF

Info

Publication number
CN117370454A
CN117370454A CN202311161356.9A CN202311161356A CN117370454A CN 117370454 A CN117370454 A CN 117370454A CN 202311161356 A CN202311161356 A CN 202311161356A CN 117370454 A CN117370454 A CN 117370454A
Authority
CN
China
Prior art keywords
database
log
node
slave
master
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
CN202311161356.9A
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.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology Co 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 Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN202311161356.9A priority Critical patent/CN117370454A/zh
Publication of CN117370454A publication Critical patent/CN117370454A/zh
Pending legal-status Critical Current

Links

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请公开了一种数据处理方法,该方法包括:接收主节点发送的主数据库对应的数据库日志,将数据库日志添加至日志缓存队列中;提取日志缓存队列中当前待同步的数据库日志,得到目标日志,基于目标日志对从数据库进行数据库同步处理;响应于数据库同步处理成功,对目标日志进行持久化存储。即针对一个数据库日志,只有在数据库同步处理后,才对数据库日志进行持久化存储,可以仅执行一次数据写入操作,通过减少读写操作,缩短了数据库同步需要耗费的时间,提高了数据库系统性能。

Description

数据处理方法
技术领域
本申请涉及数据处理技术领域,特别是涉及一种数据处理方法。
背景技术
为了防止数据库中的数据丢失,可以通过将数据写入到多个副本中来保证数据的安全,而多副本中数据的强一致性实现,即同步实现,是一个重要的问题。
在数据库系统中,为了实现强一致性,一般采用主从数据库的架构,在工作过程中,主数据库可以接收客户端发送的请求,并根据该请求生成日志,以及根据该请求对自身的数据库数据进行操作。进一步,主数据库可以对其生成的日志进行持久化处理。另外,主数据库还可以将其生成的日志发送给从数据库。
虽然上述数据库同步方法可以实现强一致性,但是,仍然存在数据库同步效率较低的问题。
发明内容
本申请至少提供一种数据处理方法。
本申请第一方面提供了一种数据处理方法,应用于从数据库对应的从节点,方法包括:接收主节点发送的主数据库对应的数据库日志,将数据库日志添加至日志缓存队列中;提取日志缓存队列中当前待同步的数据库日志,得到目标日志,基于目标日志对从数据库进行数据库同步处理;响应于数据库同步处理成功,对目标日志进行持久化存储。
在一实施例中,主节点发送的数据库日志均对应有全局事务顺序标识;提取日志缓存队列中当前待同步的数据库日志,得到目标日志,包括:按照各个数据库日志对应的全局事务顺序标识,对日志缓存队列中的数据库日志进行排序;从排序后的日志缓存队列中选取出当前待同步的数据库日志,得到目标日志。
在一实施例中,在从排序后的日志缓存队列中选取出当前待同步的数据库日志,得到目标日志之后,方法还包括:获取非易失性存储器中已存储的数据库日志对应的最新全局事务顺序标识,得到第一基准标识;将目标日志对应的全局事务顺序标识作为待同步日志标识;检测第一基准标识和待同步日志标识之间是否相邻;基于目标日志对从数据库进行数据库同步处理,包括:若第一基准标识和待同步日志标识相邻,则基于目标日志对从数据库进行数据库同步处理。
在一实施例中,接收主节点发送的主数据库的数据库日志,将数据库日志添加至日志缓存队列中,包括:获取主节点发送的数据库日志的全局事务顺序标识,得到待添加日志标识;以及获取日志缓存队列中数据库日志对应的最新全局事务顺序标识,得到第二基准标识;检测第二基准标识和待添加日志标识之间是否相邻;若第二基准标识和待添加日志标识相邻,则将主节点发送的数据库日志添加至日志缓存队列中。
在一实施例中,方法还包括:若第二基准标识和待添加日志标识不相邻,则基于第二基准标识生成事务日志追平请求;将事务日志追平请求发送至主节点,以使主节点基于事务日志追平请求中的第二基准标识,向从节点发送主数据库对应的数据库日志。
在一实施例中,方法还包括:获取客户端发送的数据库读请求,检测从节点是否可以执行数据库读请求;若从节点可以执行数据库读请求,则检测日志缓存队列中是否存在数据库日志,若日志缓存队列中不存在数据库日志,则基于数据库读请求对从数据库执行读操作;若从节点不可以执行数据库读请求,则将数据库读请求转发至其它从节点或主节点。
在一实施例中,方法还包括:获取客户端发送的数据库写请求;将数据库写请求转发至主节点,以使主节点执行数据库写请求。
本申请第二方面提供了一种数据处理方法,应用于主数据库对应的主节点,方法包括:向从数据库对应的从节点发送主数据库的数据库日志,以使从节点将数据库日志添加至日志缓存队列中,提取日志缓存队列中当前待同步的数据库日志,得到目标日志,基于目标日志对从数据库进行数据库同步处理,并响应于数据库同步处理成功,对目标日志进行持久化存储。
在一实施例中,主数据库中存储有节点状态表,节点状态表存储有各个从节点对应的最新全局事务顺序标识;向从数据库对应的从节点发送主数据库的数据库日志,包括:从节点状态表中获取各个从节点的最新全局事务顺序标识;基于各个从节点的最新全局事务顺序标识,分别确定各个从节点待发送的数据库日志;分别向各个从节点发送待发送的数据库日志。
在一实施例中,方法还包括:获取客户端或从节点发送的数据库写请求;对主数据库执行数据库写请求,并生成数据库写请求对应的数据库日志;将数据库写请求对应的数据库日志发送给各个从节点。
本申请第三方面提供了一种电子设备,包括存储器和处理器,处理器用于执行存储器中存储的程序指令,以实现上述数据处理方法。
本申请第四方面提供了一种计算机可读存储介质,其上存储有程序指令,程序指令被处理器执行时实现上述数据处理方法。
上述方案,通过接收主节点发送的主数据库对应的数据库日志,将数据库日志添加至日志缓存队列中;提取日志缓存队列中当前待同步的数据库日志,得到目标日志,基于目标日志对从数据库进行数据库同步处理;响应于数据库同步处理成功,对目标日志进行持久化存储。即针对一个数据库日志,只有在数据库同步处理后,才对数据库日志进行持久化存储,可以仅执行一次数据写入操作,通过减少读写操作,缩短了数据库同步需要耗费的时间,提高了数据库系统性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
图1是本申请一个实施例提供的数据处理方法的实施环境的示意图;
图2是本申请一个实施例提供的数据库节点中扩展参数的示意图;
图3是本申请一示例性实施例示出的数据处理方法的流程图;
图4是本申请一示例性实施例示出的数据库节点处理数据处理请求的示意图;
图5是本申请一示例性实施例示出的检测数据库节点的运行状态的流程图;
图6是本申请一示例性实施例示出的新增数据库节点的流程图;
图7是本申请一示例性实施例示出的同步数据库日志的示意图;
图8是本申请的一示例性实施例示出的电子设备的结构示意图;
图9是本申请的一示例性实施例示出的计算机可读存储介质的结构示意图。
具体实施方式
下面结合说明书附图,对本申请实施例的方案进行详细说明。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。
本文中术语“和/或”,仅仅是一种描述关联对象的关联信息,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。此外,本文中的“多”表示两个或者多于两个。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
通常情况下,在具有主数据库和至少两个从数据库的数据库系统中,主数据库可以接收客户端发送的请求,根据该请求对主数据库中的数据进行操作,并根据该请求生成数据库日志。进一步,主数据库可以将生成的数据库日志发送给从数据库。但是,从数据库需要先将数据库日志存储至非易失性存储器中,再对非易失性存储器中的数据库日志进行回放,即根据非易失性存储器中的数据库日志对从数据库进行数据库同步处理,将数据库日志执行后得到的结果存储到从数据库的数据库数据中。
由此可见,现有技术中,从数据库对应的从节点需要在对数据库日志进行存储时,执行一次非易失性存储器的数据写操作,还需要在对数据库日志进行回放时,执行一次非易失性存储器的数据读操作,即针对一个数据库日志,需要至少执行两次输入/输出(Input/Output,IO)操作,这个过程耗费的时间较长,从而导致数据库系统性能较低。
为了解决上述问题,本申请至少提供一种数据处理方法,接下来对本申请的数据处理方法进行详细介绍。
请参考图1,其示出了本申请一个实施例提供的数据处理方法的实施环境的示意图。如图1所示,该实施环境可以包括多个数据库节点。
其中,各个数据库节点中部署的数据库所对应的数据库身份标识(Databasesystem identifier)相同。以PostgreSQL数据库为例进行举例说明,使用initdb命令在任一数据库节点中初始化一个PostgreSQL数据库(DB1),然后其它数据库节点使用pg_basebackup命令克隆DB1,生成其它数据库节点的DB2、DB3等数据库,以确保全部的数据库都有相同的数据库身份标识。
然后,从多个数据库节点中选取出主节点,将其它数据库节点作为从节点。
示例性地,将数据库节点的角色划分为管理者、追随者。例如,采用raft算法从多个数据库节点中选举出主节点,该主节点作为管理者,将主节点中的数据库作为主数据库,除主节点之外的数据库节点作为从节点,从节点作为追随者,将从节点中的数据库作为从数据库。采用raft算法选取主节点,使得当前主节点故障后,不用进行主从切换,直接从剩余正常运行的从节点中重新选取主节点即可,避免切换主设备造成时间浪费。
例如,将图1中的数据库DB1作为主数据库,即数据库DB1对应的数据库节点作为主节点,将数据库DB2和数据库DB3作为从数据库,即数据库DB2和数据库DB3对应的数据库节点作为从节点。
主节点的主数据库可以负责提供正常的数据库操作功能,如数据库的增、删、改等操作功能,同时可以将数据同步到从节点的从数据库中,以保证主数据库和从数据库数据的强一致性。如果主数据库因为故障不能正常使用,则可以采用raft算法在多个从数据库中选举出一个新的主数据库。
示例性地,结合图1,每个数据库节点中均加载有扩展参数PG_CLUSTER。例如,利用shared_preload_libraries加载扩展参数,shared_preload_libraries是PostgreSQL中的配置参数,用于指定在数据库服务器启动过程中应加载到内存中的共享库列表。这些共享库可以包含数据库服务器的附加特性和功能,这些特性和功能在核心PostgreSQL代码中不可用。
请参阅图2,扩展参数PG_CLUSTER包括集群管理模块、SQL处理模块和事务日志模块。
SQL处理模块用于对客户端发送的数据处理请求进行处理。事务日志模块用于进行数据库日志的获取、数据库日志的发送、数据库日志的接收等。集群管理模块用于数据库节点管理,如选举主节点、数据库节点状态获取等。
示例性地,各个数据库节点中还配置有参数cluster_name,cluster_name用于标识数据库节点所属的集群的名称。集群管理模块选举主节点的步骤可以包括:把相同的cluster_name的数据库节点组成同一个逻辑集群,然后通过raft协议选出集群的主节点。
可选地,若集群当前无主节点,则集群仅可以处理读请求,直至集群选举出主节点,可以根据选取的主节点处理写请求,以降低多数据库节点的并发事务之间的相互影响和死锁可能性。
请参阅图3,图3是本申请的一示例性实施例示出的数据处理方法的流程图。该数据处理方法由从节点具体执行。
如图3所示,数据处理方法至少包括步骤S310至步骤S330,详细介绍如下:
步骤S310:接收主节点发送的主数据库对应的数据库日志,将数据库日志添加至日志缓存队列中。
其中,数据库日志记载了主节点中主数据库执行的数据库操作事务所对应的数据,可以根据数据库日志回放这些数据库事务,例如针对主数据库的数据增加事务、数据删除事务、数据修改事务。
主节点产生主数据库对应的数据库日志后,将数据库日志发送给各个从节点。可以是主节点每新增一个数据库日志后,向主节点对应的从节点发送新增的数据库日志;也可以是从节点重新从故障状态进入正常运行状态后,向主节点发送事务日志追平请求,主节点根据事务日志追平请求,将从节点在故障状态阶段内新增的所有数据库日志发送给从节点。
从节点接收到主节点发送的数据库日志后,需要先将数据库日志添加至日志缓存队列中。可选地,为了数据库日志的读取效率,将日志缓存队列存储于易失性存储器中。
其中,易失性存储器的数据存储和读取速度快于非易失性存储器,但是易失性存储器电源关闭后会丢失数据,而非易失性存储器电源关闭后不会丢失数据。易失性存储器包括但不限于随机存取记忆体(Random Access Memory,RAM)、高速缓冲存储器(Cache)等;非易失性存储器包括但不限于机械硬盘(Hard Disk Drive,HDD)、固态硬盘(Solid StateDrive,SSD)等。
步骤S320:提取日志缓存队列中当前待同步的数据库日志,得到目标日志,基于目标日志对从数据库进行数据库同步处理。
对日志缓存队列中的数据库日志数据回放,以实现主数据库和从数据库之间的数据同步。
需要说明的是,从节点接收到的每一条数据库日志都需要以和主节点相同顺序进行回放。例如,主节点在T1时刻执行了数据库事务1,生成了数据库日志1,然后,在T2时刻执行了数据库事务2,生成了数据库日志2,则从节点也需要先对数据库日志1进行回放,然后对数据库日志2进行回放。
因此,从节点按照当前的日志回放顺序,提取日志缓存队列中当前待同步的数据库日志得到目标日志,以对该目标日志进行回放,根据回放结果对从数据库进行数据库同步处理。
步骤S330:响应于数据库同步处理成功,对目标日志进行持久化存储。
若目标日志对应的数据库同步处理成功,则对目标日志进行持久化存储。例如,将目标日志存储至磁盘等非易失性存储器中。
即采用本申请的数据处理方法,针对一个数据库日志,可以仅对非易失性存储器执行一次数据写入操作,通过减少对非易失性存储器的IO操作,缩短了数据库同步需要耗费的时间,提高了数据库系统性能。
接下来对本申请的步骤进行进一步示例性说明:
在一些实施方式中,步骤S310中接收主节点发送的主数据库的数据库日志,将数据库日志添加至日志缓存队列中,包括:获取主节点发送的数据库日志的全局事务顺序标识,得到待添加日志标识;以及获取日志缓存队列中数据库日志对应的最新全局事务顺序标识,得到第二基准标识;检测第二基准标识和待添加日志标识是否相邻;若第二基准标识和待添加日志标识相邻,则将主节点发送的数据库日志添加至日志缓存队列中。
其中,全局事务顺序标识用于标记数据库日志之间的顺序。
为了保证数据库日志顺序的准确性,在将数据库日志添加至日志缓存队列之前,需要检测接收到的数据库日志的全局事务顺序标识是否正确。
第二基准标识的获取步骤可以包括:
若日志缓存队列中含有数据库日志,则获取日志缓存队列中各个数据库日志对应的全局事务顺序标识,从这些全局事务顺序标识中确定出最新全局事务顺序标识,得到第二基准标识。
若日志缓存队列中不含有数据库日志,即日志缓存队列中的数据库日志均已完成数据库同步处理,则将最后一个数据库同步处理对应的数据库日志作为最新全局事务顺序标识,得到第二基准标识。
检测第二基准标识和待添加日志标识是否相邻,若第二基准标识和待添加日志标识相邻,即表明接收到的数据库日志的全局事务顺序标识正确,则将主节点发送的数据库日志添加至日志缓存队列中。
在一些实施方式中,若第二基准标识和待添加日志标识不相邻,则基于第二基准标识生成事务日志追平请求;将事务日志追平请求发送至主节点,以使主节点基于事务日志追平请求中的第二基准标识,向从节点发送主数据库对应的数据库日志。
如果第二基准标识和待添加日志标识不相邻,则表明待添加日志标识对应的数据库日志和第二基准标识对应的数据库日志之间,还存在缺漏的数据库日志。
因此,需要根据第二基准标识生成事务日志追平请求,将事务日志追平请求发送至主节点。主节点根据事务日志追平请求中的第二基准标识,重新向从节点发送相邻的数据库日志。
在一些实施方式中,主节点发送的数据库日志均对应有全局事务顺序标识;步骤S320中提取日志缓存队列中当前待同步的数据库日志,得到目标日志,包括:按照各个数据库日志对应的全局事务顺序标识,对日志缓存队列中的数据库日志进行排序;从排序后的日志缓存队列中选取出当前待同步的数据库日志,得到目标日志。
从节点的日志缓存队列中可能含有多个数据库日志,根据各个数据库日志对应的全局事务顺序标识,对这些数据库日志进行排序,得到排序后的日志缓存队列。
然后,从排序后的日志缓存队列依次选取出顺序靠前的数据库日志作为目标日志。
在一些实施方式中,在从排序后的日志缓存队列中选取出当前待同步的数据库日志,得到目标日志之后,方法还包括:获取非易失性存储器中已存储的数据库日志对应的最新全局事务顺序标识,得到第一基准标识;将目标日志对应的全局事务顺序标识作为待同步日志标识;检测第一基准标识和待同步日志标识是否相邻;基于目标日志对从数据库进行数据库同步处理,包括:若第一基准标识和待同步日志标识相邻,则基于目标日志对从数据库进行数据库同步处理。
获取非易失性存储器中最新存入的数据库日志,将最新存入的数据库日志的全局事务顺序标识,作为第一基准标识。将目标日志对应的全局事务顺序标识作为待同步日志标识。
检测第一基准标识和待同步日志标识之间是否相邻,如果第一基准标识和待同步日志标识相邻,则表明目标日志相对非易失性存储器中已存储的数据库日志的顺序正确。
另外,如果第一基准标识和待同步日志标识顺序不相邻,则表明目标日志相对非易失性存储器中已存储的数据库日志的顺序不正确。若第一基准标识和待同步日志标识表明:目标日志和非易失性存储器中最新存入的数据库日志之间存在日志缺漏,则可以根据第一基准标识和待同步日志标识向主节点发送日志补发请求,以请求主节点补充发送缺漏的数据库日志;若第一基准标识和待同步日志标识表明:目标日志为非易失性存储器中已存入的数据库日志的重复日志,则根据第一基准标识重新从日志缓存队列中选取相邻的目标日志。
根据目标日志对从数据库进行数据库同步处理后,再将目标日志存储至非易失性存储器中。
在一些实施方式中,方法还包括:获取客户端发送的数据处理请求,数据处理请求包括数据库写请求和数据库读请求;处理该数据处理请求。
请参阅图4,图4为本申请一示例性实施例示出的数据库节点处理数据处理请求的示意图,如图4所示:
检测数据处理请求为数据库读请求还是数据库写请求。
针对数据库读请求:若当前节点为从节点,则检测从节点是否可以执行数据库读请求;若可以执行数据库读请求,则检测日志缓存队列中是否存在数据库日志,若日志缓存队列中不存在数据库日志,则基于数据库读请求对从数据库执行读操作;若从节点不可以执行数据库读请求,则将数据库读请求转发至其它从节点或主节点。若当前节点为主节点,则检测主节点是否可以执行数据库读请求;若可以执行数据库读请求,则基于数据库读请求对主数据库执行读操作;若主节点不可以执行数据库读请求,则将数据库读请求转发至其它从节点。
针对数据库写请求:若当前节点为从节点,则直接判断为当前节点不可执行数据库写请求,将数据库写请求转发至主节点,以使主节点执行数据库写请求对应的SQL语句。若当前节点为主节点,则判断为当前节点可以执行数据库写请求,直接执行数据库写请求。
其中,主节点执行数据库写请求后,生成该数据库写请求对应的数据库日志,以及数据库日志对应的全局事务顺序标识。数据库写请求可以是请求对数据库进行数据增加、数据删除和数据修改。
可选地,每个从节点中部署有如图2所示的扩展参数PG_CLUSTER,上述数据处理请求的处理过程可以是从节点对应的扩展参数的SQL处理模块执行的。
在一示例性实施方式中,本申请还提供一种数据处理方法,该数据处理方法由主节点具体执行,包括:向从数据库对应的从节点发送主数据库的数据库日志,以使从节点将数据库日志添加至日志缓存队列中,提取日志缓存队列中当前待同步的数据库日志,得到目标日志,基于目标日志对从数据库进行数据库同步处理,并响应于数据库同步处理成功,对目标日志进行持久化存储。
数据库日志是根据数据库写请求得到的。
获取客户端或从节点发送的数据库写请求,对主数据库执行数据库写请求,并生成数据库写请求对应的数据库日志,然后,将数据库写请求对应的数据库日志发送给各个从节点,实现数据同步。
在一些实施方式中,主数据库中存储有节点状态表,节点状态表存储有各个从节点对应的最新全局事务顺序标识;向从数据库对应的从节点发送主数据库的数据库日志,包括:从节点状态表中获取各个从节点的最新全局事务顺序标识;基于各个从节点的最新全局事务顺序标识,分别确定各个从节点待发送的数据库日志;分别向各个从节点发送待发送的数据库日志。
其中,节点状态表用于存储各个数据库节点的状态参数。状态参数包括但不限于数据库节点的运行状态、数据库日志同步状态等。
例如,如下表1所示,表1为节点状态表的表结构示意:
表1
再参见表2,以表1示出的节点状态表的表结构为例进行举例说明:
SERVER_ID NODE CLUSTER_ROLE ABILITY_ROLE GTID MEMO
101 IP1:12345 F R 210140951023
102 IP2:12345 L R,W 210140951023
103 IP3:12345 F R 210140951023
104 IP4:12345 N N 200140553000 can not connected
表2
其中,节点状态表可以存储于所有数据库节点中,也可以存储于主节点中,本申请对此不进行限定。
主节点从节点状态表中获取各个从节点的最新全局事务顺序标识,根据各个从节点的最新全局事务顺序标识,分别确定各个从节点待发送的数据库日志,以分别向各个从节点发送待发送的数据库日志。
进一步地,节点状态表中还存储有数据库节点的运行状态信息。以及,当前的主节点配置有节点通信参数cluster_node_ips,cluster_node_ips用于存储集群中所有数据库节点的互联网协议(Internet Protocol,IP)地址和端口信息。
请参阅图5,图5为本申请一示例性实施例示出的检测数据库节点的运行状态的流程图。如图5所示,当前的主节点根据cluster_node_ips向各个从节点发送心跳包,若从节点对心跳包没有正常响应,则需要针对该从节点对应的失败次数增1,若从节点对心跳包有正常响应,则对该从节点对应的失败次数清0。判断从节点的失败次数是否大于失败次数阈值N,若大于失败次数阈值N,则更新节点状态表中该从节点的运行状态信息,并取消当前阻塞事务,以结束向该从节点发送心跳包。
例如,主节点向数据库节点104周期性发送心跳包,检测到数据库节点104对心跳包没有正常响应的次数大于失败次数阈值N,则主节点在节点状态表中更新数据库节点104的运行状态信息为“can not connected”,并将该数据库节点104的管理角色从追随者F修改为未知N。即后续主节点不再向数据库节点104发送数据库日志,以避免资源浪费。
在一些实施方式中,当前主节点还可以进行新增节点事件的处理。请参阅图6,图6为本申请一示例性实施例示出的新增数据库节点的流程图。如图6所示,当前的主节点接收到数据库节点的集群加入请求,主节点判断该数据库节点数据库身份标识(Databasesystem identifier)是否相同,若不相同,则拒绝该数据库节点的加入;若相同,则获取节点状态表中该数据库节点的最新全局事务顺序标识,以根据得到的最新全局事务顺序标识,向该数据库节点推送数据库日志,并判断全局事务是否追平,即判断该数据库节点的最新全局事务顺序标识是否与主节点的最新全局事务顺序标识是否一致,一致则全局事务追平。若该数据库节点全局事务未追平,则继续向该数据库节点推送数据库日志;若该数据库节点全局事务追平,则将该数据库节点接入集群,并更新节点状态表。
主节点向各个从节点发送待发送的数据库日志,以实现数据库节点之间的数据同步。
请参见图7,图7为本申请一示例性实施例示出的同步数据库日志的示意图。如图7所示,数据库日志同步的步骤包括:
1.客户端client向主节点的SQL处理模块发起数据库写请求;
2.主节点的SQL处理模块执行数据库写请求对应的SQL语句,并通知事务日志模块生成该数据库写请求对应的数据库日志,如预写式日志(write ahead log,wal);
3.主节点的事务日志模块将数据库日志发送给所有从节点;
其中,若主节点接收到从节点返回的接收成功信息(prepare ok),则判断为数据库日志发送成功;若主节点接收到从节点返回的接收失败信息(prepare fail),则判断为数据库日志发送失败;若主节点的事务日志模块判断为数据库日志发送失败,可以重复该数据库日志的发送。
其中,若重复预设次数的数据库日志的发送后,数据库日志仍然发送失败,则结束该数据库日志的发送。进一步地,还可以修改数据库日志的发送失败的从节点的运行状态。
4.若主节点的事务日志模块向主节点的SQL处理模块返回数据库日志的发送结果。其中,发送结果包括发送成功(commit ok)和发送失败(rollback)。
5.主节点的SQL处理模块向客户端client反馈对应的数据库写请求的执行结果。
本申请提供的数据处理方法,通过接收主节点发送的主数据库对应的数据库日志,将数据库日志添加至日志缓存队列中;提取日志缓存队列中当前待同步的数据库日志,得到目标日志,基于目标日志对从数据库进行数据库同步处理;响应于数据库同步处理成功,对目标日志进行持久化存储。即针对一个数据库日志,只有在数据库同步处理后,才对数据库日志进行持久化存储,可以仅执行一次数据写入操作,通过减少读写操作,缩短了数据库同步需要耗费的时间,提高了数据库系统性能。
请参阅图8,图8是本申请电子设备一实施例的结构示意图。电子设备800包括存储器801和处理器802,处理器802用于执行存储器801中存储的程序指令,以实现上述任一数据处理方法实施例中的步骤。在一个具体的实施场景中,电子设备800可以包括但不限于:微型计算机、服务器,此外,电子设备800还可以包括笔记本电脑、平板电脑等移动设备,在此不做限定。
具体而言,处理器802用于控制其自身以及存储器801以实现上述任一数据处理方法实施例中的步骤。处理器802还可以称为中央处理单元(Central Processing Unit,CPU)。处理器802可能是一种集成电路芯片,具有信号的处理能力。处理器802还可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器802可以由集成电路芯片共同实现。
请参阅图9,图9是本申请计算机可读存储介质一实施例的结构示意图。计算机可读存储介质900存储有能够被处理器运行的程序指令910,程序指令910用于实现上述任一数据处理方法实施例中的步骤。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (10)

1.一种数据处理方法,应用于从数据库对应的从节点,其特征在于,所述方法包括:
接收主节点发送的主数据库对应的数据库日志,将所述数据库日志添加至日志缓存队列中;
提取所述日志缓存队列中当前待同步的数据库日志,得到目标日志,基于所述目标日志对所述从数据库进行数据库同步处理;
响应于所述数据库同步处理成功,对所述目标日志进行持久化存储。
2.根据权利要求1所述的方法,其特征在于,所述主节点发送的数据库日志均对应有全局事务顺序标识;所述提取所述日志缓存队列中当前待同步的数据库日志,得到目标日志,包括:
按照各个数据库日志对应的全局事务顺序标识,对所述日志缓存队列中的数据库日志进行排序;
从排序后的日志缓存队列中选取出当前待同步的数据库日志,得到目标日志。
3.根据权利要求2所述的方法,其特征在于,在所述从排序后的日志缓存队列中选取出当前待同步的数据库日志,得到目标日志之后,所述方法还包括:
获取所述非易失性存储器中已存储的数据库日志对应的最新全局事务顺序标识,得到第一基准标识;将所述目标日志对应的全局事务顺序标识作为待同步日志标识;
检测所述第一基准标识和所述待同步日志标识之间是否相邻;
所述基于所述目标日志对所述从数据库进行数据库同步处理,包括:
若所述第一基准标识和所述待同步日志标识相邻,则基于所述目标日志对所述从数据库进行数据库同步处理。
4.根据权利要求1所述的方法,其特征在于,所述接收主节点发送的主数据库的数据库日志,将所述数据库日志添加至日志缓存队列中,包括:
获取所述主节点发送的数据库日志的全局事务顺序标识,得到待添加日志标识;以及获取所述日志缓存队列中数据库日志对应的最新全局事务顺序标识,得到第二基准标识;
检测所述第二基准标识和所述待添加日志标识之间是否相邻;
若所述第二基准标识和所述待添加日志标识相邻,则将所述主节点发送的数据库日志添加至所述日志缓存队列中。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述第二基准标识和所述待添加日志标识不相邻,则基于所述第二基准标识生成事务日志追平请求;
将所述事务日志追平请求发送至所述主节点,以使所述主节点基于所述事务日志追平请求中的第二基准标识,向所述从节点发送所述主数据库对应的数据库日志。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
获取客户端发送的数据库读请求,检测所述从节点是否可以执行所述数据库读请求;
若所述从节点可以执行所述数据库读请求,则检测所述日志缓存队列中是否存在数据库日志,若所述日志缓存队列中不存在数据库日志,则基于所述数据库读请求对所述从数据库执行读操作;
若所述从节点不可以执行所述数据库读请求,则将所述数据库读请求转发至其它从节点或主节点。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
获取客户端发送的数据库写请求;
将所述数据库写请求转发至所述主节点,以使所述主节点执行所述数据库写请求。
8.一种数据处理方法,应用于主数据库对应的主节点,其特征在于,所述方法包括:
向从数据库对应的从节点发送所述主数据库的数据库日志,以使所述从节点将所述数据库日志添加至日志缓存队列中,提取所述日志缓存队列中当前待同步的数据库日志,得到目标日志,基于所述目标日志对所述从数据库进行数据库同步处理,并响应于所述数据库同步处理成功,对所述目标日志进行持久化存储。
9.根据权利要求8所述的方法,其特征在于,所述主数据库中存储有节点状态表,所述节点状态表存储有各个从节点对应的最新全局事务顺序标识;所述向从数据库对应的从节点发送所述主数据库的数据库日志,包括:
从所述节点状态表中获取所述各个从节点的最新全局事务顺序标识;
基于所述各个从节点的最新全局事务顺序标识,分别确定所述各个从节点待发送的数据库日志;
分别向所述各个从节点发送所述待发送的数据库日志。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
获取客户端或从节点发送的数据库写请求;
对所述主数据库执行所述数据库写请求,并生成所述数据库写请求对应的数据库日志;
将所述数据库写请求对应的数据库日志发送给各个从节点。
CN202311161356.9A 2023-09-08 2023-09-08 数据处理方法 Pending CN117370454A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311161356.9A CN117370454A (zh) 2023-09-08 2023-09-08 数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311161356.9A CN117370454A (zh) 2023-09-08 2023-09-08 数据处理方法

Publications (1)

Publication Number Publication Date
CN117370454A true CN117370454A (zh) 2024-01-09

Family

ID=89397257

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311161356.9A Pending CN117370454A (zh) 2023-09-08 2023-09-08 数据处理方法

Country Status (1)

Country Link
CN (1) CN117370454A (zh)

Similar Documents

Publication Publication Date Title
US9690679B2 (en) Transaction commitment and replication in a storage system
CN106843749B (zh) 写入请求处理方法、装置及设备
CN107919977B (zh) 一种基于Paxos协议的在线扩容、在线缩容的方法和装置
US10831612B2 (en) Primary node-standby node data transmission method, control node, and database system
US6654771B1 (en) Method and system for network data replication
US20140059315A1 (en) Computer system, data management method and data management program
CN114661816B (zh) 数据同步方法、装置、电子设备、存储介质
US11748215B2 (en) Log management method, server, and database system
TW200805079A (en) Consolidating session information for a cluster of sessions in a coupled session environment
WO2022048416A1 (zh) 操作请求的处理方法、装置、设备、可读存储介质及系统
CN113190620B (zh) Redis集群之间数据的同步方法、装置、设备及存储介质
CN110830582A (zh) 一种基于服务器集群选主方法和装置
CN112015595B (zh) 主从数据库的切换方法、计算设备及存储介质
CN105323271B (zh) 一种云计算系统以及云计算系统的处理方法和装置
WO2021082925A1 (zh) 一种交易处理的方法及装置
US20120166590A1 (en) Reading and Writing During Cluster Growth Phase
US20230333945A1 (en) Scalable Low-Loss Disaster Recovery for Data Stores
CN111404737B (zh) 一种容灾处理方法以及相关装置
CN115658245B (zh) 一种基于分布式数据库系统的事务提交系统、方法及装置
CN110121712B (zh) 一种日志管理方法、服务器和数据库系统
CN116540938A (zh) 数据读取方法、装置、分布式存储系统、设备和存储介质
CN117370454A (zh) 数据处理方法
US20120191645A1 (en) Information processing apparatus and database system
CN109791541B (zh) 日志序列号生成方法、装置及可读存储介质
EP4291983A1 (en) Reducing the impact of network latency during a restore operation

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