一种数据库故障时的数据存储方法和设备的制造方法_2

文档序号:9673000阅读:来源:国知局
服务,使得业务处理服务器可以从备用数据库中获得准确的数据值来进行业务处理,继而避免业务发生中断,并可以提高用户的使用感受。
【附图说明】
[0031]为了更加清楚地说明本申请实施例的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本申请实施例的这些附图获得其他的附图。
[0032]图1是本申请实施例中提出的应用场景示意图;
[0033]图2是本申请实施例一提供的一种数据库故障时的数据存储方法流程图;
[0034]图3是本申请实施例二提供的一种业务处理服务器的结构示意图。
【具体实施方式】
[0035]下面将结合本申请中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0036]实施例一
[0037]针对现有技术中存在的问题,本申请实施例提供一种数据库故障时的数据存储方法,以图1为本申请实施例的应用场景示意图,该方法应用于包括业务处理服务器、上游服务器和至少三个数据库的系统中。上游服务器的数量可以为一个或者多个。三个数据库中包括一个主用数据库、一个读数据库和一个备用数据库,读数据库为主用数据库对应的同步延迟较低的读数据库。
[0038]如图1所示,业务处理服务器分别与主用数据库、读数据库和备用数据库连接,主用数据库与读数据库连接,且主用数据库与备用数据库连接。
[0039]其中,当主用数据库未发生故障时,由主用数据库提供读写服务,即业务处理服务器可以在主用数据库中写入数据,也可以从主用数据库中读出数据。当主用数据库发生故障时,由备用数据库提供读写服务,即业务处理服务器可以在备用数据库中写入数据,也可以从备用数据库中读出数据。读数据库作为主用数据库的备份数据库,当主用数据库未发生故障时,主用数据库中的数据均需要同步到读数据库中,该读数据库只提供读服务,即业务处理服务器只可以从读数据库中读出数据,而不能在读数据库中写入数据。因此,读数据库是一个为主用数据库提供备份功能,且只提供读服务的数据库。
[0040]本申请实施例中,当主用数据库未发生故障时,使用主用数据库中存储的数据值提供服务,且主用数据库中存储的所有数据值均需要同步到读数据库中。其中,在将主用数据库中存储的数据值同步到读数据库时,主用数据库中存储的数据值需要在Μ秒之内同步到读数据库中,即在主用数据库中存储了新的数据值或者主用数据库中存储的数据值发生变化之后,主用数据库会在Μ秒之内将存储的新数据值或者发生变化之后的数据值同步到读数据库中。基于此,主用数据库与读数据库中的数据值不一致的时长最多为Μ秒,且主用数据库中的数据值与读数据库中的数据值最终会达到一致。
[0041]在具体实现中,Μ秒的值通常为1秒。当然,在不同的应用场景下,Μ秒的值通常会基于主用数据库的性能等因素决定,对此不再详加赘述。
[0042]本申请实施例中,当主用数据库发生故障时,在主用数据库故障恢复前,使用备用数据库存储数据值,并使用备用数据库中存储的数据值提供服务。
[0043]在上述应用场景下,如图2所示,当主用数据库发生故障时,则本申请实施例提出的数据库故障时的数据存储方法具体可以包括以下步骤:
[0044]步骤201,业务处理服务器确定Μ秒之内的业务请求,并对该业务请求进行业务处理,以得到对应的业务标识以及数据变动值。
[0045]本申请实施例中,业务处理服务器确定Μ秒之内的业务请求的过程,具体包括但不限于以下步骤:业务处理服务器通知上游服务器将Μ秒之内发起的业务请求重新发起一次,由上游服务器重新发送Μ秒之内已经发起过的业务请求;之后,业务处理服务器接收来自上游服务器的业务请求,并确定该业务请求为上游服务器重新发送的Μ秒之内已经发起过的业务请求。
[0046]其中,当主用数据库发生故障时,业务处理服务器通知所有与本业务处理服务器进行交互的上游服务器(即与本业务处理服务器连接的所有上游服务器)将Μ秒之内发起的业务请求重新发起一次。上游服务器在接收到该通知之后,查询本上游服务器在Μ秒之内向业务处理服务器发送过哪些业务请求,并向业务处理服务器重新发送Μ秒之内已经发起过的业务请求。例如,假设上游服务器在Μ秒之内向业务处理服务器发送过业务请求1,则上游服务器向业务处理服务器重新发送业务请求1。之后,业务处理服务器接收来自上游服务器的重新发送的Μ秒之内已经发起过的业务请求1。
[0047]在本申请实施例中,业务处理服务器每次对业务请求进行业务处理时,业务处理服务器均可以得到该业务请求对应的业务标识(如交易号)以及数据变动值。其中,业务请求对应的业务标识又可以称为幂等性控制号。
[0048]例如,主用数据库主要用于存储账户余额,上游服务器用于对用户的支付行为进行处理时,假如用户Α的支付行为是消费了 100元,则上游服务器向业务处理服务器发送业务请求1,该业务请求1用于将用户A的账户余额减100元。业务处理服务器在接收到该业务请求1之后,利用业务请求1进行业务处理,即业务处理为将用户A的账户余额减100元,且假设此次业务处理对应的业务标识为123456。进一步的,假设用户A在主用数据库中对应的账户余额为1000元,则业务处理服务器需要将用户A在主用数据库中存储的账户余额1000元减100元,并在主用数据库中存储用户A的账户余额为900元,并在主用数据库中记录此次业务处理对应的业务标识,如123456。
[0049]当主用数据库发生故障时,业务处理服务器通知所有上游服务器将Μ秒之内发起的业务请求重新发起一次,上游服务器在接收到该通知之后,向业务处理服务器重新发送业务请求1,该业务请求1用于将用户Α的账户余额减100元。业务处理服务器在接收到上游服务器重新发送的业务请求1之后,利用业务请求1进行业务处理,即业务处理为将用户A的账户余额减100元。在此利用业务请求进行业务处理的过程中,业务处理服务器得到对应的业务标识为123456,业务处理服务器得到对应的数据变动值为减100元。
[0050]步骤202,业务处理服务器判断备用数据库中是否存储有对应于该业务标识的数据值;如果是,则执行步骤203 ;如果否,则执行步骤204。
[0051]本申请实施例中,当主用数据库发生故障时,将使用备用数据库存储数据值,并使用备用数据库中存储的数据值提供服务。因此,业务处理服务器在对业务请求进行业务处理,以得到对应的业务标识以及数据变动值之后,将判断备用数据库中是否存储有对应于该业务标识的数据值;如果是,则说明对应于该业务标识的准确数据值已经存储在备用数据库中,执行步骤203 ;如果否,则说明对应于该业务标识的准确数据值没有存储在备用数据库中,执行步骤204。例如,业务处理服务器判断备用数据库中是否存储有对应于业务标识123456的数据值;如果是,则执行步骤203 ;如果否,则执行步骤204。
[0052]本申请实施例中,业务处理服务器判断备用数据库中是否存储有对应于业务标识(如123456)的数据值之前,业务处理服务器还可以判断读数据库中是否存储有对应于该业务标识(如123456)的数据值。如果读数据库中已经存储有对应于该业务标识的数据值,则确定对应于该业务标识的准确数据值已经存储在读数据库中;基于此,业务处理服务器可以直接丢弃当前得到的业务标识以及数据变动值,不再执行步骤202,针对业务请求的处理结束;或者,业务处理服务器也可以执行“判断备用数据库中是否存储有对应于业务标识的
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1