CN109062731B - 一种数据库切换时的幂等控制方法和装置 - Google Patents

一种数据库切换时的幂等控制方法和装置 Download PDF

Info

Publication number
CN109062731B
CN109062731B CN201810775856.4A CN201810775856A CN109062731B CN 109062731 B CN109062731 B CN 109062731B CN 201810775856 A CN201810775856 A CN 201810775856A CN 109062731 B CN109062731 B CN 109062731B
Authority
CN
China
Prior art keywords
write data
write
data
writing
service
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
CN201810775856.4A
Other languages
English (en)
Other versions
CN109062731A (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.)
Advanced Nova Technology Singapore Holdings Ltd
Original Assignee
Advanced New 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 Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Priority to CN201810775856.4A priority Critical patent/CN109062731B/zh
Publication of CN109062731A publication Critical patent/CN109062731A/zh
Application granted granted Critical
Publication of CN109062731B publication Critical patent/CN109062731B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例提供一种数据库切换时的幂等控制方法和装置,其中,所述方法包括:接收业务写请求,所述业务写请求用于请求向数据库中写入数据;将所述业务写请求对应的写数据写入主写数据库和缓存;执行写数据库的切换,由主写数据库切换到备写数据库,所述备写数据库用于在主写数据库故障时负责写入数据;当再次接收到业务写请求时,若所述缓存中不存在所述再次接收的业务写请求对应的写数据,将所述写数据写入所述备写数据库。

Description

一种数据库切换时的幂等控制方法和装置
技术领域
本公开涉及计算机技术领域,特别涉及一种数据库切换时的幂等控制方法和装置。
背景技术
在大型的架构和平台系统中,为了保证数据库的高可用性,一般采取FO(FailOver,故障切换)思想,即当主写数据库宕机的情况下,通过快速切换业务写到Failover库(FO库,可以认为是主写数据库的备份,相当于一种备写数据库)上,保证业务的连续性。
但是,在主写数据库故障的瞬间,往往幂等是控制不住的。例如,在依据读数据库中的数据判断写请求是否重复的机制中,如果主写数据库到读数据库的数据同步存在一定的时间延迟(2ms~2s),当主写数据库宕机的瞬间,这个时间段内的数据尚未同步到读数据库,所以读数据库会存在对这段时间内数据的丢失。那么,如果由于网络或者自身原因导致这段时间内的数据的重发即重复写操作请求,由于读数据库不存在这些数据,就不会被识别为重复请求,而被写入到FO库,从而造成幂等失效。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种数据库切换时的幂等控制方法和装置,以实现在数据库切换时仍然保证幂等。
具体地,本说明书一个或多个实施例是通过如下技术方案实现的:
第一方面,提供一种数据库切换时的幂等控制方法,所述方法包括:
接收业务写请求,所述业务写请求用于请求向数据库中写入数据;
将所述业务写请求对应的写数据写入主写数据库和缓存;
执行写数据库的切换,由主写数据库切换到备写数据库,所述备写数据库用于在主写数据库故障时负责写入数据;
当再次接收到业务写请求时,若所述缓存中不存在所述再次接收的业务写请求对应的写数据,将所述写数据写入所述备写数据库。
第二方面,提供一种数据库切换时的幂等控制装置,所述装置包括:
请求接收模块,用于接收业务写请求,所述业务写请求用于请求向数据库中写入数据;
写入处理模块,用于将业务写请求对应的写数据写入主写数据库和缓存;
切换处理模块,用于执行写数据库的切换,由主写数据库切换到备写数据库,所述备写数据库用于在主写数据库故障时负责写入数据;
幂等判断模块,用于当再次接收到业务写请求时,若所述缓存中不存在所述再次接收的业务写请求对应的写数据,则由写入处理模块将所述写数据写入所述备写数据库。
第三方面,提供一种数据库切换时的幂等控制设备,所述设备包括存储器、处理器,以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行指令时实现以下步骤:
接收业务写请求,所述业务写请求用于请求向数据库中写入数据;
将所述业务写请求对应的写数据写入主写数据库和缓存;
执行写数据库的切换,由主写数据库切换到备写数据库,所述备写数据库用于在主写数据库故障时负责写入数据;
当再次接收到业务写请求时,若所述缓存中不存在所述再次接收的业务写请求对应的写数据,将所述写数据写入所述备写数据库。
本说明书一个或多个实施例的数据库切换时的幂等控制方法和装置,通过将写入主写数据库的数据也同步写入到缓存中,使得在数据库切换时,尽管读库存在数据丢失,也可以通过缓存的存储数据实现幂等控制,保证了在数据库切换时的幂等。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提供的业务系统架构;
图2为本说明书一个或多个实施例提供的数据库切换时的幂等控制方法;
图3为本说明书一个或多个实施例提供的幂等控制方法;
图4为本说明书一个或多个实施例提供的数据库切换时的幂等控制装置。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
图1示例了本说明书至少一个实施例的业务系统架构,如图1所示,应用系统11可以接收到业务写请求,例如,该请求可以是请求写入一笔交易的交易数据,或者写入新用户的注册数据。该待写入的数据可以称为“写数据”。应用系统11可以将写数据写入主写数据库12中,主写数据库12可以根据应用系统11发送的写请求将写数据写入在数据库中。
图1中的读数据库13可以承担应用系统11的读请求,该读数据库13中的数据可以是由主写数据库12同步过来,并且通常可以有2ms~2s的时间延迟。并且,读数据库13还可以有一个作用,即当接收到业务写请求时可以通过查看读数据库来判断是否发生数据重复写,从而进行幂等控制。此外,FO库14相当于一个备写数据库,当主写数据库12故障宕机时,接替主写数据库12接收应用系统发送的写请求,将写数据写入在FO库14中。
当主写数据库12宕机时,由于主写数据库12到读数据库13的数据同步存在一定的时间延迟(2ms~2s),所以会导致读数据库13存在一定的数据丢失。而如果这部分丢失的数据又产生了对应的重写请求,比如,网络原因或者其他原因导致用户又发送了一次对这部分数据的业务写请求。此时,在进行幂等判断时,如果只通过查看读数据库13中的存储数据判断该请求是否重复,将会出现判断错误,因为读数据库13没有这部分数据,就可能会出现重复写入,例如,在主写数据库12已经写入,又在FO库14写入了一次,出现重复。
为此,本说明书至少一个实施例提供了一种数据库切换时的幂等控制方法,以在数据库切换时仍然保证幂等。图2示例了该方法的处理:
在步骤200中,接收业务写请求。
本步骤中,应用系统11可以接收到业务写请求,例如,该请求可以是请求写入一笔交易的交易数据,或者写入新用户的注册数据。该待写入的数据可以称为“写数据”。
在步骤202中,将所述业务写请求对应的写数据写入主写数据库和缓存,并将所述写数据由主写数据库同步到读数据库。
本步骤中,应用系统11可以将写数据写入到主写数据库12,并同步到读数据库13,并且,如图1所示,应用系统11还将该写数据写入到缓存15中。例如,该缓存15可以是tair缓存,tair缓存是一个Key/Value结构数据的存储结构,它默认支持基于内存和文件的两种存储方式,分别与缓存和持久化存储对应,这种结构的缓存可以加快后续步骤的查询速度。
通过将业务写请求对应的写数据也写入到缓存15中,使得缓存15中存储了与主写数据库12中一致的数据,在主写数据库12故障时,即使未能及时同步到读数据库13,也能够由缓存15中获得与主写数据库12一致的数据。
在步骤204中,将写业务由主写数据库切换到备写数据库,所述备写数据库用于在主写数据库故障时负责写入数据。
例如,备写数据库可以是上述的FO库14。
当应用系统11检测到主写数据库12故障时,或者,接收到切换指示时,可以将写业务由主写数据库12切换到FO库14。比如,当应用系统11再接收到业务写请求时,不再是向主写数据库12写入数据,而是向FO库14写入数据。
在步骤206中,当再次接收到业务写请求时,若所述缓存不存在所述再次接收的业务写请求对应的写数据,将写数据写入备写数据库。
本步骤中,假设在发生了数据库切换后,应用系统11又接收到了业务写请求,例如,请求写入用户的注册数据,则应用系统11可以将该数据写入到FO库14中。但是,在写入FO库之前,应用系统11可以进行幂等判断,判断本次业务写请求要写入的数据是否是重复的数据,是否是重复写入。
应用系统11可以在缓存15中判断是否存在本次业务写请求要写入的数据。例如,可以通过一个查询主键来进行判断,如,用户的身份证号或者邮箱等,业务写请求中可以携带该查询主键,数据库或者缓存中存储数据时也存储该查询主键,那么如果存储的数据中包括该查询主键,则可以确定发生了数据重复。
若应用系统11确认缓存15中不包括再次接收的业务写请求对应的写数据,可以将数据写入FO库14中;否则,应用系统11可以不再写入FO库。
本例子的幂等控制方法,通过将写入主写数据库的数据也同步写入到缓存中,使得在数据库切换时,尽管读库存在数据丢失,也可以通过缓存的存储数据实现幂等控制,保证了在数据库切换时的幂等。
图3示例了本说明书至少一个实施例的幂等控制方法,该方法与图2相比,在幂等控制时,应用系统11除了去缓存15中查询是否存在重复数据,还可以去读数据库12中查看是否存在重复数据,并在确定两者都没有存储业务写请求对应的写数据时,再将数据写入到FO库中。如图3所示,可以包括:
在步骤300中,接收业务写请求。
本步骤中,应用系统11可以接收到业务写请求,例如,该请求可以是请求写入一笔交易的交易数据,或者写入新用户的注册数据。
在步骤302中,将所述业务写请求对应的写数据写入主写数据库和缓存,并将所述写数据由主写数据库同步到读数据库。
本步骤中,应用系统11可以将写数据写入到主写数据库12,并同步到读数据库13,并且,如图1所示,应用系统11还将该写数据写入到缓存15中。
通过将业务写请求对应的写数据也写入到缓存15中,使得缓存15中存储了与主写数据库12中一致的数据,在主写数据库12故障时,即使未能及时同步到读数据库13,也能够由缓存15中获得与主写数据库12一致的数据。
在步骤304中,将写业务由主写数据库切换到备写数据库,所述备写数据库用于在主写数据库故障时负责写入数据。
例如,备写数据库可以是上述的FO库14。
在步骤306中,再次接收到业务写请求。例如,应用系统11在由主写数据库12切换到FO库14后,又接收到业务写请求。
在步骤308中,判断缓存中是否存在再次接收的业务写请求对应的写数据。
例如,假设该再次接收的业务写请求对应的写数据是C。
如果判断结果是缓存中存在C,则可以表明出现了数据重复,则应用系统11可以不再向FO库14写入该数据C,即步骤310。这种情况下,可以是由于主写数据库向读数据库的同步延迟导致读数据库丢失了C,但是由于缓存15中同步写入了主写数据库的写数据,可以通过在缓存15中进行重复数据的判断进行幂等控制。
如果判断结果是缓存中不存在C,则可以继续执行步骤312。
在步骤312中,判断读数据库13中是否存在再次接收的业务写请求对应的写数据。
如果读数据库存在所述写数据C,则同样转至步骤310。这种情况可以是,数据C是读数据库中已经存在的数据,可以是在主写数据库宕机前就同步到读数据库中的数据,并不是读数据库丢失的数据。但是,这部分数据在向缓存15中写入时,由于多种原因导致了缓存中的数据丢失,所以在缓存15中没有查到而在读数据库中查询到。
如果读数据库不存在所述写数据C,则可以继续执行步骤314。这种情况可以是,本次业务写请求的写数据C是新的数据,既不是读数据库丢失的数据,也不是读数据库已经存在的数据,而是新写入的数据。
在步骤314中,将所述写数据写入FO库。
此外,对于应用系统11来说,当接收到一次业务写请求时,也可能不能知晓本次业务写请求的写数据是否是主写数据库宕机瞬间导致的读数据库丢失的数据,或者是已经由主写数据库同步至读数据库的数据,或者是新的写数据,则应用系统11可以统一执行图3所示的流程,即在缓存和读数据库中都进行重复数据的判断,这样可以提高幂等控制的准确性。
本例子的方法中,通过在缓存15和读数据库12中都进行重复数据的判断,不仅可以防止读数据库中的数据丢失导致的重复,而且还可以防止缓存15在写入数据时可能出现的数据丢失,双重保障使得幂等控制更加准确。
此外,可以对缓存中的数据的存储时间设置数据有效时长,例如,该有效时长可以是10分钟,或者是1天,等。应用系统11可以检测缓存中的写数据的存储时间是否到达数据有效时长,若达到有效时长,则可以由所述缓存中删除所述写数据。通过设置缓存的数据的有效时长,可以使得缓存数据不会占用太大的空间,数据的空间损耗得到控制。
例如,应用系统11可以按照图3所示的流程进行幂等控制,直至主写数据库的故障得到恢复。当主写数据库的故障恢复后,可以将写业务由FO库切换回主写数据库。当切回主写数据库以后,应用系统11可以将写数据写入到主写数据库12,当接收到业务写请求时,应用系统11可以将业务写请求对应的写数据写入主写数据库和缓存,并将所述写数据由主写数据库12同步到读数据库13。
当再次接收到业务写请求时,此时的主写数据库12已经开始正常工作,在进行幂等控制时,应用系统11可以查看读数据库12,若所述读数据库不存在所述再次接收的业务写请求对应的写数据,则将写数据写入备写数据库即FO库。或者,应用系统11也可以查看主写数据库12进行幂等控制,若主写数据库12不存在所述再次接收的业务写请求对应的写数据,则将写数据写入FO库。
为了实现上述方法,本说明书至少一个实施例还提供了一种数据库切换时的幂等控制装置。如图4所示,该装置可以包括:请求接收模块41、写入处理模块42、切换处理模块43和幂等判断模块44。
请求接收模块41,用于接收业务写请求,所述业务写请求用于请求向数据库中写入数据;
写入处理模块42,用于将业务写请求对应的写数据写入主写数据库和缓存;
切换处理模块43,用于执行写数据库的切换,由主写数据库切换到备写数据库,所述备写数据库用于在主写数据库故障时负责写入数据;
幂等判断模块44,用于当再次接收到业务写请求时,若所述缓存中不存在所述再次接收的业务写请求对应的写数据,则由写入处理模块将所述写数据写入所述备写数据库。
在一个例子中,幂等判断模块44,还用于在将所述写数据写入所述备写数据库之前,确定读数据库中不存在所述再次接收的业务写请求对应的写数据;写入主写数据库的数据还同步至读数据库。
在一个例子中,写入处理模块42,还用于判断所述缓存中的写数据的存储时间是否到达数据有效时长;若达到有效时长,由所述缓存中删除所述写数据。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述图中所示流程中的各个步骤,其执行顺序不限制于流程图中的顺序。此外,各个步骤的描述,可以实现为软件、硬件或者其结合的形式,例如,本领域技术人员可以将其实现为软件代码的形式,可以为能够实现所述步骤对应的逻辑功能的计算机可执行指令。当其以软件的方式实现时,所述的可执行指令可以存储在存储器中,并被设备中的处理器执行。
例如,对应于上述方法,本说明书一个或多个实施例同时提供一种数据库切换时的幂等控制设备,该设备可以包括处理器、存储器、以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器通过执行所述指令,用于实现如下步骤:
接收业务写请求,所述业务写请求用于请求向数据库中写入数据;
将所述业务写请求对应的写数据写入主写数据库和缓存;
执行写数据库的切换,由主写数据库切换到备写数据库,所述备写数据库用于在主写数据库故障时负责写入数据;
当再次接收到业务写请求时,若所述缓存中不存在所述再次接收的业务写请求对应的写数据,将所述写数据写入所述备写数据库。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (7)

1.一种数据库切换时的幂等控制方法,所述方法包括:
接收业务写请求,所述业务写请求用于请求向数据库中写入数据;
将所述业务写请求对应的写数据写入主写数据库和缓存;
执行写数据库的切换,由主写数据库切换到备写数据库,所述备写数据库用于在主写数据库故障时负责写入数据;
当再次接收到业务写请求时,若所述缓存中不存在所述再次接收的业务写请求对应的写数据,将所述写数据写入所述备写数据库;
所述将所述业务写请求对应的写数据写入主写数据库和缓存后,所述方法还包括:将所述写数据由主写数据库同步到读数据库;
在将所述写数据写入所述备写数据库之前,所述方法还包括:确定所述读数据库中不存在所述再次接收的业务写请求对应的写数据;
所述缓存中不存在所述再次接收的业务写请求对应的写数据,且确定所述读数据库中不存在所述再次接收的业务写请求对应的写数据,将所述写数据写入所述备写数据库,包括:
判断所述缓存中是否存在所述写数据;
如果存在,不再向所述备写数据库写入所述写数据;
如果不存在,继续判断所述读数据库是否存在写数据;
如果所述读数据库存在所述写数据,不再向备写数据库写入所述写数据;
如果所述读数据库不存在所述写数据,将所述写数据写入所述备写数据库。
2.根据权利要求1所述的方法,所述方法还包括:
判断所述缓存中的写数据的存储时间是否到达数据有效时长;
若达到有效时长,由所述缓存中删除所述写数据。
3.根据权利要求1所述的方法,
所述执行写数据库的切换,由主写数据库切换到备写数据库,包括:
检测到主写数据库故障时,将写业务由主写数据库切换到备写数据库;
或者,接收到切换指示时,将写业务由主写数据库切换到备写数据库。
4.根据权利要求1所述的方法,所述方法还包括:
当所述主写数据库故障恢复时,将写业务由备写数据库切回主写数据库;
接收业务写请求;
将所述业务写请求对应的写数据写入主写数据库和缓存,并将所述写数据由主写数据库同步到读数据库;
当再次接收到业务写请求时,若所述读数据库或者主写数据库不存在所述再次接收的业务写请求对应的写数据,则将写数据写入备写数据库。
5.一种数据库切换时的幂等控制装置,所述装置包括:
请求接收模块,用于接收业务写请求,所述业务写请求用于请求向数据库中写入数据;
写入处理模块,用于将业务写请求对应的写数据写入主写数据库和缓存;
切换处理模块,用于执行写数据库的切换,由主写数据库切换到备写数据库,所述备写数据库用于在主写数据库故障时负责写入数据;
幂等判断模块,用于当再次接收到业务写请求时,若所述缓存中不存在所述再次接收的业务写请求对应的写数据,则由写入处理模块将所述写数据写入所述备写数据库;
所述幂等判断模块,还用于在将所述写数据写入所述备写数据库之前,确定读数据库中不存在所述再次接收的业务写请求对应的写数据;写入主写数据库的数据还同步至读数据库;
所述幂等判断模块,具体用于:判断所述缓存中是否存在所述写数据;
如果存在,不再向所述备写数据库写入所述写数据;
如果不存在,继续判断所述读数据库是否存在写数据;
如果所述读数据库存在所述写数据,不再向备写数据库写入所述写数据;
如果所述读数据库不存在所述写数据,将所述写数据写入所述备写数据库。
6.根据权利要求5所述的装置,
所述写入处理模块,还用于判断所述缓存中的写数据的存储时间是否到达数据有效时长;若达到有效时长,由所述缓存中删除所述写数据。
7.一种数据库切换时的幂等控制设备,所述设备包括存储器、处理器,以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行指令时实现以下步骤:
接收业务写请求,所述业务写请求用于请求向数据库中写入数据;
将所述业务写请求对应的写数据写入主写数据库和缓存;
执行写数据库的切换,由主写数据库切换到备写数据库,所述备写数据库用于在主写数据库故障时负责写入数据;
当再次接收到业务写请求时,若所述缓存中不存在所述再次接收的业务写请求对应的写数据,将所述写数据写入所述备写数据库;
所述将所述业务写请求对应的写数据写入主写数据库和缓存后,将所述写数据由主写数据库同步到读数据库;
在将所述写数据写入所述备写数据库之前,确定所述读数据库中不存在所述再次接收的业务写请求对应的写数据;
所述缓存中不存在所述再次接收的业务写请求对应的写数据,且确定所述读数据库中不存在所述再次接收的业务写请求对应的写数据,将所述写数据写入所述备写数据库,包括:
判断所述缓存中是否存在所述写数据;
如果存在,不再向所述备写数据库写入所述写数据;
如果不存在,继续判断所述读数据库是否存在写数据;
如果所述读数据库存在所述写数据,不再向备写数据库写入所述写数据;
如果所述读数据库不存在所述写数据,将所述写数据写入所述备写数据库。
CN201810775856.4A 2018-07-16 2018-07-16 一种数据库切换时的幂等控制方法和装置 Active CN109062731B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810775856.4A CN109062731B (zh) 2018-07-16 2018-07-16 一种数据库切换时的幂等控制方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810775856.4A CN109062731B (zh) 2018-07-16 2018-07-16 一种数据库切换时的幂等控制方法和装置

Publications (2)

Publication Number Publication Date
CN109062731A CN109062731A (zh) 2018-12-21
CN109062731B true CN109062731B (zh) 2021-08-06

Family

ID=64816544

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810775856.4A Active CN109062731B (zh) 2018-07-16 2018-07-16 一种数据库切换时的幂等控制方法和装置

Country Status (1)

Country Link
CN (1) CN109062731B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109902077B (zh) * 2018-12-29 2023-08-11 创新先进技术有限公司 一种业务请求处理方法、装置及设备
CN112559258B (zh) * 2020-12-02 2024-10-18 北京字节跳动网络技术有限公司 一种容灾处理方法、装置、系统、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103684839A (zh) * 2012-09-26 2014-03-26 中国移动通信集团四川有限公司 一种用于双机热备的数据传输方法、系统及服务器
CN104778102A (zh) * 2015-03-27 2015-07-15 深圳市创梦天地科技有限公司 一种主备切换方法及系统
CN105608229A (zh) * 2016-01-29 2016-05-25 锐达互动科技股份有限公司 一种主从数据库同步系统及方法
CN106815275A (zh) * 2015-12-02 2017-06-09 阿里巴巴集团控股有限公司 一种通过备用数据库实现主备数据库同步的方法与设备
CN107577700A (zh) * 2017-07-26 2018-01-12 阿里巴巴集团控股有限公司 数据库容灾的处理方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9111006B2 (en) * 2010-03-16 2015-08-18 Salesforce.Com, Inc. System, method and computer program product for communicating data between a database and a cache

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103684839A (zh) * 2012-09-26 2014-03-26 中国移动通信集团四川有限公司 一种用于双机热备的数据传输方法、系统及服务器
CN104778102A (zh) * 2015-03-27 2015-07-15 深圳市创梦天地科技有限公司 一种主备切换方法及系统
CN106815275A (zh) * 2015-12-02 2017-06-09 阿里巴巴集团控股有限公司 一种通过备用数据库实现主备数据库同步的方法与设备
CN105608229A (zh) * 2016-01-29 2016-05-25 锐达互动科技股份有限公司 一种主从数据库同步系统及方法
CN107577700A (zh) * 2017-07-26 2018-01-12 阿里巴巴集团控股有限公司 数据库容灾的处理方法及装置

Also Published As

Publication number Publication date
CN109062731A (zh) 2018-12-21

Similar Documents

Publication Publication Date Title
US10509585B2 (en) Data synchronization method, apparatus, and system
US20150213100A1 (en) Data synchronization method and system
US9141685B2 (en) Front end and backend replicated storage
KR101231563B1 (ko) 실시간 데이터 복제
US20200019543A1 (en) Method, apparatus and device for updating data, and medium
US10210055B2 (en) Method and system for data storage upon database failure
US9229970B2 (en) Methods to minimize communication in a cluster database system
CN111880956B (zh) 一种数据同步方法和装置
US11599554B2 (en) Synchronizing changes to stale components of a distributed object using synchronization bitmaps
US20240028568A1 (en) Data migration method and apparatus, device, distributed system and storage medium
CN111125040B (zh) 管理重做日志的方法、装置及存储介质
US20090132534A1 (en) Remote replication synchronizing/accessing system and method thereof
CN108776670B (zh) 一种异地容灾方法、系统和电子设备
CN109062731B (zh) 一种数据库切换时的幂等控制方法和装置
CN110633046A (zh) 一种分布式系统的存储方法、装置、存储设备及存储介质
CN112000426A (zh) 一种数据处理方法及装置
CN110941511B (zh) 一种快照合并方法、装置、设备及存储介质
CN115391337A (zh) 数据库分区的方法、装置、存储介质及电子设备
CN109376141B (zh) 一种数据迁移方法和装置
CN107291575B (zh) 一种数据中心故障时的处理方法和设备
US20220300479A1 (en) Processing delete requests based on change feed of updates
CN110471906A (zh) 数据库切换方法、装置及设备
US9727426B2 (en) Using an overinclusive write record to track and write changes to a storage system
CN111984460B (zh) 元数据的恢复方法及装置
CN117648304A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200923

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200923

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240223

Address after: Guohao Times City # 20-01, 128 Meizhi Road, Singapore

Patentee after: Advanced Nova Technology (Singapore) Holdings Ltd.

Country or region after: Singapore

Address before: Ky1-9008 Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands, ky1-9008

Patentee before: Innovative advanced technology Co.,Ltd.

Country or region before: Cayman Islands