一种数据库故障时的业务处理方法和设备的制造方法
【技术领域】
[0001] 本申请涉及互联网技术领域,尤其是涉及一种数据库故障时的业务处理方法和设 备,特别是一种基于数据库内数据的业务处理方法和设备。
【背景技术】
[0002] 业务处理服务器用于对业务请求进行业务处理,并利用业务处理的结果更新主用 数据库中存储的数据值。例如,主用数据库主要用于存储账户余额,业务处理服务器在需要 对业务请求进行业务处理时,假如用户A的支付行为是消费了 100元,业务请求用于将用户 A的账户余额减100元,则业务处理服务器将用户A的账户余额减100元,假设用户A在主 用数据库中对应的账户余额为1000元,则业务处理服务器需要将用户A在主用数据库中存 储的账户余额1000元减100元,并将主用数据库中存储的用户A的账户余额更新为900元。
[0003] 为了保证数据库的可靠性,现有技术中,通常使用化ta Guard(数据保护)送种高 可用性的数据库方案来提供数据库。在化ta Guard方案中,包括一个主用数据库和一个备 用数据库,且在主用数据库和备用数据库之间通过日志同步来保证数据的同步,从而可W 实现数据库快速切换与灾难性恢复。具体的,当主用数据库发生故障时,通过日志同步方 式,将主用数据库内所有的数据恢复到备用数据库中,之后利用备用数据库中的数据提供 数据读写服务。
[0004] 当主用数据库发生故障时,通常需要10-15分钟才能够将主用数据库内所有的数 据恢复到备用数据库,而送段时间内业务处理服务器将无法读写主用数据库中的数据和备 用数据库中的数据,从而导致业务中断。进一步的,长时间的业务中断会让用户体验急剧变 差,严重影响用户使用感受。对于一些对实时性要求高的业务,业务中断还会导致用户或服 务提供方出现损失。
【发明内容】
[0005] 本申请实施例提供一种数据库故障时的业务处理方法和设备,W避免业务发生中 断,并提高用户使用感受,避免用户或服务提供方出现损失。
[0006] 本申请实施例提供一种数据库故障时的业务处理方法,主用数据库中存储的数据 需要在Μ砂之内同步到备用数据库中,所述方法包括W下步骤:
[0007] 业务处理服务器在收到业务请求时,判断所述主用数据库是否发生故障;
[0008] 当所述主用数据库发生故障时,所述业务处理服务器为所述业务请求设置未处理 完成标记,并利用所述备用数据库中当前存储的数据对所述业务请求进行业务处理,并在 业务处理成功时,提示业务处理成功的信息;
[0009] 当所述主用数据库故障恢复或者所述主用数据库中存储的数据均备份到所述备 用数据库之后,如果有业务请求具有未处理完成标记,则所述业务处理服务器重新利用所 述主用数据库中当前存储的数据或者所述备用数据库中当前存储的数据,对具有未处理完 成标记的业务请求进行业务处理。
[0010] 所述方法进一步包括:所述业务处理服务器在利用所述备用数据库中当前存储的 数据对所述业务请求进行业务处理之后,在业务处理成功时,所述业务处理服务器拒绝利 用业务处理结果更新所述备用数据库中存储的数据;
[0011] 所述业务处理服务器在重新利用所述主用数据库中当前存储的数据对具有未处 理完成标记的业务请求进行业务处理之后,在业务处理成功时,所述业务处理服务器利用 业务处理结果更新所述主用数据库中存储的数据;或者,所述业务处理服务器在重新利用 所述备用数据库中当前存储的数据对具有未处理完成标记的业务请求进行业务处理之后, 在业务处理成功时,所述业务处理服务器利用业务处理结果更新所述备用数据库中存储的 数据。
[0012] 所述业务处理服务器重新利用所述主用数据库中当前存储的数据或者所述备用 数据库中当前存储的数据,对具有未处理完成标记的业务请求进行业务处理之后,所述方 法还包括:
[0013] 在业务处理失败时,所述业务处理服务器提示业务处理失败的信息;
[0014] 在业务处理成功时,所述业务处理服务器拒绝提示业务处理成功的信息。
[0015] 所述业务处理服务器重新利用所述主用数据库中当前存储的数据或者所述备用 数据库中当前存储的数据,对具有未处理完成标记的业务请求进行业务处理之后,所述方 法还包括:
[0016] 所述业务处理服务器清除所述业务请求具有的未处理完成标记。
[0017] 所述业务处理服务器判断所述主用数据库是否发生故障之后,所述方法进一步包 括;当所述主用数据库未发生故障时,所述业务处理服务器利用所述主用数据库中当前存 储的数据对所述业务请求进行业务处理;
[0018] 在业务处理成功时,所述业务处理服务器提示业务处理成功的信息,并利用业务 处理结果更新所述主用数据库中存储的数据;
[0019] 在业务处理失败时,所述业务处理服务器提示业务处理失败的信息。
[0020] 本申请实施例提供一种业务处理服务器,主用数据库中存储的数据需要在Μ砂之 内同步到备用数据库中,所述业务处理服务器具体包括:
[0021] 判断模块,用于在收到业务请求时,判断所述主用数据库是否发生故障;
[0022] 处理模块,用于当所述主用数据库发生故障时,为所述业务请求设置未处理完成 标记,并利用所述备用数据库中当前存储的数据对所述业务请求进行业务处理,并在业务 处理成功时,提示业务处理成功的信息;
[0023] 当所述主用数据库故障恢复或者所述主用数据库中存储的数据均备份到所述备 用数据库之后,如果有业务请求具有未处理完成标记,则重新利用所述主用数据库中当前 存储的数据或者所述备用数据库中当前存储的数据,并对具有未处理完成标记的业务请求 进行业务处理。
[0024] 所述处理模块,进一步用于在利用所述备用数据库中当前存储的数据对所述业务 请求进行业务处理之后,在业务处理成功时,拒绝利用业务处理结果更新所述备用数据库 中存储的数据;
[00巧]在重新利用所述主用数据库中当前存储的数据对具有未处理完成标记的业务请 求进行业务处理之后,在业务处理成功时,利用业务处理结果更新所述主用数据库中存储 的数据;或者,在重新利用所述备用数据库中当前存储的数据对具有未处理完成标记的业 务请求进行业务处理之后,在业务处理成功时,利用业务处理结果更新所述备用数据库中 存储的数据。
[0026] 所述处理模块,进一步用于在重新利用所述主用数据库中当前存储的数据或者所 述备用数据库中当前存储的数据,对具有未处理完成标记的业务请求进行业务处理之后, 在业务处理失败时,则提示业务处理失败的信息;在业务处理成功时,则拒绝提示业务处理 成功的信息。
[0027] 所述处理模块,进一步用于在重新利用所述主用数据库中当前存储的数据或者所 述备用数据库中当前存储的数据,对具有未处理完成标记的业务请求进行业务处理之后, 清除所述业务请求具有的未处理完成标记。
[0028] 所述处理模块,进一步用于在判断所述主用数据库是否发生故障之后,当所述主 用数据库未发生故障时,利用所述主用数据库中当前存储的数据对所述业务请求进行业务 处理;在业务处理成功时,提示业务处理成功的信息,并利用业务处理结果更新所述主用数 据库中存储的数据;在业务处理失败时,提示业务处理失败的信息。
[0029] 与现有技术相比,本申请实施例至少具有W下优点:本申请实施例中,当主用数据 库发生故障时,直接利用备用数据库中存储的数据对业务请求进行业务处理,并在业务处 理成功时,提示业务处理成功的信息。当主用数据库故障恢复或者主用数据库中存储的数 据均备份到备用数据库之后,重新利用主用数据库中存储的数据或者备用数据库中存储的 数据,对业务请求进行业务处理。上述方式可W避免业务发生中断,并提高用户使用感受, 并且避免用户或者服务提供方出现损失。进一步的,可W解决数据库稳定性问题,当主用数 据库发生故障时,可W让备用数据库直接提供服务,极大缩短故障切换的等待时间,故障影 响的时间基本可W趋向于0,同时对用户几乎无影响。
【附图说明】
[0030] 为了更加清楚地说明本申请实施例的技术方案,下面将对本申请实施例描述中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施 例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可W根据本申请实施 例的送些附图获得