CN108932338B - 数据更新方法、装置、设备和介质 - Google Patents
数据更新方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN108932338B CN108932338B CN201810758664.2A CN201810758664A CN108932338B CN 108932338 B CN108932338 B CN 108932338B CN 201810758664 A CN201810758664 A CN 201810758664A CN 108932338 B CN108932338 B CN 108932338B
- Authority
- CN
- China
- Prior art keywords
- transaction
- updated
- library
- database
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000012790 confirmation Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 12
- 238000005192 partition Methods 0.000 claims description 9
- 230000002688 persistence Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 238000005096 rolling process Methods 0.000 claims description 5
- 230000001360 synchronised effect Effects 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000010076 replication Effects 0.000 description 5
- 230000007717 exclusion Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了数据更新方法、装置、设备和介质,涉及关联数据库管理系统领域。该方法包括:向至少一个从库发送待更新事务;控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令,其中所述更新指令用于指示所述至少一个从库对接收的待更新事务进行同步更新。本发明实施例提供的数据更新方法、装置、设备和介质,实现了从库与主库的数据同步更新。
Description
技术领域
本发明实施例涉及关联数据库管理系统(MySQL)领域,尤其涉及数据更新方法、装置、设备和介质。
背景技术
随着互联网数据的爆炸性增长,数据库作为互联网数据的存储介质,承担了越来越多的数据和对数据的访问请求。特别是在金融业务场景中,要求数据库做到数据高可靠(即分布式强一致),否则会对业务造成资损甚至是停止服务。
参见图1,通常MySQL中主库(即主数据库,也称Master)和从库(即从数据库,也称Slave)之间的数据同步更新过程可以描述为:事务发生更新,数据库集群中的主库先基于预写日志系统(Write-Ahead-Logging,WAL)将待更新事务写入二进制日志(Binlog);然后将写完的该待更新事务的二进制日志复制到至少一个从库的中继日志(Relaylog)中,并返回用户应答,由至少一个从库基于该待更新事务的二进制日志对所述从库进行更新,以使所述从库中的数据与主库中的数据保持一致;在将待更新事务写入二进制日志完成后,主库会提交(Commit)事务。
然而,在主库将该待更新事务写入二进制日志完成后,且在将写完的该待更新事务的二进制日志复制到从库前,如果主库所在设备出现异常关机或通信故障,那么在主库所在设备重新启动或故障修复后,主库会直接根据写完的二进制日志提交事务。但是,此时并未将写完的待更新事务的二进制日志复制到从库。因此从库也就无法进行相应的数据更新,进而导致从库中的数据与主库中的数据不一致。
同时,MySQL官方在半同步和无损半同步的复制机制中,只是在用户可见性(体现为返回用户应答)和数据同步结果之间做优化,但依然没有保证已提交的事务一定同步到从库。
一个典型的案例,在交易场景中,当支付流程在主库完成扣款后,由于主库故障导致无法将扣款记录更新到数据库集群中的从库。从而出现扣完款,但是用户无法从从库中读取到扣款记录,进而导致停止业务服务。
发明内容
本发明实施例提供数据更新方法、装置、设备和介质,以实现从库与主库保持数据同步更新。
第一方面,本发明实施例提供了一种数据更新方法,该方法包括:
向至少一个从库发送待更新事务;
控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令,其中所述更新指令用于指示所述至少一个从库对接收的待更新事务进行同步更新。
本发明实施例通过在主库对待更新事务进行更新之前,先将接收的待更新事务发送给至少一个从库,从而解决在主库将该待更新事务写入二进制日志完成后,且在将写完的该待更新事务的二进制日志复制到从库前,主库所在设备出现异常关机或通信故障,造成的从库无法接收待更新事务,从而从库无法根据待更新事务进行数据更新的问题。
同时,通过在主库对待更新事务进行更新时,触发从库对接收的待更新事务的更新,从而实现主库和从库对待更新事务的同步更新,以保证从库与主库的数据保持一致。
第二方面,本发明实施例还提供了一种数据更新方法,该方法包括:
将接收的待更新事务存储于本地的磁盘或硬盘;
若接收到主库下发的更新指令,则基于接收到的所述待更新事务对本地数据库进行数据更新。
本发明实施例通过将接收的待更新事务存储于本地的磁盘或硬盘,从而实现对待更新事务的持久化,避免因为设备关机或重启造成待更新事务数据的丢失。并在接收到主库下发的更新指令后,基于接收到的所述待更新事务对本地数据库进行数据更新。从而实现与主库的同步数据更新。
第三方面,本发明实施例还提供了一种数据更新装置,该装置包括:
事务发送模块,用于向至少一个从库发送待更新事务;
事务提交模块,用于控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令,其中所述更新指令用于指示所述至少一个从库对接收的待更新事务进行同步更新。
第四方面,本发明实施例还提供了一种数据更新装置,该装置包括:
持久化模块,用于将接收的待更新事务存储于本地的磁盘或硬盘;
数据更新模块,用于若接收到主库下发的更新指令,则基于接收到的所述待更新事务对本地数据库进行数据更新。
第五方面,本发明实施例还提供了一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例中任一所述的数据更新方法。
第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的数据更新方法。
附图说明
图1为现有技术中主库与从库之间数据更新的信令图;
图2为本发明实施例一提供的一种数据更新方法的流程图;
图3是本发明实施例二提供的一种数据更新方法的流程图;
图4为本发明实施例三提供的一种数据更新方法的流程图;
图5是本发明实施例四提供的主库与从库之间数据更新的信令图;
图6是本发明实施例四提供的数据库内线程间的数据流传输示意图;
图7是本发明实施例四提供的数据库内线程间的控制流传输示意图;
图8是本发明实施例五提供的一种数据更新装置的结构示意图;
图9是本发明实施例六提供的一种数据更新装置的结构示意图;
图10为本发明实施例七提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图2为本发明实施例一提供的一种数据更新方法的流程图。本实施例可适用于对数据库集群中的数据进行更新的情况。该方法可以由一种数据更新装置来执行,该装置可以由软件和/或硬件的方式实现,该装置关联设置有主数据库。参见图2,本实施例提供的数据更新方法包括:
S110、向至少一个从库发送待更新事务。
其中,从库是从数据库的简称,从数据库是数据库集群中除主数据库以外的数据。
通常,一个数据库集群中包括一个主数据库和至少一个从数据库。客户端将待更新事务发送给主数据库,主数据库将待更新事务写入二进制日志以实现根据待更新事务对数据的更新。在主数据库进行数据更新完成后,从数据库基于主数据库写入二进制日志中的待更新事务进行数据更新,从而实现主数据库与从数据库中的数据同步。
可选地,可以选择以agent(自主活动的软件或者硬件实体)的方式实现待更新事务的获取,也可以选择以线程的方式实现待更新事务的获取。
具体地,向至少一个从库发送待更新事务,包括:
通过主库服务线程以共享内存的方式从位于同一进程的主库工作线程中获取待更新事务,并通过主库服务线程将所述待更新事务发送给至少一个从库。
其中,因为主库服务线程与主库工作线程位于同一进程,所以主库服务线程可以以共享内存的方式从主库工作线程中获取待更新事务。因为agent需要去本地内存中读取待更新事务,所以与通过agent获取待更新事务相比,以线程共享内存的方式获取待更新事务可以节省去本地内存中读取待更新事务的麻烦,从而降低通信成本。
又因为,位于同一进程的线程的状态是绑定的。若有故障则均有故障,不会出现部分故障的现象,从而节省了对部分故障的维护成本。
S120、控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令。
其中,所述更新指令用于指示所述至少一个从库对接收的待更新事务进行同步更新。
本地数据库为数据库集群中的主数据库(以下简称主库)。主库通过将待更新事务写入二进制日志的方式,从而实现根据待更新事务对主库数据的更新。
通过在主库根据待更新事务进行数据更新的同时,向所述至少一个从库下发更新指令,以实现主库与从库的同步更新。避免主库与从库数据的数据不一致情况的出现。
在主库将待更新事务写入二进制日志完成后,主库提交事务。
本发明实施例的技术方案,通过在主库对待更新事务进行更新之前,先将接收的待更新事务发送给至少一个从库,从而解决在主库将该待更新事务写入二进制日志完成后,且在将写完的该待更新事务的二进制日志复制到从库前,主库所在设备出现异常关机或通信故障,造成的从库无法接收待更新事务,从而从库无法根据待更新事务进行数据更新的问题。
同时,通过在主库对待更新事务进行更新时,触发从库对接收的待更新事务的更新,从而实现主库和从库对待更新事务的同步更新,以保证从库与主库的数据一致。
为保证多数从库对待更新事务的接收,所述控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令的触发条件是:
接收的确认接收消息的数量大于设定的确认阈值,其中每个从库在接收到所述待更新事务后返回一条所述确认接收消息。
为解决本地数据库分区完成后或故障修复后,本地数据库直接根据客户端发送的待更新事务进行数据更新,而未向从库发送待更新事务,导致从库无法实现对待更新事务进行数据更新的问题。所述控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令之前,所述方法还包括:
若检测到本地数据库分区或故障,则对所述待更新事务进行回滚。
其中,回滚是删除由一个或多个部分完成的事务执行的更新。换而言之,回滚在此处也可以理解为删除所述待更新事务。
实施例二
图3是本发明实施例二提供的一种数据更新方法的流程图。本实施例是在上述实施例的基础上提出的一种可选方案。参见图3,本实施例提供的数据更新方法包括:
S210、向至少一个从库发送待更新事务。
S220、控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令。
S230、通过主库服务线程根据本地状态机选举的新主库,生成主库下线消息,并通过主库工作线程依据所述主库下线消息进行主库下线。
通常由第三方组件进行新主库的选举,并且第三方组件会将选举出的新主库发送给各数据库,由各数据库进行主库和从库的切换。如果第三方组件与本地主库的通信网络故障,本地主库未接收到第三方组件发送的新主库消息,也就不会进行主库下线,但是新主库根据接收得到的第三方组件发送的新主库消息会进行主库上线,从而出现双主库的情况(即新主库上线成功,老主库下线失败)。
然而,本实施例通过主库服务线程根据本地状态机选举的新主库,生成主库下线消息,并通过主库工作线程依据所述主库下线消息进行主库下线。因为线程间没有通信网络故障的影响,所以线程间的数据传输几乎不会出现消息不可达的问题。从而保证各数据库均能接收到新主库消息,避免出现双主库的情况。
同时,在主库服务线程向主库工作线程发送主库下线通知的间隔时间窗内,可能存在两个主库。但是,老主库服务线程在接收到老主库(即应该下线的主库)发送的待更新信息后会结合状态机选举的新主库判断当前数据库是否为新主库,若否,则返回写入失败消息,从而不进行写操。
可见,即便可能存在两个主库,但是经过老主库服务线程的判断,老主库是不能实现数据更新的。其实质仍然是一个主库。并且主库服务线程向主库工作线程发送主库下线通知的间隔时间窗较短。老主库会在接收到主库下线通知会进行主库的下线。
需要说明的是,本实施例对S230的执行顺序不做限定,可选地,S230可以先于S210或S220执行。
具体地,状态机选举新主库,包括:
接收其他数据库关联的状态机发送的作为新主库的请求;
若所述其他数据库中待更新事务的数据量大于等于本地数据库中待更新事务的数据量,则响应确认消息,否则响应不赞同消息;
将获得确认消息最多的数据库作为新主库。
通过对数据库中待更新事务的数据量的比较,从而将待更新事务的数据量最大的数据库选举为新主库。目的是保证对待更新事务的更新。
本发明实施例的技术方案,通过主库服务线程根据本地状态机选举的新主库,生成主库下线消息,并通过主库工作线程依据所述主库下线消息进行主库下线。因为线程间没有通信网络故障的影响,所以线程间的数据传输几乎不会出现消息不可达的问题。从而保证各数据库均能接收到新主库消息,避免出现双主库的情况。
实施例三
图4为本发明实施例三提供的一种数据更新方法的流程图。本实施例可适用于对数据库集群中的数据进行更新的情况。该方法可以由一种数据更新装置来执行,该装置可以由软件和/或硬件的方式实现,该装置关联设置有从数据库。参见图4,本实施例提供的一种数据更新方法包括:
S310、将接收的待更新事务存储于本地的磁盘或硬盘。
可选地,除本地的磁盘或硬盘,还可以存储于本地其他长期保存数据的介质中。
S320、若接收到主库下发的更新指令,则基于接收到的所述待更新事务对本地数据库进行数据更新。
具体地,根据接收的待更新事务写Relaylog。根据写完的Relaylog进行数据更新。
本发明实施例的技术方案,通过将接收的待更新事务存储于本地的磁盘或硬盘,从而实现对待更新事务的持久化,避免因为设备关机或重启造成待更新事务数据的丢失。并在接收到主库下发的更新指令后,基于接收到的所述待更新事务对本地数据库进行数据更新。从而实现与主库的同步数据更新。
所述若接收到主库下发的更新指令,则基于接收到的所述待更新事务对本地数据库进行数据更新之前,所述方法还包括:
若主库出现分区或故障,且本地数据库是选举出的候选主库,则控制本地数据库基于所述待更新事务进行更新和事务提交;
将本地数据库切换为新主库;或,
若主库出现分区或故障,且经过选举本地数据库仍为从库,则与新主库中的待更新事务进行比较,将比新主库中多的待更新事务删除。
具体地,候选主库控制本地数据库基于所述待更新事务进行更新包括:候选主库将本地待更新事务发送给其他数据库,并在候选主库控制本地数据库基于所述待更新事务进行更新时,发送更新指令给其他数据库,以指示其他数据根据待更新事务进行数据更新。
通过控制本地数据库基于所述待更新事务进行数据更新,从而实现对待更新事务在数据库中的更新。此外,将从库中比新主库多的待更新事务删除,以进一步保证主数据库与从数据库之间数据的一致。
实施例四
图5是本发明实施例四提供的一种数据更新方法的流程图。本实施例是在上述实施例的基础上提出的一种可选方案。参见图5,本实施例提供的数据更新方法包括:
同时参见图6,主库(Master)的主库服务线程(DataServer_Leader)以共享内存的方式从位于同一进程的主库的工作线程(Work THD,也即上述主库工作线程)中获取待更新事务,然后DataServer_Leader将所述待更新事务写入消息(RaftLog)的Data中,并采用多数派的方式将RaftLog同步到从库(Slave)的从库服务线程(DataServer_Follower)。
DataServer_Follower收到RaftLog之后,对RaftLog进行持久化,并向DataServer_Leader返回应答。
DataServer_Leader收到多数DataServer_Follower返回的应答之后,同时向主库的工作线程和DataServer_Follower发送更新指令。
主库的工作线程收到更新指令,将待更新事务写入Binlog,并在写入完成后在内存中提交事务。
DataServer_Follower收到更新指令,从RaftLog中提取Binlog内容,由MySQL的同步线程将提取的Binlog写入Relaylog中,并由从库的工作线程(Work THD)进行数据更新。
基于上述流程,通过数据库服务线程保证事务提交和数据复制的对应关系,即当事务达到提交状态,一定完成了数据的多数派复制。
同时相比传统MySQL,解决了数据工作线程和Dump线程在生成和读取Binlog过程中的互斥锁问题。实现无互斥锁的MySQL协调复制。
以上为对待更新事务进行数据库更新的数据流的描述。
参见图6和图7,在主数据库与从数据库进行切换的场景中,对基于待更新事务进行数据更新的数据库的控制流可以描述为:
代理层(dbproxy)从数据库集群中获取主库和从库,将接收到的来至应用程序端的待处理事务分配至获取的所述主库或所述从库。
其中,代理层介于客户端和数据库之间。待处理事务包括读事务或写事务,通常将读事务分配给从库或主库,将写事务作为待更新事务分配给主库处理。
数据库服务线程从Raft状态机中获取领导者(leader)开始或结束(leader-start/stop)消息,以及追随者(follower)开始或结束(follower-start/stop)消息;数据库服务线程根据获取的leader-start/stop消息和follower-start/stop消息生成主库下线消息、主库上线消息或变更主库信息消息给数据库工作线程,以使数据库工作线程响应相应消息。
其中,选主机制为:Raft选主驱动数据库的主从切换,避免出现双主场景。将RAFT_Leader作为MySQL_Master,将RAFT_Follower作为MySQL_Slave。
代理层主动感知数据库的状态,形成状态管理闭环,实现节点状态自治。
其中,数据库节点拓扑信息配置管理,数据库节点主从状态代理层动态感知。
本发明实施例的技术方案,通过主库在将待更新事务写入二进制日志前,将待更新事务发送给从库,这样即便在主库写完二进制日志后,但未将写完的二进制日志写入从库的中继日志时,主库所在设备异常关机,从库仍可以基于接收的待更新事务进行数据更新,从而实现从库数据与主库数据保持一致。
通过引入数据库服务线程,解决了数据工作线程和Dump线程在生成和读取Binlog过程中的互斥锁问题。实现无互斥锁的MySQL协调复制。
通过基于Raft状态机选举出的主数据库进行主库的下线、主库的上线或主库信息变更,从而避免出现双主的场景。
需要说明的是,经过本实施例的技术教导,本领域技术人员有动机将上述实施例中描述的任一种实施方式进行方案的组合,以实现对主数据库和从数据的同步数据更新。
实施例五
图8是本发明实施例五提供的一种数据更新装置的结构示意图。参见图8,本实施例提供的数据更新方法包括:事务发送模块10和事务提交模块20。
其中,事务发送模块10,用于向至少一个从库发送待更新事务;
事务提交模块20,用于控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令,其中所述更新指令用于指示所述至少一个从库对接收的待更新事务进行同步更新。
本发明实施例的技术方案,通过在主库对待更新事务进行更新之前,先将接收的待更新事务发送给至少一个从库,从而解决在主库将该待更新事务写入二进制日志完成后,且在将写完的该待更新事务的二进制日志复制到从库前,主库所在设备出现异常关机或通信故障,造成的从库无法接收待更新事务,从而从库无法根据待更新事务进行数据更新的问题。
同时,通过在主库对待更新事务进行更新时,触发从库对接收的待更新事务的更新,从而实现主库和从库对待更新事务的同步更新,以保证从库与主库的数据保持一致。
进一步地,所述事务发送模块,包括:事务发送单元。
其中,事务发送单元,用于通过主库服务线程以共享内存的方式从位于同一进程的主库工作线程中获取待更新事务,并通过主库服务线程将所述待更新事务发送给至少一个从库。
进一步地,所述事务提交模块的触发条件是:
接收的确认接收消息的数量大于设定的确认阈值,其中每个从库在接收到所述待更新事务后返回一条所述确认接收消息。
进一步地,所述装置还包括:事务回滚模块。
其中,事务回滚模块,用于所述控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令之前,若检测到本地数据库分区或故障,则对所述待更新事务进行回滚。
进一步地,所述装置还包括:状态机选举模块。
其中,状态机选举模块,用于通过主库服务线程根据本地状态机选举的新主库,生成主库下线消息,并通过主库工作线程依据所述主库下线消息进行主库下线。
进一步地,状态机选举模块包括:请求接收单元、消息响应单元和主库确认单元。
其中,请求接收单元,用于接收其他数据库关联的状态机发送的作为新主库的请求;
消息响应单元,用于若所述其他数据库中待更新事务的数据量大于等于本地数据库中待更新事务的数据量,则响应确认消息,否则响应不赞同消息;
主库确认单元,用于将获得确认消息最多的数据库作为新主库。
实施例六
图9是本发明实施例六提供的一种数据更新装置的结构示意图。参见图9,本实施例提供的数据更新方法包括:持久化模块30和数据更新模块40。
其中,持久化模块30,用于将接收的待更新事务存储于本地的磁盘或硬盘;
数据更新模块40,用于若接收到主库下发的更新指令,则基于接收到的所述待更新事务对本地数据库进行数据更新。
本发明实施例的技术方案,通过将接收的待更新事务存储于本地的磁盘或硬盘,从而实现对待更新事务的持久化,避免因为设备关机或重启造成待更新事务数据的丢失。并在接收到主库下发的更新指令后,基于接收到的所述待更新事务对本地数据库进行数据更新。从而实现与主库的同步数据更新。
进一步地,所述装置还包括:事务更新模块或事务删除模块。
其中,事务更新模块,用于所述若接收到主库下发的更新指令,则基于接收到的所述待更新事务对本地数据库进行数据更新之前,若主库出现分区或故障,且本地数据库是选举出的候选主库,则控制本地数据库基于所述待更新事务进行更新和事务提交;将本地数据库切换为新主库;或,
事务删除模块,用于若主库出现分区或故障,且经过选举本地数据库仍为从库,则与新主库中的待更新事务进行比较,将比新主库中多的待更新事务删除。
实施例七
图10为本发明实施例七提供的一种设备的结构示意图。图10示出了适于用来实现本发明实施方式的示例性设备12的框图。图10显示的设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图10所示,设备12以通用计算设备的形式表现。设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图10未显示,通常称为“硬盘驱动器”)。尽管图10中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的数据更新方法。
实施例八
本发明实施例八还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的数据更新方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (14)
1.一种数据更新方法,其特征在于,包括:
向至少一个从库发送待更新事务;
控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令,其中所述更新指令用于指示所述至少一个从库对接收的待更新事务进行同步更新;
其中,所述向至少一个从库发送待更新事务,包括:
通过主库服务线程以共享内存的方式从位于同一进程的主库工作线程中获取待更新事务,并通过主库服务线程将所述待更新事务发送给至少一个从库。
2.根据权利要求1所述的方法,其特征在于,所述控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令的触发条件是:
接收的确认接收消息的数量大于设定的确认阈值,其中每个从库在接收到所述待更新事务后返回一条所述确认接收消息。
3.根据权利要求1所述的方法,其特征在于,所述控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令之前,所述方法还包括:
若检测到本地数据库分区或故障,则对所述待更新事务进行回滚。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过主库服务线程根据本地状态机选举的新主库,生成主库下线消息,并通过主库工作线程依据所述主库下线消息进行主库下线。
5.根据权利要求4所述的方法,其特征在于,状态机选举新主库,包括:
接收其他数据库关联的状态机发送的作为新主库的请求;
若所述其他数据库中待更新事务的数据量大于等于本地数据库中待更新事务的数据量,则响应确认消息,否则响应不赞同消息;
将获得确认消息最多的数据库作为新主库。
6.一种数据更新方法,其特征在于,包括:
将接收的待更新事务存储于本地的磁盘或硬盘;
若接收到主库下发的更新指令,则基于接收到的所述待更新事务对本地数据库同步于主库进行数据更新。
7.根据权利要求6所述的方法,其特征在于,所述若接收到主库下发的更新指令,则基于接收到的所述待更新事务对本地数据库进行数据更新之前,所述方法还包括:
若主库出现分区或故障,且本地数据库是选举出的候选主库,则控制本地数据库基于所述待更新事务进行更新和事务提交;
将本地数据库切换为新主库;或,
若主库出现分区或故障,且经过选举本地数据库仍为从库,则与新主库中的待更新事务进行比较,将比新主库中多的待更新事务删除。
8.一种数据更新装置,其特征在于,包括:
事务发送模块,用于向至少一个从库发送待更新事务;
事务提交模块,用于控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令,其中所述更新指令用于指示所述至少一个从库对接收的待更新事务进行同步更新;
其中,所述事务发送模块,包括:
事务发送单元,用于通过主库服务线程以共享内存的方式从位于同一进程的主库工作线程中获取待更新事务,并通过主库服务线程将所述待更新事务发送给至少一个从库。
9.根据权利要求8所述的装置,其特征在于,所述事务提交模块的触发条件是:
接收的确认接收消息的数量大于设定的确认阈值,其中每个从库在接收到所述待更新事务后返回一条所述确认接收消息。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
事务回滚模块,用于所述控制本地数据库对所述待更新事务进行更新,并同步向所述至少一个从库下发更新指令之前,若检测到本地数据库分区或故障,则对所述待更新事务进行回滚。
11.一种数据更新装置,其特征在于,包括:
持久化模块,用于将接收的待更新事务存储于本地的磁盘或硬盘;
数据更新模块,用于若接收到主库下发的更新指令,则基于接收到的所述待更新事务对本地数据库同步于主库进行数据更新。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
事务更新模块,用于所述若接收到主库下发的更新指令,则基于接收到的所述待更新事务对本地数据库进行数据更新之前,若主库出现分区或故障,且本地数据库是选举出的候选主库,则控制本地数据库基于所述待更新事务进行更新和事务提交;将本地数据库切换为新主库;或,
事务删除模块,用于若主库出现分区或故障,且经过选举本地数据库仍为从库,则与新主库中的待更新事务进行比较,将比新主库中多的待更新事务删除。
13.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的数据更新方法或权利要求6或7所述的数据更新方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的数据更新方法或权利要求6或7所述的数据更新方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810758664.2A CN108932338B (zh) | 2018-07-11 | 2018-07-11 | 数据更新方法、装置、设备和介质 |
US16/508,022 US20200019543A1 (en) | 2018-07-11 | 2019-07-10 | Method, apparatus and device for updating data, and medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810758664.2A CN108932338B (zh) | 2018-07-11 | 2018-07-11 | 数据更新方法、装置、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108932338A CN108932338A (zh) | 2018-12-04 |
CN108932338B true CN108932338B (zh) | 2021-08-10 |
Family
ID=64447327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810758664.2A Active CN108932338B (zh) | 2018-07-11 | 2018-07-11 | 数据更新方法、装置、设备和介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200019543A1 (zh) |
CN (1) | CN108932338B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11157513B2 (en) * | 2019-08-09 | 2021-10-26 | Adp, Llc | Data synchronization in a micro services environment |
EP3779699B1 (en) * | 2019-08-16 | 2024-06-05 | Aptiv Technologies AG | Method for checking program execution of a microcontroller, external device, system and non-transitory computer readable medium |
CN110569675B (zh) * | 2019-09-18 | 2021-07-09 | 上海海事大学 | 一种基于区块链技术的多Agent交易信息保护方法 |
CN110661869B (zh) * | 2019-09-26 | 2022-08-12 | 苏州浪潮智能科技有限公司 | 一种节点上线方法、系统、装置、设备及计算机存储介质 |
CN110750313B (zh) * | 2019-10-21 | 2023-07-25 | 北京百度网讯科技有限公司 | 一种中间件的热加载方法、装置、电子设备及存储介质 |
CN112988883B (zh) * | 2019-12-16 | 2023-03-10 | 金篆信科有限责任公司 | 数据库的数据同步方法、装置以及存储介质 |
CN113051265A (zh) * | 2019-12-27 | 2021-06-29 | 中信百信银行股份有限公司 | 一种降低关系型数据库表结构变更所带来损耗的方法、装置、计算机设备、和可读存储介质 |
CN111563115B (zh) * | 2020-05-09 | 2023-06-02 | 北京奇艺世纪科技有限公司 | 一种分布式数据库中数据分布信息的统计方法及装置 |
CN113297232B (zh) * | 2020-07-31 | 2024-03-01 | 阿里巴巴集团控股有限公司 | 一种基于数据库分区的数据更新方法、装置及系统 |
CN114090043A (zh) * | 2021-11-24 | 2022-02-25 | 哈尔滨工业大学 | 通用的星载软件在轨动态重构方法、系统及介质 |
CN114490188A (zh) * | 2022-02-09 | 2022-05-13 | 北京奥星贝斯科技有限公司 | 同步主备数据库的方法及装置 |
CN114925145B (zh) * | 2022-05-25 | 2024-05-14 | 盐城天眼察微科技有限公司 | 数据存储方法、装置以及存储介质和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345502A (zh) * | 2013-07-01 | 2013-10-09 | 曙光信息产业(北京)有限公司 | 分布式数据库的事务处理方法和系统 |
CN106021030A (zh) * | 2016-05-30 | 2016-10-12 | 浪潮电子信息产业股份有限公司 | 一种数据库的系统、一种处理数据库故障的方法及装置 |
CN106383861A (zh) * | 2016-08-31 | 2017-02-08 | 网易(杭州)网络有限公司 | 一种用于数据库的数据同步方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9110847B2 (en) * | 2013-06-24 | 2015-08-18 | Sap Se | N to M host system copy |
-
2018
- 2018-07-11 CN CN201810758664.2A patent/CN108932338B/zh active Active
-
2019
- 2019-07-10 US US16/508,022 patent/US20200019543A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345502A (zh) * | 2013-07-01 | 2013-10-09 | 曙光信息产业(北京)有限公司 | 分布式数据库的事务处理方法和系统 |
CN106021030A (zh) * | 2016-05-30 | 2016-10-12 | 浪潮电子信息产业股份有限公司 | 一种数据库的系统、一种处理数据库故障的方法及装置 |
CN106383861A (zh) * | 2016-08-31 | 2017-02-08 | 网易(杭州)网络有限公司 | 一种用于数据库的数据同步方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20200019543A1 (en) | 2020-01-16 |
CN108932338A (zh) | 2018-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108932338B (zh) | 数据更新方法、装置、设备和介质 | |
US11768820B2 (en) | Elimination of log file synchronization delay at transaction commit time | |
US10402115B2 (en) | State machine abstraction for log-based consensus protocols | |
US9740582B2 (en) | System and method of failover recovery | |
CN111753013B (zh) | 分布式事务处理方法及装置 | |
US10180812B2 (en) | Consensus protocol enhancements for supporting flexible durability options | |
US8806264B2 (en) | Methods for detecting split brain in a distributed system | |
CN108021338B (zh) | 用于实现两层提交协议的系统和方法 | |
US20040010502A1 (en) | In-memory database for high performance, parallel transaction processing | |
CN115858236A (zh) | 一种数据备份方法和数据库集群 | |
US20100217857A1 (en) | Consolidating session information for a cluster of sessions in a coupled session environment | |
US9703634B2 (en) | Data recovery for a compute node in a heterogeneous database system | |
US20200104404A1 (en) | Seamless migration of distributed systems | |
CN110413687B (zh) | 基于节点互证校验的分布式事务故障处理方法及相关设备 | |
CN115617908A (zh) | 一种MySQL数据同步方法、装置、数据库终端、介质及系统 | |
US9563521B2 (en) | Data transfers between cluster instances with delayed log file flush | |
US10620872B2 (en) | Replicating data in a data storage system | |
CN112711596A (zh) | 多副本数据库系统、数据处理方法、电子设备以及计算机可读存储介质 | |
US12093139B2 (en) | Rolling back a database transaction | |
US9424261B2 (en) | Techniques to take clean database file snapshot in an online database | |
JP2015095015A (ja) | データ配置方法、データ配置プログラムおよび情報処理システム | |
US11334445B2 (en) | Using non-volatile memory to improve the availability of an in-memory database | |
CN116974983A (zh) | 数据处理方法、装置、计算机可读介质及电子设备 | |
US11188522B2 (en) | Streamlined database commit for synchronized nodes | |
CN112463887A (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 |