数据库集群日志同步方法、装置、服务器及存储介质制造方法及图纸

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

【技术实现步骤摘要】
数据库集群日志同步方法、装置、服务器及存储介质
本专利技术属于数据库
,尤其是涉及一种基于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)本专利技术实现了基于RDMAsocketAPI的关系型数据库集群高性能日志传输方法,相比于传统以TCP/IP通信协议传输的方式,本方法能降低日志同步的传输延迟,提高数据库的高可用性。可应用于RDMA硬件环境下,关系型数据库集群的日志同步的场景中。(2)本专利技术采用日志接收队列能够将日志块分散到多个链表中,对不同链表的操作互不影响,能够提高接收端的并行度,在保证以正确顺序接收日志块的同时,也能够提高日志块的接收速度,能够有效提高集群中从节点对日志的接收和处理速度,降低主从节点日志同步延迟,提高数据库集群高可用性。附图说明构成本专利技术的一部分的附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1为传统的数据库集群主从节点采用TCP/IP进行日志同步的示意图。图2为本专利技术实施例的集群主从节点采用RDMA进行日志同步的示意图。图3为传统的使用TCP/IP进行日志同步的具体流程图。图4为本专利技术实施例的使用RDMA进行日志同步的具体流程图。图5为本专利技术实施例的所述线程接收日志块的整体流程图。图6为本专利技术实施例所述的日志接收队列数据结构图。图7为本专利技术实施例所述的日志接收队列排序方法示例图。具体实施方式需要说明的是,在不冲突的情况下,本专利技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本专利技术。RDMA(RemoteDirectMemoryAccess)是指远程直接内存访问技术,能够降低数据传输过程中的延迟。与TCP/IP相比,使用RDMA能够减少待传输的数据在内存中的复制移动,能够实现内核旁路,减少操作系统用户态和内核态之间的切换,大大减少数据传输过程中对CPU的占用,从而减少数据传输过程中的延迟。本专利技术中的关系型数据库集群采用读写分离架构,即只有主节点可以执行插入和更本文档来自技高网...

【技术保护点】
1.基于RDMA的高可用数据库集群日志同步方法,其特征在于,包括如下步骤:/nS11,主节点创建日志处理和发送线程,进行日志流数据的切分处理并将切分后的日志块写入管道;/nS12,主节点创建RDMA发送线程,从管道中读取日志块数据并发送到从节点。/n

【技术特征摘要】
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,将该日志块数据的序号与对应链表中期待收到的序号对比,如果不相等,则将日志块数据放入失序日志块链表中;
如果相等,则将日志块数据放入到顺序日志链表的末尾,并更新下一个期待接收的序号;则再遍历失序链表,检查是否有与期待接收的...

【专利技术属性】
技术研发人员:赵伟陈文亭莫爱玲王雪松吕迅
申请(专利权)人:天津南大通用数据技术股份有限公司
类型:发明
国别省市:天津;12

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

1