CN112597251A - 数据库集群日志同步方法、装置、服务器及存储介质 - Google Patents

数据库集群日志同步方法、装置、服务器及存储介质 Download PDF

Info

Publication number
CN112597251A
CN112597251A CN202011607549.9A CN202011607549A CN112597251A CN 112597251 A CN112597251 A CN 112597251A CN 202011607549 A CN202011607549 A CN 202011607549A CN 112597251 A CN112597251 A CN 112597251A
Authority
CN
China
Prior art keywords
log
block data
log block
linked list
receiving
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.)
Granted
Application number
CN202011607549.9A
Other languages
English (en)
Other versions
CN112597251B (zh
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.)
Tianjin Nankai University General Data Technologies Co ltd
Original Assignee
Tianjin Nankai University General Data Technologies 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 Tianjin Nankai University General Data Technologies Co ltd filed Critical Tianjin Nankai University General Data Technologies Co ltd
Priority to CN202011607549.9A priority Critical patent/CN112597251B/zh
Publication of CN112597251A publication Critical patent/CN112597251A/zh
Application granted granted Critical
Publication of CN112597251B publication Critical patent/CN112597251B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种基于RDMA的高可用数据库集群日志同步方法,发送端包括如下步骤:主节点创建日志处理和发送线程,进行日志流数据的切分处理并将切分后的日志块写入管道;主节点创建RDMA发送线程,从管道中读取日志块数据并发送到从节点。本发明采用优选的基于RDMA同步日志数据的方式,能够显著提升日志数据传输速度,降低日志传输的网络延迟,能够减少数据库对单个事务的响应时间,在高并发的场景下,因此能够显著提升数据库的高可用性,提升用户体验。

Description

数据库集群日志同步方法、装置、服务器及存储介质
技术领域
本发明属于数据库技术领域,尤其是涉及一种基于RDMA的高可用数据库集群日志同步方法。
背景技术
单机数据库常常存在由于硬件故障、操作系统故障或数据库软件自身故障导致的服务终止等问题,为了实现数据库高可用性(数据库提供的服务在要求的访问时间内一直可用,不会出现读写失败或操作超时的现象),防止由于单点故障导致的服务终止,数据库软件提供商使用由两台或两台以上的数据库服务器组成的集群,构成一个单一的数据库逻辑映像,向上层应用提供透明的数据库服务,透明指客户端往往感知不到其访问的数据库是单机数据库还是集群。
由于数据库各个节点向外提供一致的服务,那么集群需要保证各节点的数据同步,因此,高可用集群在架构设计时需要考虑数据同步问题。数据库集群节点的数据同步方式有基于日志的复制技术和基于数据的复制技术,实际中以基于日志复制技术使用较多。
不同节点间的数据库日志传输的传统方式采用TCP/IP协议,然而,在数据发送的过程中,要经过从操作系统用户态缓冲区、内核态缓冲区的几次复制,操作系统需要进行用户态和内核态的切换,同时数据复制也需要占用CPU资源和总线带宽,因此会带来较高的延迟。
发明内容
有鉴于此,本发明旨在提出一种基于RDMA的高可用数据库集群日志同步方法,能够有效减少对主节点和从节点的CPU占用,同时减少日志传输延迟,提高数据库集群的高可用性。
为达到上述目的,本发明的技术方案是这样实现的:
第1方面,本发明提供了一种基于RDMA的高可用数据库集群日志同步方法,包括如下步骤:
S11,主节点创建日志处理和发送线程,进行日志流数据的切分处理并将切分后的日志块写入管道;
S12,主节点创建RDMA发送线程,从管道中读取日志块数据并发送到从节点。
第2方面,本发明提供了另一种基于RDMA的高可用数据库集群日志同步方法,包括如下步骤:
S21,从节点创建RDMA接收线程,从网络中接收主节点发送的日志块数据并将其写入管道;
S22,从节点创建日志接收和处理线程,从管道中读取日志块数据,并将日志块数据进行组装,完成日志文件的接收。
进一步的,步骤S21的具体实现方法为:从节点创建RDMA接收线程,调用rdma_recv_thread函数接收主节点发送过来的日志块数据,rdma_recv_thread函数的具体实现方式包括如下内容:
S211,创建一个RDMA套接字,再将该套接字与本机地址进行绑定;
S212,使套接字进入监听状态,接收主节点的连接请求;
S213,接收主节点传输的日志块数据,完成接收后将日志块数据写入管道。
进一步的,在步骤S22中,线程接收到日志块数据后,将日志块数据放置到日志接收队列中,
所述日志接收队列为一个指针数组,数组中的每个成员为一个结构指针,每个结构指针指向一个结构head,结构head中有两个链表,分别为顺序链表和失序链表,链表中的每个节点是一个日志块数据;
所述日志块数据包含控制信息和日志数据,所述控制信息包括切分后的日志块的序号,序号用于在发送和接收过程中作为日志块数据排序的依据;
每当一个线程接收到一个日志块数据后,进行如下处理步骤:
S221,提取控制信息中的序号,将该序号对指针数组长度取模,确定该日志块数据应该放置到该数组中的对应链表中,然后仅对该链表上锁;
S222,将该日志块数据的序号与对应链表中期待收到的序号对比,如果不相等,则将日志块数据放入失序日志块链表中;
如果相等,则将日志块数据放入到顺序日志链表的末尾,并更新下一个期待接收的序号;则再遍历失序链表,检查是否有与期待接收的序号相等的序号,若有则将符合条件的日志块放入顺序链表的末尾,并更新下一个期待接收的序号,直到没有符合条件的序号;
S223,对该链表进行解锁处理。
第3方面,本发明提供了一种基于RDMA的高可用数据库集群日志同步装置,包括:
切分模块,主节点创建日志处理和发送线程,进行日志流数据的切分处理并将切分后的日志块写入管道;
发送模块,主节点创建RDMA发送线程,从管道中读取日志块数据并发送到从节点。
第4方面,本发明提供了另一种基于RDMA的高可用数据库集群日志同步装置,包括:
接收模块,从节点创建RDMA接收线程,从网络中接收主节点发送的日志块数据并将其写入管道;
组装模块,从节点创建日志接收和处理线程,从管道中读取日志块数据,并将日志块数据进行组装,完成日志文件的接收。
第5方面,本发明提供了一种数据库服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述第1方面或者第2方面所述方法的步骤。
第6方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第1方面或者第2方面所述方法的步骤。
相对于现有技术,本发明所述的方法具有以下优势:
(1)本发明实现了基于RDMA socket API的关系型数据库集群高性能日志传输方法,相比于传统以TCP/IP通信协议传输的方式,本方法能降低日志同步的传输延迟,提高数据库的高可用性。可应用于RDMA硬件环境下,关系型数据库集群的日志同步的场景中。
(2)本发明采用日志接收队列能够将日志块分散到多个链表中,对不同链表的操作互不影响,能够提高接收端的并行度,在保证以正确顺序接收日志块的同时,也能够提高日志块的接收速度,能够有效提高集群中从节点对日志的接收和处理速度,降低主从节点日志同步延迟,提高数据库集群高可用性。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为传统的数据库集群主从节点采用TCP/IP进行日志同步的示意图。
图2为本发明实施例的集群主从节点采用RDMA进行日志同步的示意图。
图3为传统的使用TCP/IP进行日志同步的具体流程图。
图4为本发明实施例的使用RDMA进行日志同步的具体流程图。
图5为本发明实施例的所述线程接收日志块的整体流程图。
图6为本发明实施例所述的日志接收队列数据结构图。
图7为本发明实施例所述的日志接收队列排序方法示例图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面将参考附图并结合实施例来详细说明本发明。
RDMA(Remote Direct Memory Access)是指远程直接内存访问技术,能够降低数据传输过程中的延迟。与TCP/IP相比,使用RDMA能够减少待传输的数据在内存中的复制移动,能够实现内核旁路,减少操作系统用户态和内核态之间的切换,大大减少数据传输过程中对CPU的占用,从而减少数据传输过程中的延迟。
本发明中的关系型数据库集群采用读写分离架构,即只有主节点可以执行插入和更新操作,从节点只能执行查询操作,主节点向从节点发送日志数据进行日志同步。传统数据库集群采用TCP/IP协议进行日志传输,如图1所示,传输过程需要日志数据需要经过用户缓冲区到内核缓冲区再到网卡的复制,在数据复制过程中会占用较长的CPU时间,同时操作系统需要在用户态和内核态切换。在这种情况下,当数据库面临较高的并发访问量时,会导致较高的访问延迟。
本发明实施例的一种基于RDMA的关系型数据库集群日志同步的方法,如图2所示,主节点的日志数据,越过操作系统内核,直接发送给硬件(网卡RDMA NIC,简称RNIC),经过网卡控制将发送缓冲区中的日志数据发送到网卡中的缓冲区,并传输给从节点的网卡。在高并发的场景下,即主节点同时处理大规模写请求,向从节点发送日志同步数据时,这种方法能够大大降低主节点的CPU占用,数据复制和用户态和内核态切换所带来的延迟,提高了数据库的集群高可用性,进而提升数据库上层应用程序的用户体验。
采用TCP/IP方式进行日志传输的具体过程见图3,主节点创建发送线程负责日志的发送,发送线程调用log_send_thread函数对日志页数据进行切分,调用Write_buffer函数通过缓冲区将日志数据交给tcp_send函数将日志数据发送出去;从节点创建接收线程,接收线程调用tcp_recv接收到日志数据,调用read_buffer函数读取缓冲区中的数据,返回给log_recv_thread函数,该函数将日志块进行组装后,完成日志的接收。
采用RDMA优化的日志传输方式的具体过程如图4所示,主节点和从节点进行日志同步的过程分为发送端和接收端两个部分,在日志传输过程中使用RDMA socket API进行数据传输。
1.发送端(主节点)主要步骤如下:
步骤一:主节点创建日志处理和发送线程,调用log_send_thread函数将日志页数据切分为小块日志(2KB),每小块日志包含控制信息和日志数据,其中控制信息为切分后的日志块的序号,在之后的发送和接收过程中,按照该控制信息中的序号将日志文件进行排序,保证其顺序的正确性。
步骤二:日志处理和发送线程调用rdma_write_pipe函数将切分后的日志块写入管道。
步骤三:主节点创建RDMA发送线程,调用rdma_send_thread函数从管道中读取数据,通过RDMA socket API发送到从节点中。
其中,RDMA socket API(简称RSOCKET)是基于RDMA的协议,支持用于应用程序的套接字级编程接口。具体方式为:1)创建一个套接字;2)与日志接收端建立连接;3)向接收端发送日志数据。
2.接收端(从节点)主要步骤如下:
步骤一:从节点创建RDMA接收线程,调用rdma_recv_thread函数接收主节点发送过来的日志数据,具体方式为:1)创建一个RDMA套接字;2)将该套接字与本机地址进行绑定;3)使套接字进入监听状态;4)接收主节点的连接请求;5)接收主节点传输的日志数据。完成接收后将日志数据写入管道。
步骤二:从节点创建日志接收和处理线程,调用rdma_read_pipe函数从管道中读取日志块数据。
本发明采用管道机制对信息的节点内部传递进行优化,相比原有采用缓冲区的方式进行信息传递,采用管道的方式简化了操作,在有多个线程同时操作一个缓冲区时,无需在编程实现中手动进行加锁和解锁操作,同时能够实现数据异步传输,提高性能。
步骤三:日志接收和处理线程调用log_recv_thread函数将小的日志块文件进行组装,完成日志数据的接收。具体的,
在日志同步过程中,由于网络的不稳定,先发送的日志块可能后到达,因此接收的日志数据可能乱序到达。接收端收到乱序到达的日志数据,将日志数据按照控制信息中的序号放入日志接收队列中,日志接收队列数据结构图如图6所示,然后交给其他线程对日志块数据进行日志回放和存储等操作。
线程接收到日志块数据后,将日志块数据放置到日志接收队列中,使用该日志接收队列数据结构作为接收端缓冲区时,可以创建多个线程同时进行日志块的处理和接收。
所述日志接收队列为一个指针数组,数组中的每个成员为一个结构指针,每个结构指针指向一个结构head,结构head中有两个链表,分别为顺序链表和失序链表,链表中的每个节点是一个日志块数据;
顺序链表中存放着按照正确顺序存放的日志块数据,失序链表中暂存由于网络延迟等原因乱序到达的日志块,每当向顺序链表尾部链接日志块时,都会检查是否能够将失序链表中的日志块恢复到顺序链表中,通过这种方式保证日志块的正确顺序。
每当一个线程接收到一个日志块数据后,进行如下处理步骤:
1)提取控制信息中的序号,将该序号对指针数组长度取模,确定该日志块数据应该放置到该数组中的对应链表中,然后仅对该链表上锁;
例如,线程接收日志块的整体流程如图5所示,当一个recv_thread线程收到一个数据块数据(log_frag)时,从log_frag的控制信息中获得该log_frag的序号(seq)为19,当指针数组的长度为16时(size=16),将该log_frag放入左侧指针数组下标为3(seq%size=19%16=3)的元素所指向的链表中(下称3号链表),然后仅对3号链表上锁。
2)将该日志块数据的序号与对应链表中期待收到的序号对比,如果序号不相等,即出现后发送的日志块先到达时,并不会直接把该块日志放入顺序链表中,而是会先将其放入失序链表中;
如果序号相等,则放入到顺序链表的末尾,并更新下一个期待接收的序号;每当有新的日志块被放入顺序链表后,都会遍历失序链表,将符合条件的日志块放入顺序链表中;即遍历失序链表,检查是否有与期待接收的序号相等的序号,若有则将符合条件的日志块放入顺序链表的末尾,并更新下一个期待接收的序号,直到没有符合条件的序号;
3)对该链表进行解锁处理。
由于网络是不稳定的,尽管日志块可能到达的顺序不同,但是使用该队列能够保证其接收的顺序正确。采用上述方式能够将乱序到达的日志块数据进行排序,保证日志数据接收的正确性。例如,如图7所示,当第2size号和3size号日志块先于size号日志块到达时,则会将它们放入失序链表中,当经过一段时间后,晚到的size号日志块被放入顺序链表的尾端,此时遍历失序链表,将其中的两个日志块连接到顺序链表的末尾,保证了日志块接收的顺序。
使用该数据结构作为接收端队列时,可以创建多线程并行进行日志块接收和处理,仅需要对特定线程正在处理的链表进行上锁,不影响其他线程对数组中的其他链表进行操作。由于从节点数据接收和处理的速度会直接影响日志的发送速度,此种接收队列能够将日志块分散到多个链表中,对不同链表的操作互不影响,因此采用这种方式能够提高接收端的并行度,在保证以正确顺序接收日志块的同时,也能够提高日志块的接收速度,从而提高日志同步的性能,最终提高数据库集群的整体性能。
另一个实施例公开了与上述公开的发送端的日志同步方法部分对应的装置,为该方法对应的虚拟装置结构,包括:
切分模块,主节点创建日志处理和发送线程,进行日志流数据的切分处理并将切分后的日志块写入管道;
发送模块,主节点创建RDMA发送线程,从管道中读取日志块数据并发送到从节点。
另一个实施例公开了与上述公开的接收端的日志同步方法部分对应的装置,为该方法对应的虚拟装置结构,包括:
接收模块,从节点创建RDMA接收线程,从网络中接收主节点发送的日志块数据并将其写入管道;
组装模块,从节点创建日志接收和处理线程,从管道中读取日志块数据,并将日志块数据进行组装,完成日志文件的接收。
另一个实施例,本发明提供了一种数据库服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述发送端或者接收端的日志同步方法的步骤。
另一个实施例,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述发送端或者接收端的日志同步方法的步骤。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述日志同步装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
本发明采用的RDMA进行日志同步的方式具有以下优势:
1.减少日志同步对CPU的占用,能够让出资源用于SQL语句的计算
在网络传输中,传输数据的开销可以划分为处理开销和传输开销,由于传输的日志数据较小,因此使用TCP/IP方式进行发送的时候,相比于传输时间,处理时间占比较大。对日志数据的处理会占用数据库集群主节点较长的CPU时间,而主节点除了负责日志发送以外,还需要进行SQL语句响应,对SQL语句的解析、优化和执行都需要大量的CPU计算,在高并发的场景和有限的CPU资源限制下,采用TCP/IP方式传输日志也会间接影响集群节点对SQL语句的响应速度。
而本发明优化的方法采用RDMA方式进行传输,能够旁路内核,减少缓冲区数据复制,降低日志数据处理过程对CPU的占用,释放主节点CPU资源,使服务器能分配更多的CPU时间用于对SQL语句的响应,因此减少了数据库对SQL语句的响应时间,从而提高了数据库的高可用性。
2.降低日志同步延迟,提升数据库事务处理性能
本发明中关系型数据库集群主从节点进行日志同步的方式可选以下三种:完全同步模式,进同步模式,异步模式。完全同步模式要求在从节点收到日志,并进行日志回放结束后,主节点事务才能结束。近同步模式要求从节点收到日志,返回收到信息后,主节点事务才能结束。异步模式仅要求主节点发送日志后事务就可以结束。但三种方式都要求在检查点时刻,即在将内存中数据写入磁盘时,保持主从节点数据库数据和状态的同步。而在OLAP(联机事务处理,Online Transaction Processing)场景下,即数据库需要处理大量并发的简单事务,对事务的响应时间有着较高的要求,在这种情况下,日志传输延迟越低,事务完成的速度越快,数据库性能越高。
3、本发明采用优选的基于RDMA同步日志数据的方式,能够显著提升日志数据传输速度,降低日志传输的网络延迟,能够减少数据库对单个事务的响应时间,在高并发的场景下,因此能够显著提升数据库的高可用性,提升用户体验。
进一步的,使用该数据结构作为接收端队列时,可以创建多线程并行进行日志块接收和处理,仅需要对特定线程正在处理的链表进行上锁,不影响其他线程对数组中的其他链表进行操作。由于从节点数据接收和处理的速度会直接影响日志的发送速度,此种接收队列能够将日志块分散到多个链表中,对不同链表的操作互不影响,因此采用这种方式能够提高接收端的并行度,在保证以正确顺序接收日志块的同时,也能够提高日志块的接收速度,从而提高日志同步的性能,最终提高数据库集群的整体性能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.基于RDMA的高可用数据库集群日志同步方法,其特征在于,包括如下步骤:
S11,主节点创建日志处理和发送线程,进行日志流数据的切分处理并将切分后的日志块写入管道;
S12,主节点创建RDMA发送线程,从管道中读取日志块数据并发送到从节点。
2.根据权利要求1所述的方法,其特征在于:所述日志块数据包含控制信息和日志数据,所述控制信息包括切分后的日志块的序号,序号用于在发送和接收过程中,作为日志块数据排序的依据。
3.基于RDMA的高可用数据库集群日志同步方法,其特征在于,包括如下步骤:
S21,从节点创建RDMA接收线程,从网络中接收主节点发送的日志块数据并将其写入管道;
S22,从节点创建日志接收和处理线程,从管道中读取日志块数据,并将日志块数据进行组装,完成日志文件的接收。
4.根据权利要求3所述的方法,其特征在于:步骤S21的具体实现方法为:从节点创建RDMA接收线程,调用rdma_recv_thread函数接收主节点发送过来的日志块数据,rdma_recv_thread函数的具体实现方式包括如下内容:
S211,创建一个RDMA套接字,再将该套接字与本机地址进行绑定;
S212,使套接字进入监听状态,接收主节点的连接请求;
S213,接收主节点传输的日志块数据,完成接收后将日志块数据写入管道。
5.根据权利要求3所述的方法,其特征在于:在步骤S22中,线程接收到日志块数据后,将日志块数据放置到日志接收队列中,
所述日志接收队列为一个指针数组,数组中的每个成员为一个结构指针,每个结构指针指向一个结构head,结构head中有两个链表,分别为顺序链表和失序链表,链表中的每个节点是一个日志块数据;
所述日志块数据包含控制信息和日志数据,所述控制信息包括切分后的日志块的序号,序号用于在发送和接收过程中作为日志块数据排序的依据;
每当一个线程接收到一个日志块数据后,进行如下处理步骤:
S221,提取控制信息中的序号,将该序号对指针数组长度取模,确定该日志块数据应该放置到该数组中的对应链表中,然后仅对该链表上锁;
S222,将该日志块数据的序号与对应链表中期待收到的序号对比,如果不相等,则将日志块数据放入失序日志块链表中;
如果相等,则将日志块数据放入到顺序日志链表的末尾,并更新下一个期待接收的序号;则再遍历失序链表,检查是否有与期待接收的序号相等的序号,若有则将符合条件的日志块放入顺序链表的末尾,并更新下一个期待接收的序号,直到没有符合条件的序号;
S223,对该链表进行解锁处理。
6.基于RDMA的高可用数据库集群日志同步装置,其特征在于,包括:
切分模块,主节点创建日志处理和发送线程,进行日志流数据的切分处理并将切分后的日志块写入管道;
发送模块,主节点创建RDMA发送线程,从管道中读取日志块数据并发送到从节点。
7.基于RDMA的高可用数据库集群日志同步装置,其特征在于,包括:
接收模块,从节点创建RDMA接收线程,从网络中接收主节点发送的日志块数据并将其写入管道;
组装模块,从节点创建日志接收和处理线程,从管道中读取日志块数据,并将日志块数据进行组装,完成日志文件的接收。
8.根据权利要求7所述的装置,其特征在于:组装模块接收到日志块数据后,将日志块数据放置到日志接收队列中,
所述日志接收队列为一个指针数组,数组中的每个成员为一个结构指针,每个结构指针指向一个结构head,结构head中有两个链表,分别为顺序链表和失序链表,链表中的每个节点是一个日志块数据;
所述日志块数据包含控制信息和日志数据,所述控制信息包括切分后的日志块的序号,序号用于在发送和接收过程中作为日志块数据排序的依据;
每当组装模块接收到一个日志块数据后,进行如下处理步骤:
S221,提取控制信息中的序号,将该序号对指针数组长度取模,确定该日志块数据应该放置到该数组中的对应链表中,然后仅对该链表上锁;
S222,将该日志块数据的序号与对应链表中期待收到的序号对比,如果不相等,则将日志块数据放入失序日志块链表中;
如果相等,则将日志块数据放入到顺序日志链表的末尾,并更新下一个期待接收的序号;则再遍历失序链表,检查是否有与期待接收的序号相等的序号,若有则将符合条件的日志块放入顺序链表的末尾,并更新下一个期待接收的序号,直到没有符合条件的序号;
S223,对该链表进行解锁处理。
9.一种数据库服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-2或者3-5中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-2或者3-5中任一项所述方法的步骤。
CN202011607549.9A 2020-12-29 2020-12-29 数据库集群日志同步方法、装置、服务器及存储介质 Active CN112597251B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011607549.9A CN112597251B (zh) 2020-12-29 2020-12-29 数据库集群日志同步方法、装置、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011607549.9A CN112597251B (zh) 2020-12-29 2020-12-29 数据库集群日志同步方法、装置、服务器及存储介质

Publications (2)

Publication Number Publication Date
CN112597251A true CN112597251A (zh) 2021-04-02
CN112597251B CN112597251B (zh) 2023-01-24

Family

ID=75206191

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011607549.9A Active CN112597251B (zh) 2020-12-29 2020-12-29 数据库集群日志同步方法、装置、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN112597251B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113694536A (zh) * 2021-09-07 2021-11-26 北京蔚领时代科技有限公司 一种面向云游戏的场景管理方法、装置、设备及介质
CN113778755A (zh) * 2021-09-16 2021-12-10 浪潮商用机器有限公司 一种数据同步方法、装置、设备及计算机可读存储介质
CN113905054A (zh) * 2021-08-30 2022-01-07 苏州浪潮智能科技有限公司 基于RDMA的Kudu集群数据同步方法、装置、系统
CN115550384A (zh) * 2022-11-25 2022-12-30 苏州浪潮智能科技有限公司 集群数据同步方法、装置、设备及计算机可读存储介质
CN115840737A (zh) * 2023-02-16 2023-03-24 济南邦德激光股份有限公司 一种基于数据库的分离式日志管理方法及系统
CN115905155A (zh) * 2023-01-05 2023-04-04 天津南大通用数据技术股份有限公司 一种逻辑日志同步的并行传输的方法
CN117149905A (zh) * 2023-08-16 2023-12-01 上海沄熹科技有限公司 一种时序数据复制方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105159818A (zh) * 2015-08-28 2015-12-16 东北大学 内存数据管理中日志恢复方法及其仿真系统
CN108376142A (zh) * 2018-01-10 2018-08-07 北京思特奇信息技术股份有限公司 一种分布式内存数据库数据同步方法及系统
US20190332692A1 (en) * 2018-04-27 2019-10-31 Netapp, Inc. Archive log management for distributed database clusters
CN110691062A (zh) * 2018-07-06 2020-01-14 浙江大学 一种数据写入方法、装置及其设备
CN110807062A (zh) * 2018-08-02 2020-02-18 中兴通讯股份有限公司 一种数据同步的方法、装置和数据库主机

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105159818A (zh) * 2015-08-28 2015-12-16 东北大学 内存数据管理中日志恢复方法及其仿真系统
CN108376142A (zh) * 2018-01-10 2018-08-07 北京思特奇信息技术股份有限公司 一种分布式内存数据库数据同步方法及系统
US20190332692A1 (en) * 2018-04-27 2019-10-31 Netapp, Inc. Archive log management for distributed database clusters
CN110691062A (zh) * 2018-07-06 2020-01-14 浙江大学 一种数据写入方法、装置及其设备
CN110807062A (zh) * 2018-08-02 2020-02-18 中兴通讯股份有限公司 一种数据同步的方法、装置和数据库主机

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杨建荣: "《ORACLE DBA工作笔记 运维数据迁移与性能调优》", 31 August 2016 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113905054A (zh) * 2021-08-30 2022-01-07 苏州浪潮智能科技有限公司 基于RDMA的Kudu集群数据同步方法、装置、系统
CN113905054B (zh) * 2021-08-30 2023-08-08 苏州浪潮智能科技有限公司 基于RDMA的Kudu集群数据同步方法、装置、系统
CN113694536A (zh) * 2021-09-07 2021-11-26 北京蔚领时代科技有限公司 一种面向云游戏的场景管理方法、装置、设备及介质
CN113778755A (zh) * 2021-09-16 2021-12-10 浪潮商用机器有限公司 一种数据同步方法、装置、设备及计算机可读存储介质
CN115550384A (zh) * 2022-11-25 2022-12-30 苏州浪潮智能科技有限公司 集群数据同步方法、装置、设备及计算机可读存储介质
CN115550384B (zh) * 2022-11-25 2023-03-10 苏州浪潮智能科技有限公司 集群数据同步方法、装置、设备及计算机可读存储介质
WO2024109239A1 (zh) * 2022-11-25 2024-05-30 苏州元脑智能科技有限公司 集群数据同步方法、装置、设备及非易失性可读存储介质
CN115905155A (zh) * 2023-01-05 2023-04-04 天津南大通用数据技术股份有限公司 一种逻辑日志同步的并行传输的方法
CN115840737A (zh) * 2023-02-16 2023-03-24 济南邦德激光股份有限公司 一种基于数据库的分离式日志管理方法及系统
CN115840737B (zh) * 2023-02-16 2023-06-13 济南邦德激光股份有限公司 一种基于数据库的分离式日志管理方法及系统
CN117149905A (zh) * 2023-08-16 2023-12-01 上海沄熹科技有限公司 一种时序数据复制方法及装置
CN117149905B (zh) * 2023-08-16 2024-05-24 上海沄熹科技有限公司 一种时序数据复制方法及装置

Also Published As

Publication number Publication date
CN112597251B (zh) 2023-01-24

Similar Documents

Publication Publication Date Title
CN112597251B (zh) 数据库集群日志同步方法、装置、服务器及存储介质
CN112204513B (zh) 多租户存储系统中的基于组的数据复制
CN110113420B (zh) 基于nvm的分布式消息队列管理系统
CN112422615B (zh) 一种通信的方法及装置
US10698920B2 (en) Techniques for a linearizable primary-secondary database system that replicates database data with eventual consistency
CN111459418B (zh) 一种基于rdma的键值存储系统传输方法
US20120323849A1 (en) Method For Maximizing Throughput And Minimizing Transaction Response Times On The Primary System In The Presence Of A Zero Data Loss Standby Replica
US7693882B2 (en) Replicating data across the nodes in a cluster environment
CN114756388B (zh) 一种基于rdma的集群系统节点间按需共享内存的方法
EP1704480B1 (en) Cluster database with remote data mirroring
US20190347167A1 (en) Primary Node-Standby Node Data Transmission Method, Control Node, and Database System
CN111124993B (zh) 减小i/o处理时缓存数据镜像时延的方法、设备和程序产品
CN110119304B (zh) 一种中断处理方法、装置及服务器
CN111404931B (zh) 一种基于持久性内存的远程数据传输方法
WO2023046141A1 (zh) 一种数据库网络负载性能的加速框架、加速方法及设备
CN112988680B (zh) 数据加速方法、缓存单元、电子设备及存储介质
CN113626184A (zh) 一种超融合性能优化方法、装置及设备
US11360866B2 (en) Updating stateful system in server cluster
CN114461593B (zh) 日志写入方法及其装置、电子设备及存储介质
Luo et al. {SMART}: A {High-Performance} Adaptive Radix Tree for Disaggregated Memory
CN112612855B (zh) 高可用数据库日志接收队列、同步方法及装置
WO2024109253A1 (zh) 一种数据备份方法、系统和设备
CN111552668B (zh) 一种基于zfs文件系统的高性能跨域复制方法
CN110413689B (zh) 一种内存数据库的多节点数据同步方法与装置
WO2023246236A1 (zh) 分布式数据库的节点配置方法、事务日志同步方法和节点

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
GR01 Patent grant
GR01 Patent grant