CN106776775B - 并发主从同步方法及装置 - Google Patents

并发主从同步方法及装置 Download PDF

Info

Publication number
CN106776775B
CN106776775B CN201611040280.4A CN201611040280A CN106776775B CN 106776775 B CN106776775 B CN 106776775B CN 201611040280 A CN201611040280 A CN 201611040280A CN 106776775 B CN106776775 B CN 106776775B
Authority
CN
China
Prior art keywords
data synchronization
data
slave
state
synchronization task
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
Application number
CN201611040280.4A
Other languages
English (en)
Other versions
CN106776775A (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.)
Beijing Qizhi Business Consulting Co ltd
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201611040280.4A priority Critical patent/CN106776775B/zh
Publication of CN106776775A publication Critical patent/CN106776775A/zh
Application granted granted Critical
Publication of CN106776775B publication Critical patent/CN106776775B/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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Abstract

本发明公开了一种并发主从同步方法及装置。所述方法包括:接收来自主数据库的数据同步任务,数据同步任务包括可并行执行的第一操作和需串行执行的第二操作;在从数据库处于第一状态下,将数据同步任务中的第一操作分发给多个第一线程中一个第一线程执行,由第二线程执行数据同步任务中的第二操作。上述方案可以利用从数据库的多个第一线程执行数据同步任务,提高了数据同步速度,克服了从数据库单线程执行数据同步任务造成的主数据库与从数据库中数据显著不同步问题,同时保证了在日志文件按照接收数据同步任务的顺序记录数据操作。

Description

并发主从同步方法及装置
技术领域
本发明涉及互联网技术领域,具体涉及一种并发主从同步方法及装置。
背景技术
分布式数据存储系统就是将数据分散存储在多台独立的设备上,也就是 说,针对一份数据,存储至N个数据库上,一般是存储至一个主数据库和多 个从数据库,其中,从数据库中的数据是与主数据库进行同步获得的。
现有技术中主数据库和从数据库之间的数据同步过程具体为,主数据库 接收到客户端写数据的请求后,将数据写入主数据库中,并将写数据操作记 录到主数据库的日志文件中。随后,主数据库向从数据库发送数据同步任务, 从数据库根据数据同步任务执行将数据写入从数据库的写数据操作,以及将 写数据操作记录到从数据库的日志文件中。在该数据同步过程中,从数据库 只有一个线程用于处理主数据库发送的数据同步任务。该线程接收来自主数 据库的数据同步任务,需要串行执行数据同步任务所涉及的写数据操作和写 日志操作。在短时间内数据同步任务过多的情况下,线程无法及时地处理数 据同步任务,造成从数据库同步效率低下的问题,导致出现主数据库和从数 据库的数据不一致的情况。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分 地解决上述问题的并发主从同步方法和相应的并发主从同步装置。
根据本发明的一个方面,提供了一种并发主从同步方法,其包括:
接收来自主数据库的数据同步任务,数据同步任务包括可并行执行的第 一操作和需串行执行的第二操作;
在从数据库处于第一状态下,将数据同步任务中的第一操作分发给多个 第一线程中一个第一线程执行,由第二线程执行数据同步任务中的第二操作。
根据本发明的另一方面,提供了一种并发主从同步装置,其包括:
接收模块,适于接收来自主数据库的数据同步任务,数据同步任务包括 可并行执行的第一操作和需串行执行的第二操作;
分发模块,适于在从数据库处于第一状态下,将数据同步任务中的第一 操作分发给多个并行处理模块中一个并行处理模块执行;
串行处理模块,适于在从数据库处于第一状态下,执行数据同步任务中 的第二操作;
多个并行处理模块,适于在从数据库处于第一状态下,执行数据同步任 务中的第一操作。
根据本发明提供的方案,接收来自主数据库的数据同步任务,数据同步 任务包括可并行执行的第一操作和需串行执行的第二操作;在从数据库处于 第一状态下,将数据同步任务中的第一操作分发给多个第一线程中一个第一 线程执行,由第二线程执行数据同步任务中的第二操作。上述方案可以利用 从数据库的多个第一线程执行数据同步任务,提高了数据同步速度,克服了 从数据库单线程执行数据同步任务造成的主数据库与从数据库中数据显著不 同步问题,由第二线程执行数据同步任务中的第二操作,保证了在日志文件 按照接收数据同步任务的顺序记录数据操作,从而在从数据库中数据出现丢 失等问题时,能够方便地根据日志文件中的写数据操作记录恢复从数据库的 数据。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技 术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它 目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本 领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的, 而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示 相同的部件。在附图中:
图1示出了根据本发明一个实施例的并发主从同步方法的流程示意图;
图2示出了根据本发明另一个实施例的并发主从同步方法的流程示意图;
图3示出了根据本发明一个实施例的并发主从同步装置的结构示意图;
图4示出了根据本发明另一个实施例的并发主从同步装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示 了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不 应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地 理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的并发主从同步方法的流程示意图。 如图1所示,该方法包括以下步骤:
步骤S100,接收来自主数据库的数据同步任务,数据同步任务包括可并 行执行的第一操作和需串行执行的第二操作。
数据写入主数据库后,主数据库需要将写入的数据同步给从数据库,因 此,主数据库向从数据库发送数据同步任务,而从数据库接收来自主数据库 的数据同步任务。
数据同步任务是根据写入主数据库的数据而生成的,也就是说针对写入 主数据库的任一数据都将生成相应的数据同步任务。其中,可并行执行的第 一操作为用于将数据写入从数据库的写数据操作,需串行执行的第二操作为 用于将写数据操作记录到从库日志文件中的写日志操作。
步骤S101,在从数据库处于第一状态下,将数据同步任务中的第一操作 分发给多个第一线程中一个第一线程执行,由第二线程执行数据同步任务中 的第二操作。
其中,第一状态可以为只读状态,从数据库处于只读状态下时,只允许 客户端读取从数据库的数据,而不允许客户端直接向从数据库写数据,此时, 可以将数据同步任务中的第一操作分发给多个第一线程中一个第一线程执 行,由第二线程执行数据同步任务中的第二操作。
根据本发明上述实施例提供的方法,接收来自主数据库的数据同步任务, 数据同步任务包括可并行执行的第一操作和需串行执行的第二操作;在从数 据库处于第一状态下,将数据同步任务中的第一操作分发给多个第一线程中 一个第一线程执行,由第二线程执行数据同步任务中的第二操作。上述方案 可以利用从数据库的多个第一线程执行数据同步任务,提高了数据同步速度, 克服了从数据库单线程执行数据同步任务造成的主数据库与从数据库中数据 显著不同步问题,由第二线程执行数据同步任务中的第二操作,保证了在日 志文件按照接收数据同步任务的顺序记录数据操作,从而在从数据库中数据 出现丢失等问题时,能够方便地根据日志文件中的写数据操作记录恢复从数 据库的数据。
图2示出了根据本发明另一个实施例的并发主从同步方法的流程示意图。 如图2所示,该方法包括以下步骤:
步骤S200,接收来自主数据库的数据同步任务,数据同步任务包括可并 行执行的第一操作和需串行执行的第二操作。
数据写入主数据库后,主数据库需要将写入的数据同步给从数据库,因 此,主数据库向从数据库发送数据同步任务,而从数据库接收来自主数据库 的数据同步任务。
数据同步任务是根据写入主数据库的数据而生成的,也就是说针对写入 主数据库的任一数据都将生成相应的数据同步任务。其中,可并行执行的第 一操作为用于将数据写入从数据库的写数据操作,需串行执行的第二操作为 用于将写数据操作记录到从库日志文件中的写日志操作。其中,日志文件用 于记录数据写操作记录,以在从数据库中数据出现丢失等问题时,能够方便 地根据日志文件中的写数据操作记录恢复从数据库的数据。因此,要求记录 到日志文件中的写数据操作记录是按照接收数据同步任务的顺序执行的。
步骤S201,在从数据库处于第一状态下,依据负载均衡策略,从多个第 一线程选择一个第一线程。
第一状态可以为只读状态,从数据库处于只读状态下时,只允许客户端 读取从数据库的数据,而不允许客户端直接向从数据库写数据,在从数据库 处于只读状态下时,依据负载均衡策略,从多个第一线程选择一个第一线程, 其中,负载均衡策略指多个第一线程的业务负载压力均衡,而不会出现有些 第一线程的业务负载压力很大,而有些第一线程的业务负载压力很小的情况。
具体地,在接收到来自主数据库的数据同步任务后,从数据库处于第一 状态下时,需要从多个第一线程中选择一个合适的第一线程来执行第一操作, 选择第一线程的依据是负载均衡策略,目的是为了平衡各个第一线程之间的 业务负载压力,使得各个第一线程的业务负载压力基本均衡。
步骤S202,将数据同步任务中的第一操作分发给所选择的第一线程执行, 由第二线程执行数据同步任务中的第二操作。
在依据负载均衡策略从多个第一线程选择了一个第一线程后,将数据同 步任务中的第一操作分发给所选择的第一线程执行,数据同步任务中的第二 操作由第二线程执行。
从数据库接收的数据同步任务可以是多个,也就是说,可以依据负载均 衡策略选择多个第一线程执行数据同步任务的第一操作,但是多个数据同步 任务的第二操作还只由第二线程执行。
在本发明实施例中,可以有一用于接收数据同步任务的线程,由该线程 将数据任务中的第一操作分发给第一线程,由第一线程执行第一操作,将数 据任务中的第二操作分发给第二线程,由第二线程执行第二操作;当然,用 于接收数据同步任务的线程也可以是第二线程,由第二线程接收数据同步任 务,然后,第二线程将数据任务中的第一操作分发给第一线程,由第一线程 执行第一操作,第二线程本身执行数据同步任务中的第二操作。这里不做具 体限定,本领域技术人员可以根据实际需要进行设定。
此外,在从数据库处于第一状态下,针对不同数据,各个第一线程可以 并行执行将数据写入从数据库的写数据操作,而不会对写入从数据库的数据 造成任何影响,然而,针对同一数据的将数据写入从数据库的写数据操作还 需要分发给同一个第一线程,也就是说,针对同一数据,将数据写入从数据 库的写数据操作也应该是由第一线程串行执行的,目的是防止分发给不同的 第一线程处理,导致从数据库的数据与主数据库的数据不一致的情况出现。
步骤S203,在从数据库处于第二状态下,按照接收数据同步任务的顺序, 为数据同步任务设置令牌。
第二状态为非只读状态,从数据库处于非只读状态下时,不仅允许客户 端读取从数据库的数据,还允许客户端直接向从数据库写数据,在从数据库 处于非只读状态下时,按照接收数据同步任务的顺序,为数据同步任务设置 令牌。
具体地,令牌标示了数据同步任务的执行顺序,只有排序在前的令牌对 应的数据同步任务被执行后,才可以执行排序在后的令牌对应的数据同步任 务。
主数据库可以实时将数据同步任务发送给从数据库,也就是说,从数据 库可以不断地接收到主数据库发送的数据同步任务,主数据库是按照数据写 入主数据库的顺序向从数据库发送数据同步任务,因此,在为数据同步任务 设置令牌时,也需要按照接收数据同步任务的顺序来设置令牌。举例说明, 主数据库顺序向从数据库发送了4个数据同步任务,分别为:Set a=1;Set b=2; Set c=1;Set a=4,那么,从数据库接收到的数据同步任务顺序为:Set a=1;Set b=2;Set c=1;Set a=4,这样,从数据库可以按照接收数据同步任务的顺序,为 数据同步任务设置令牌,例如,分别设置4个数据同步任务的令牌为1、2、3、 4。
这样,只有在令牌1对应的数据同步任务被执行完成后,才可以执行令 牌2对应的数据同步任务,若令牌1对应的数据同步任务还未被执行,则不 能执行令牌2对应的数据同步任务,同理,以此类推,执行令牌3和4对应 的数据同步任务。在本发明实施例中,为数据同步任务设置令牌,保证了在 数据同步过程中不会出现同步至从数据库的数据与写入到主数据库的数据不 一致的缺陷。
步骤S204,将设置有令牌的数据同步任务分发给多个第一线程中一个第 一线程。
具体地,可以依据负载均衡策略,从多个第一线程选择一个第一线程, 将设置于令牌的数据同步任务分发给所选择的第一线程,由该第一线程来执 行数据同步任务。
在从数据库处于第二状态下,各个第一线程之间执行的第一操作为并行 操作;各个第一线程之间执行的第二操作为串行操作。针对不同数据,各个 第一线程可以并行执行将数据写入从数据库的写数据操作,而不会对写入从 数据库的数据造成任何影响,各个第一线程在执行将写数据操作记录到从库 日志文件中的写日志操作时,需要串行执行。
此外,针对同一数据的数据同步任务分发给同一第一线程,也就是说, 针对同一数据,将数据写入从数据库的写数据操作也应该是由线程串行执行 的,目的是防止分发给不同的线程处理,导致从数据库的数据与主数据的数 据不一致的情况出现。
其中,每个第一线程分别定义了可以执行并行操作和串行操作的函数, 举例说明,执行并行操作的函数为function1,执行串行操作的函数为 function2,也就是说,将数据写入从数据库的写数据操作可以由function1执 行、将写数据操作记录到日志文件中的写日志操作可以由function2执行,第 一线程在接收到数据同步任务后,将会由会function1、function2来执行数据 同步任务。
步骤S205,由该第一线程执行数据同步任务中的第一操作。
具体地,第一线程中定义的函数function1,将执行数据同步任务中的第 一操作。
举例说明,针对于数据同步任务:Set a=1;Set b=2;Set c=1;Set a=4,可以依据负载均衡策略将数据同步任务Set a=1;Set a=4分发给第一线程1,数据同 步任务Set b=2分发给第一线程2,数据同步任务Set c=1分发给第一线程3, 其中,对于数据同步任务中的将数据写入从数据库的写数据操作,第一线程1、 2、3可以并行执行,而将写数据操作记录到日志文件中的写日志操作则需要 第一线程1、2、3串行执行。线程1、2、3在执行将写数据操作记录到日志 文件中的写日志操作时,需要根据令牌来执行,具体地,可以采用如下方法 步骤来执行将写数据操作记录到日志文件中的写日志操作。
步骤S206,判断顺序排在令牌前一位的令牌对应的数据同步任务的第二 操作是否执行完成,若是,则执行步骤S207;若否,则执行步骤S208。
其中,令牌的排列顺序与接收数据同步任务的顺序一致。
具体地,function2在执行将写数据操作记录到日志文件中的写日志操作 之前,还需要判断顺序排在令牌前一位的令牌对应的数据同步任务的第二操 作是否执行完成,函数function2的代码能够实现判断功能,这里判断顺序排 在令牌前一位的令牌对应的数据同步任务的第二操作是否执行完成主要是为 了保证写日志操作是按照接收数据同步任务的顺序执行的,保证在从数据库 中数据出现丢失等问题时,能够方便地根据日志文件中的写数据操作记录恢 复从数据库的数据。
举例说明,从数据库为数据同步任务:Set a=1;Set b=2;Set c=1;Set a=4,分别设置令牌为1、2、3、4。第一线程2在执行将Set b=2记录到日志文件 中时,需要判断令牌1对应的数据同步任务是否执行完成,同理,第一线程3 在执行将Set c=1记录到日志文件中时,需要判断令牌1、2对应的数据同步 任务是否执行完成,同样地,第一线程1在执行将Set a=4记录到日志文件中 时,需要判断令牌1、2、3对应的数据同步任务是否执行完成。
步骤S207,由该第一线程执行数据同步任务中的第二操作。
若判断出顺序排在令牌前一位的令牌对应的数据同步任务的第二操作执 行完成,则该第一线程可以执行用于将写数据操作记录到日志文件中的写日 志操作。
步骤S208,继续等待,直至顺序排在令牌前一位的令牌对应的数据同步 任务的第二操作执行完成。
若判断出顺序排在令牌前一位的令牌对应的数据同步任务的第二操作未 执行完成,则需要继续等待,等待顺序排在令牌前一位的令牌对应的数据同 步任务的第二操作执行完成后,才执行该令牌对应的数据同步任务的第二操 作。
在本发明实施例中,可以切换从数据库的状态,例如将从数据库的状态 由第一状态切换为第二状态,或者由第二状态切换为第一状态,从数据库的 状态决定着主从同步的方案,因此,需要对从数据库的状态进行判断:
具体地,判断从数据库是否为从第二状态切换为第一状态,若是,判断 已设置令牌的数据同步任务是否执行完成,若否,则等待已设置令牌的数据 同步任务执行完成,若是,则执行步骤S201。
判断从数据库是否为从第二状态切换为第一状态,就是判断从数据库是 否为从非只读状态切换为只读状态,从数据库状态的变化,影响到执行数据 同步任务的线程。
若判断出从数据库从第二状态切换为第一状态,还需要判断一下已设置 令牌的数据同步任务是否执行完成,主要是为了判断由第一线程执行第二操 作时,第一线程是否已执行完成分发的第二操作。
若判断出已设置令牌的数据同步任务未执行完成,则需要等待已设置令 牌的数据同步任务执行完成,在已设置令牌的数据同步任务执行完成后,可 以执行步骤S201。
另外,还可以判断从数据库是否为从第一状态切换为第二状态,若是, 则判断第二线程是否执行完所有第二操作,若否,则等待第二线程执行完所 有第二操作,若是,则执行步骤S203。
判断从数据库是否为从第一状态切换为第二状态,就是判断从数据库是 否为从只读状态切换为非只读状态,从数据库状态的变化,影响到执行数据 同步任务的线程。
若判断出从数据库从第一状态切换为第二状态,还需要判断第二线程是 否执行完所有第二操作,只有在第二线程执行完所有的第二操作后,才可以 切换到由第一线程执行第二操作。
若判断出第二线程未执行完所有第二操作,则需要等待第二线程执行完 所有第二操作,在第二线程执行完所有第二操作后,可以执行步骤S203。
根据本发明上述实施例提供的方法,在从数据库处于第一状态下,将数 据同步任务中的第一操作分发给多个第一线程中一个第一线程执行,提高了 数据同步速度,克服了从数据库单线程执行数据同步任务造成的主数据库与 从数据库中数据显著不同步问题,由第二线程执行数据同步任务中的第二操 作,保证了在日志文件按照接收数据同步任务的顺序记录数据操作,从而在 从数据库中数据出现丢失等问题时,能够方便地根据日志文件中的写数据操 作记录恢复从数据库的数据;在从数据库处于第二状态下,通过设置令牌来 限定数据同步任务的执行顺序,并依据令牌串行执行数据同步任务,保证与 主数据库的数据一致。
图3示出了根据本发明一个实施例的并发主从同步装置的结构示意图。 如图3所示,该装置包括:接收模块300、分发模块301、串行处理模块302 和多个并行处理模块303。
接收模块300,适于接收来自主数据库的数据同步任务,数据同步任务包 括可并行执行的第一操作和需串行执行的第二操作。
分发模块301,适于在从数据库处于第一状态下,将数据同步任务中的第 一操作分发给多个并行处理模块中一个并行处理模块执行。
串行处理模块302,适于在从数据库处于第一状态下,执行数据同步任务 中的第二操作。
多个并行处理模块303,适于在从数据库处于第一状态下,执行数据同步 任务中的第一操作。
根据本发明上述实施例提供的装置,接收来自主数据库的数据同步任务, 数据同步任务包括可并行执行的第一操作和需串行执行的第二操作;在从数 据库处于第一状态下,将数据同步任务中的第一操作分发给多个第一线程中 一个第一线程执行,由第二线程执行数据同步任务中的第二操作。上述方案 可以利用从数据库的多个第一线程执行数据同步任务,提高了数据同步速度, 克服了从数据库单线程执行数据同步任务造成的主数据库与从数据库中数据 显著不同步问题,由第二线程执行数据同步任务中的第二操作,保证了在日 志文件按照接收数据同步任务的顺序记录数据操作,从而在从数据库中数据 出现丢失等问题时,能够方便地根据日志文件中的写数据操作记录恢复从数 据库的数据。
图4示出了根据本发明另一个实施例的并发主从同步装置的结构示意图。 如图4所示,该装置包括:接收模块400、分发模块401、串行处理模块402 和多个并行处理模块403。
接收模块400,适于接收来自主数据库的数据同步任务,数据同步任务包 括可并行执行的第一操作和需串行执行的第二操作。
其中,第一操作为用于将数据写入从数据库的写数据操作,第二操作为 用于将写数据操作记录到从库日志文件中的写日志操作。
分发模块401,适于在从数据库处于第一状态下,依据负载均衡策略,从 多个并行处理模块选择一个并行处理模块;将数据同步任务中的第一操作分 发给所选择的并行处理模块执行。其中,第一状态为只读状态。
在本发明实施例中,分发模块401进一步适于:在从数据库处于第一状 态下,针对同一数据的数据同步任务中的第一操作分发给同一第一线程。
串行处理模块402,适于在从数据库处于第一状态下,执行数据同步任务 中的第二操作;
多个并行处理模块403,适于在从数据库处于第一状态下,执行数据同步 任务中的第一操作。
此外,该并发主从同步装置还包括:设置模块404,适于在从数据库处于 第二状态下,按照接收数据同步任务的顺序,为数据同步任务设置令牌。其 中,第二状态为非只读状态。
分发模块401还适于:在从数据库处于第二状态下,将设置有令牌的数 据同步任务分发给多个并行处理模块中一个并行处理模块。
更具体地,分发模块401进一步适于:依据负载均衡策略,从多个并行 处理模块选择一个并行处理模块;将设置有令牌的数据同步任务分发给所选 择的并行处理模块。
在本发明实施例中,分发模块401进一步适于:在从数据库处于第二状 态下,针对同一数据的数据同步任务分发给同一第一线程。
并行处理模块403还适于:在从数据库处于第二状态下,执行数据同步 任务中的第一操作和第二操作。
其中,在从数据库处于第二状态下,各个并行处理模块之间执行的第一 操作为并行操作;各个并行处理模块之间执行的第二操作为串行操作。
另外,并发主从同步装置还包括:第一判断模块405,适于判断顺序排在 令牌前一位的令牌对应的数据同步任务的第二操作是否执行完成;其中,令 牌的排列顺序与接收数据同步任务的顺序一致;若否,则继续等待,直至顺 序排在令牌前一位的令牌对应的数据同步任务的第二操作执行完成。
该并发主从同步装置还包括:第二判断模块,适于判断从数据库是否为 从第二状态切换为第一状态;若是,判断已设置令牌的数据同步任务是否执 行完成;
分发模块进一步适于:若已设置令牌的数据同步任务未执行完成,在将 数据同步任务中的第一操作分发给多个并行处理模块中一个并行处理模块执 行之前,等待已设置令牌的数据同步任务执行完成。
该并发主从同步装置还包括:第三判断模块,适于判断从数据库是否为 从第一状态切换为第二状态;若是,则判断第二线程是否执行完所有第二操 作;
设置模块进一步适于:若第二线程未执行完所有第二操作,在按照接收 数据同步任务的顺序,为数据同步任务设置令牌之前,等待串行处理模块执 行完所有第二操作。
根据本发明上述实施例提供的装置,在从数据库处于第一状态下,将数 据同步任务中的第一操作分发给多个第一线程中一个第一线程执行,提高了 数据同步速度,克服了从数据库单线程执行数据同步任务造成的主数据库与 从数据库中数据显著不同步问题,由第二线程执行数据同步任务中的第二操 作,保证了在日志文件按照接收数据同步任务的顺序记录数据操作,从而在 从数据库中数据出现丢失等问题时,能够方便地根据日志文件中的写数据操 作记录恢复从数据库的数据;在从数据库处于第二状态下,通过设置令牌来 限定数据同步任务的执行顺序,并依据令牌串行执行数据同步任务,保证与 主数据库的数据一致。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固 有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述, 构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定 编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容, 并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发 明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详 细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或 多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被 一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的 方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中 所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的 那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具 体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自 适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以 把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可 以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者 单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴 随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或 者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴 随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相 似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它 实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合 意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利 要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器 上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理 解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本 发明实施例的并发主从同步设备中的一些或者全部部件的一些或者全部功 能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发 明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的 形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供, 或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并 且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施 例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求 的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元 件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借 助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列 举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬 件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可 将这些单词解释为名称。

Claims (16)

1.一种并发主从同步方法,其包括:
接收来自主数据库的数据同步任务,所述数据同步任务包括可并行执行的第一操作和需串行执行的第二操作;
在从数据库处于第一状态下,将数据同步任务中的第一操作分发给多个第一线程中一个第一线程执行,由第二线程执行数据同步任务中的第二操作;
在从数据库处于第二状态下,按照接收数据同步任务的顺序,为所述数据同步任务设置令牌;
将设置有令牌的数据同步任务分发给多个第一线程中一个第一线程,由该第一线程执行所述数据同步任务中的第一操作和第二操作;
其中,所述将数据同步任务中的第一操作分发给多个第一线程中一个第一线程执行进一步包括:
依据负载均衡策略,从多个第一线程选择一个第一线程;
将所述数据同步任务中的第一操作分发给所选择的第一线程执行;
其中,所述第一操作为用于将数据写入从数据库的写数据操作,所述第二操作为用于将写数据操作记录到从库日志文件中的写日志操作;
其中,所述第一状态为只读状态,所述第二状态为非只读状态。
2.根据权利要求1所述的并发主从同步方法,其中,所述将设置有令牌的数据同步任务分发给多个第一线程中一个第一线程进一步包括:
依据负载均衡策略,从多个第一线程选择一个第一线程;
将设置有令牌的数据同步任务分发给所选择的第一线程。
3.根据权利要求1所述的并发主从同步方法,其中,在从数据库处于第二状态下,各个第一线程之间执行的所述第一操作为并行操作;各个第一线程之间执行的所述第二操作为串行操作。
4.根据权利要求1所述的并发主从同步方法,其中,在由该第一线程执行所述数据同步任务中的第二操作之前,所述方法还包括:
判断顺序排在所述令牌前一位的令牌对应的数据同步任务的第二操作是否执行完成;其中,所述令牌的排列顺序与接收数据同步任务的顺序一致;
若否,则继续等待,直至顺序排在所述令牌前一位的令牌对应的数据同步任务的第二操作执行完成。
5.根据权利要求1所述的并发主从同步方法,其中,所述方法进一步包括:
判断所述从数据库是否为从第二状态切换为第一状态;
若是,判断已设置令牌的数据同步任务是否执行完成;
若已设置令牌的数据同步任务未执行完成,则在所述将数据同步任务中的第一操作分发给多个第一线程中一个第一线程执行,由第二线程执行数据同步任务中的第二操作之前,所述方法还包括:等待已设置令牌的数据同步任务执行完成。
6.根据权利要求1所述的并发主从同步方法,其中,所述方法进一步包括:
判断所述从数据库是否为从第一状态切换为第二状态;
若是,则判断第二线程是否执行完所有第二操作;
若第二线程未执行完所有第二操作,则在所述按照接收数据同步任务的顺序,为所述数据同步任务设置令牌之前,所述方法还包括:等待第二线程执行完所有第二操作。
7.根据权利要求1所述的并发主从同步方法,其中,在从数据库处于第一状态下,针对同一数据的数据同步任务中的第一操作分发给同一第一线程。
8.根据权利要求1所述的并发主从同步方法,其中,在从数据库处于第二状态下,针对同一数据的数据同步任务分发给同一第一线程。
9.一种并发主从同步装置,其包括:
接收模块,适于接收来自主数据库的数据同步任务,所述数据同步任务包括可并行执行的第一操作和需串行执行的第二操作;
分发模块,适于在从数据库处于第一状态下,将数据同步任务中的第一操作分发给多个并行处理模块中一个并行处理模块执行;
串行处理模块,适于在从数据库处于第一状态下,执行数据同步任务中的第二操作;
多个并行处理模块,适于在从数据库处于第一状态下,执行数据同步任务中的第一操作;
设置模块,适于在从数据库处于第二状态下,按照接收数据同步任务的顺序,为所述数据同步任务设置令牌;
所述分发模块还适于:在从数据库处于第二状态下,将设置有令牌的数据同步任务分发给多个并行处理模块中一个并行处理模块;
所述并行处理模块还适于:在从数据库处于第二状态下,执行所述数据同步任务中的第一操作和第二操作;
其中,所述分发模块进一步适于:依据负载均衡策略,从多个并行处理模块选择一个并行处理模块;将所述数据同步任务中的第一操作分发给所选择的并行处理模块执行;
其中,所述第一操作为用于将数据写入从数据库的写数据操作,所述第二操作为用于将写数据操作记录到从库日志文件中的写日志操作;
其中,所述第一状态为只读状态,所述第二状态为非只读状态。
10.根据权利要求9所述的并发主从同步装置,其中,所述分发模块进一步适于:依据负载均衡策略,从多个并行处理模块选择一个并行处理模块;将设置有令牌的数据同步任务分发给所选择的并行处理模块。
11.根据权利要求9所述的并发主从同步装置,其中,在从数据库处于第二状态下,各个并行处理模块之间执行的所述第一操作为并行操作;各个并行处理模块之间执行的所述第二操作为串行操作。
12.根据权利要求9所述的并发主从同步装置,其中,所述装置还包括:
第一判断模块,适于判断顺序排在所述令牌前一位的令牌对应的数据同步任务的第二操作是否执行完成;其中,所述令牌的排列顺序与接收数据同步任务的顺序一致;若否,则继续等待,直至顺序排在所述令牌前一位的令牌对应的数据同步任务的第二操作执行完成。
13.根据权利要求9所述的并发主从同步装置,其中,还包括:
第二判断模块,适于判断所述从数据库是否为从第二状态切换为第一状态;若是,判断已设置令牌的数据同步任务是否执行完成;
所述分发模块进一步适于:若已设置令牌的数据同步任务未执行完成,在所述将数据同步任务中的第一操作分发给多个并行处理模块中一个并行处理模块执行之前,等待已设置令牌的数据同步任务执行完成。
14.根据权利要求9所述的并发主从同步装置,其中,还包括:
第三判断模块,适于判断所述从数据库是否为从第一状态切换为第二状态;若是,则判断第二线程是否执行完所有第二操作;
所述设置模块进一步适于:若第二线程未执行完所有第二操作,在所述按照接收数据同步任务的顺序,为所述数据同步任务设置令牌之前,等待串行处理模块执行完所有第二操作。
15.根据权利要求9所述的并发主从同步装置,其中,所述分发模块进一步适于:在从数据库处于第一状态下,针对同一数据的数据同步任务中的第一操作分发给同一第一线程。
16.根据权利要求9所述的并发主从同步装置,其中,所述分发模块进一步适于:在从数据库处于第二状态下,针对同一数据的数据同步任务分发给同一第一线程。
CN201611040280.4A 2016-11-11 2016-11-11 并发主从同步方法及装置 Active CN106776775B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611040280.4A CN106776775B (zh) 2016-11-11 2016-11-11 并发主从同步方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611040280.4A CN106776775B (zh) 2016-11-11 2016-11-11 并发主从同步方法及装置

Publications (2)

Publication Number Publication Date
CN106776775A CN106776775A (zh) 2017-05-31
CN106776775B true CN106776775B (zh) 2021-05-07

Family

ID=58975158

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611040280.4A Active CN106776775B (zh) 2016-11-11 2016-11-11 并发主从同步方法及装置

Country Status (1)

Country Link
CN (1) CN106776775B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108170526B (zh) * 2017-12-06 2021-04-20 北京像素软件科技股份有限公司 负载能力优化方法、装置、服务器及可读存储介质
CN113934745A (zh) * 2020-06-29 2022-01-14 中兴通讯股份有限公司 数据同步处理方法、电子设备以及存储介质
CN111930781A (zh) * 2020-07-24 2020-11-13 北京金山云网络技术有限公司 对缓存数据库的数据请求的处理方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101082870A (zh) * 2007-07-20 2007-12-05 中兴通讯股份有限公司 一种限制shell脚本并行执行的方法
CN101625655A (zh) * 2009-08-20 2010-01-13 华中科技大学 一种内存数据库的并行恢复方法
CN103744906A (zh) * 2013-12-26 2014-04-23 乐视网信息技术(北京)股份有限公司 一种数据同步系统、方法及装置
CN104699541A (zh) * 2015-03-30 2015-06-10 北京奇虎科技有限公司 同步数据的方法、装置、数据传输组件及系统
CN104731956A (zh) * 2015-04-02 2015-06-24 北京奇虎科技有限公司 同步数据的方法、系统及相关数据库
CN105426373A (zh) * 2014-09-19 2016-03-23 阿里巴巴集团控股有限公司 一种数据库同步方法与设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101082870A (zh) * 2007-07-20 2007-12-05 中兴通讯股份有限公司 一种限制shell脚本并行执行的方法
CN101625655A (zh) * 2009-08-20 2010-01-13 华中科技大学 一种内存数据库的并行恢复方法
CN103744906A (zh) * 2013-12-26 2014-04-23 乐视网信息技术(北京)股份有限公司 一种数据同步系统、方法及装置
CN105426373A (zh) * 2014-09-19 2016-03-23 阿里巴巴集团控股有限公司 一种数据库同步方法与设备
CN104699541A (zh) * 2015-03-30 2015-06-10 北京奇虎科技有限公司 同步数据的方法、装置、数据传输组件及系统
CN104731956A (zh) * 2015-04-02 2015-06-24 北京奇虎科技有限公司 同步数据的方法、系统及相关数据库

Also Published As

Publication number Publication date
CN106776775A (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
CN107391628B (zh) 数据同步方法及装置
US11003489B2 (en) Cause exception message broadcast between processing cores of a GPU in response to indication of exception event
EP3678346A1 (en) Blockchain smart contract verification method and apparatus, and storage medium
CN102834807B (zh) 多处理器系统负载均衡的方法和装置
CN106776775B (zh) 并发主从同步方法及装置
CN108183957B (zh) 主从同步方法及装置
EP0061096A1 (en) Data processing system for parallel processing
US20080028413A1 (en) Concurrent physical processor reassignment
CN102411512B (zh) 对多个辅助硬件线程进行可缩放状态跟踪的方法和系统
CN107391634B (zh) 数据迁移方法及装置
US20080005533A1 (en) A method to reduce the number of load instructions searched by stores and snoops in an out-of-order processor
WO2017101642A1 (zh) 分布式系统的数据节点升级方法及装置
US7822948B2 (en) Apparatus, system, and method for discontiguous multiple issue of instructions
US9513923B2 (en) System and method for context migration across CPU threads
CN106897123B (zh) 数据库操作方法及装置
CN109656868B (zh) 一种cpu与gpu之间的内存数据转移方法
US20150278299A1 (en) External merge sort method and device, and distributed processing device for external merge sort
CN109614119A (zh) 一种烧录方法、装置、电子设备及介质
KR102116096B1 (ko) 다중시스템 및 이의 부팅 방법
CN113051071A (zh) 命令提交方法和装置、命令读取方法和装置、电子设备
CN104142802A (zh) 存储器控制设备和方法
US7647532B2 (en) Trace controller, microprocessor, and trace control method
CN109800110A (zh) 数据备份方法、系统及电子设备、存储介质和备份装置
CN106775796B (zh) 一种固件升级方法、装置及系统
CN105808318B (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
CP03 Change of name, title or address

Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee after: Beijing Qizhi Business Consulting Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

CP03 Change of name, title or address
TR01 Transfer of patent right

Effective date of registration: 20240112

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Beijing Qizhi Business Consulting Co.,Ltd.

TR01 Transfer of patent right