分布式数据库中日志复制方法及系统技术方案

技术编号:39256193 阅读:7 留言:0更新日期:2023-10-30 12:07
本发明专利技术公开了分布式数据库中日志复制方法及系统,属于数据库技术领域,本发明专利技术要解决的技术问题为如何提升分布式数据库存储节点的容错能力,并节约存储空间,避免与其他节点的网络交互,采用的技术方案为:该方法是对重放日志项Redo的结构及日志文件结构进行优化设计,在日志复制过程中,通过缓存队列和优化后的重放日志项Redo,在当前日志项中记录满足冲突条件的一部分日志项索引;当节点进入数据恢复状态时,利用对应日志文件避免对部分空洞日志的补全操作。该系统包括优化单元和同步单元;优化单元用于对日志中重放日志项Redo结构进行优化设计,具体包括对变更原数据类型和新增辅助数组;同步单元用于根据重放日志项Redo的数据结构进行日志同步操作。的数据结构进行日志同步操作。的数据结构进行日志同步操作。

【技术实现步骤摘要】
分布式数据库中日志复制方法及系统


[0001]本专利技术涉及数据库
,具体地说是一种分布式数据库中日志复制方法及系统。

技术介绍

[0002]分布式数据库从地理位置上来看是分散的,然而从整体上来看是各个节点的一个组合体。它利用网络将不可能在一起的节点整合到一起。对于用户,它的底层实现是透明的,使用者不需要知道分布式数据库具体的实现细节,就可以享受它带来的便利。
[0003]在数据恢复时,对于内存数据库而言,可以首先进行一个快照恢复,然后应用ARIES类日志来将数据库恢复到故障发生前的状态。即通过预写日志的规则,经过回放Redo日志、回滚Undo日志,将分布式数据库的副本进行恢复。
[0004]为了让一个存储节点具有容错能力,通用的方法便是让该存储节点的多个副本部署运行在不同的地方。而为了保证各个存储节点之间的数据同步,实现这个目的常用的方法便是State Machine Replication(状态机复制)。状态机复制有一套基础的理论,如果在该集群系统中的每一个存储节点都运行着相同的确定性状态机S,那么只要各个确定性状态机的输入是一样的,那么按照顺序执行,最终都会达到一个确定的状态,例如如果对应的输入序列为{i1,i2,i3,i4,

,in},那么状态机便会依次产生{S1,S2,S3,S4,

,Sn}等确定的状态。同样的,分布式数据库系统中一系列有序的日志便是各个副本的输入序列。日志复制顾名思义就是将一个存储节点上的日志通过消息传递的方式复制到另外一个副本存储节点上。各种事务产生的日志量是非常大的,而有些日志是冗余的,可以去除。如果对节点中的某一个数据做了多次更新操作,那么这些事务会分别产生一个相应的此数据对象上的操作物理日志,这些物理日志只有最后一条物理日志是有效的。通过对日志的筛选,在数据恢复的时候,可以跳过对冗余日志的重放操作,加快数据的恢复进程。当然,当数据量增大时,常常应用检查点技术,检查点通过定时将database buffer中的数据更新到data file中。因此,在数据恢复的过程中,就可以直接从最近的检查点开始之后的相关操作,而往往这一部分的时间会被忽视。
[0005]故如何提升分布式数据库存储节点的容错能力,并节约存储空间,避免与其他节点的网络交互是目前亟待解决的技术问题。

技术实现思路

[0006]本专利技术的技术任务是提供一种分布式数据库中日志复制方法及系统,来解决如何提升分布式数据库存储节点的容错能力,并节约存储空间,避免与其他节点的网络交互的问题。
[0007]本专利技术的技术任务是按以下方式实现的,一种分布式数据库中日志复制方法,该方法是对重放日志项Redo的结构及日志文件结构进行优化设计,在日志复制过程中,通过缓存队列和优化后的重放日志项Redo,在当前日志项中记录满足冲突条件的一部分日志项
索引;当节点进入数据恢复状态时,利用对应日志文件避免对部分空洞日志的补全操作。
[0008]作为优选,重放日志项Redo的结构优化设计具体如下:
[0009]重放日志项Redo:将temIndex设置为int类型,表示该日志项在Redo日志文件中的具体下标位置;receivedProValue设置成String类型,表示该日志项接受的提议值;新添加辅助数组buffer数组,buffer数组用于Redo item紧挨着的前N个Redo item中的满足设定条件的日志项的下标号,根据比较的日志条数进行设置;
[0010]设计重放日志项Redo日志文件结构,存储重放日志项Redo:存储节点已经接收的Redo日志项的最大下标号MostItemindex,排除空洞日志之后的日志文件中最小的且没有Commit的Redo日志项的下标号firstUnselectedIndex;
[0011]确定receivedNumber,当经过Paxos的流程确认一个Redo日志项已经Commit,将该日志项的receivedNumber重新赋值成无穷大,在实际的工程实现过程中,可以设置成系统不可能达到的一个最大值,这样,该日志项的值便确定下来;
[0012]久化保存firstUnselectedIndex,即该日志文件中未被提交的日志下标号,表示是最小的未提交日志的下标号。
[0013]更优地,当对一系列日志同步应用Paxos协议时,客户端将会发送命令到主存储节点上,设多副本数据库系统中共有2F+1个主存储节点,只要存在F+1个存储副本为无故障存储副本,则该多副本系统正常运行,实现日志同步。
[0014]更优地,主存储节点具体如下:
[0015]在主存储节点上设计一个队列结构ca_queue,队列结构ca_queue用于缓存一部分日志项;
[0016]队列结构ca_queue的存储容量足比日志项中的N的可能值大,存储编号小于该日志项的前N个索引,每前进一步,便先出队一个日志项,再将当前日志项前面的一个日志项进行入队操作。
[0017]更优地,客户端与多副本数据库系统信息交互过程具体如下:
[0018]通过选主流程选举出主存储节点与客户端进行交互;
[0019]客户端向主副本节点发起同步请求;
[0020]当主副本节点通过Paxos算法成功地完成一次事务日志的复制后,表明多副本数据库系统中暂时只有一个主存储节点在该时间段内服务,即表示并不会产生投票的冲突事件。
[0021]作为优选,通过重放Redo日志项可以省略Paxos一致性协议的准备请求过程,而仅仅执行接收请求过程,省略了Prepare阶段,直接进行Accept阶段,具体如下:
[0022]Leader向其它的所有副本节点(acceptors)发起接收请求的消息,同时携带有[RedoItem,firstUnSelectedIndex]消息;其中,RedoItem为需要同步的日志记录;
[0023]其它副本节点在接收到主存储节点Leader的接收Request后,副本节点通过将master.RedoItem.itemIndex索引处对应的日志项的minPreparedNumber与master.RedoItem.receivedNumber比较大小:
[0024]若minPreparedNumber小于等于master.RedoItem.receivedNumber,则将replica.minPreparedNumber设置成master.RedoItem.receivedNumber,同时在副本节点将主存储节点携带来的信息进行日志落盘操作;并且,若副本节点上
master.RedoItem.itemIndex索引处已经接收过日志项,用master.RedoItem更改该位置处的日志项;同时在副本节点上,若副本节点上下标小于master.firstUnselectedInde位置处的日志项中,满足该日志项上的receivedNumber等于master传过来的RedoItem本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式数据库中日志复制方法,其特征在于,该方法是对重放日志项Redo的结构及日志文件结构进行优化设计,在日志复制过程中,通过缓存队列和优化后的重放日志项Redo,在当前日志项中记录满足冲突条件的一部分日志项索引;当节点进入数据恢复状态时,利用对应日志文件避免对部分空洞日志的补全操作。2.根据权利要求1所述的分布式数据库中日志复制方法,其特征在于,重放日志项Redo的结构优化设计具体如下:重放日志项Redo:将temIndex设置为int类型,表示该日志项在Redo日志文件中的具体下标位置;receivedProValue设置成String类型,表示该日志项接受的提议值;新添加辅助数组buffer数组,buffer数组用于Redo item紧挨着的前N个Redo item中的满足设定条件的日志项的下标号,根据比较的日志条数进行设置;设计重放日志项Redo日志文件结构,存储重放日志项Redo:存储节点已经接收的Redo日志项的最大下标号MostItemindex,排除空洞日志之后的日志文件中最小的且没有Commit的Redo日志项的下标号firstUnselectedIndex;确定receivedNumber,当经过Paxos的流程确认一个Redo日志项已经Commit,将该日志项的receivedNumber重新赋值成无穷大;久化保存firstUnselectedIndex,即该日志文件中未被提交的日志下标号,表示是最小的未提交日志的下标号。3.根据权利要求1或2所述的分布式数据库中日志复制方法,其特征在于,当对一系列日志同步应用Paxos协议时,客户端将会发送命令到主存储节点上,设多副本数据库系统中共有2F+1个主存储节点,只要存在F+1个存储副本为无故障存储副本,则该多副本系统正常运行,实现日志同步。4.根据权利要求3所述的分布式数据库中日志复制方法及系统,其特征在于,主存储节点具体如下:在主存储节点上设计一个队列结构ca_queue,队列结构ca_queue用于缓存一部分日志项;队列结构ca_queue的存储容量足比日志项中的N的可能值大,存储编号小于该日志项的前N个索引,每前进一步,便先出队一个日志项,再将当前日志项前面的一个日志项进行入队操作。5.根据权利要求4所述的分布式数据库中日志复制方法,其特征在于,客户端与多副本数据库系统信息交互过程具体如下:通过选主流程选举出主存储节点与客户端进行交互;客户端向主副本节点发起同步请求;当主副本节点通过Paxos算法成功地完成一次事务日志的复制后,表明多副本数据库系统中暂时只有一个主存储节点在该时间段内服务,即表示并不会产生投票的冲突事件。6.根据权利要求1所述的分布式数据库中日志复制方法,其特征在于,通过重放Redo日志项,直接进行Accept阶段,具体如下:Leader向其它的所有副本节点发起接收请求的消息,同时携带有[RedoItem,firstUnSelectedIndex]消息;其中,RedoItem为需要同步的日志记录;其它副本节点在接收到主存储节点Leader的接收Request后,副本节点通过将
master.RedoItem.itemIndex索引处对应的日志项的minPreparedNumber与master.RedoItem.receivedNumber比较大小:若minPreparedNumber小于等于master.RedoItem.receivedNumber,则将replica.minPreparedNumber设置成master.RedoItem.receivedNumber,同时在副本节点将主存储节点携带来的信息进行日志落盘操作;并且,若副本节点上master.RedoItem.itemIndex索引处已经接收过日志项,用master.RedoItem更改该位置处的日志项;同时在副本节点上,若副本节点上下标小于master.firstUnselectedInde位置处的日志项中,满足该日志项上的receivedNumber等于master传过来的RedoItem.receivedNumber,则将对应日志项中的receivedNumber设置成一个超大值;再返回给主副本节点[minPreparedNumber,firstUnselectedIndex]对应信息;同时在副本节点上,若副本节点上下标小于master.firstUnselectedInde x位置处的日志项中,满足该日志项上的receivedNumber等于master传过来的RedoItem.receivedNumber,则将对应日志项中的receivedNumber设置成...

【专利技术属性】
技术研发人员:王耀龙
申请(专利权)人:上海沄熹科技有限公司
类型:发明
国别省市:

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

1