数据库系统、服务器装置、程序及信息处理方法与流程

文档序号:14203771阅读:195来源:国知局
数据库系统、服务器装置、程序及信息处理方法与流程

本发明的实施方式涉及数据库系统、服务器装置、程序及信息处理方法。



背景技术:

近年来,在24小时、365天不能停止运用的服务器等中,利用通过将数据库复用而高可用化的数据库系统。作为高可用化的数据库系统,例如已知有多个服务器装置的每个服务器装置具有单独的数据库的系统。在该系统中,1个服务器装置作为主装置动作,其他的服务器装置作为从装置动作。

主装置是从客户端装置直接受理数据库的更新的服务器装置。从装置是具有主装置的复制的数据库的服务器装置。在主装置的服务器装置更新数据库的情况下,从装置的服务器装置执行与主装置相同的更新处理。由此,在数据库系统中,能够在主装置与从装置间使数据库同步而保证数据的整合性。将在主装置与从装置间取得数据的同步的处理称为复制(replication)。

另外,从装置作为主装置的备用发挥功能。在主装置的服务器装置发生了故障的情况下,某一个从装置被变更为主装置。由此,就数据库系统而言,即使一部分的服务器装置故障也不会使服务器停止,而能够使服务器继续。在主装置的服务器发生了故障的情况下,将从装置的服务器装置变更为主装置的处理称为故障转移(failover)。

另外,在发生了故障转移的情况下,客户端装置因为与主装置的服务器装置的连接发生错误,所以在故障转移完成后必须与新的主装置的服务器装置重新连接。在此情况下,客户端装置执行针对上位阶层的应用程序隐蔽连接的错误或使中断为最小限的处理。由此,客户端装置可以不使应用程序执行用于重新连接的处理,所以能够减轻应用程序的开发负担。

在发生了故障转移的情况下,客户端装置自动与新的主装置的服务器装置重新连接。作为自动地重新连接的方法,已知有对每个事务(transaction)附加id,主装置及从装置将各自执行完毕的事务的id高速缓存的方法。在该方法中,在事务由于故障转移而被中断的情况下,客户端装置在故障转移完成后,将中断的事务的执行请求附加同一id后向新的主装置的服务器装置重新发送。新的主装置的服务器装置,在高速缓存有同一id的情况下,无视所重新发送的请求,在未高速缓存同一id的情况下,对应于所重新发送的请求执行事务。由此,在数据库系统中,在发生了故障转移的情况下,能够消除同一事务的重复执行。

现有技术文献

(专利文献)

专利文献1:日本特开平08-249281号公报

(非专利文献)

非专利文献1:hornetq,amulti-protocol,embeddable,veryhighperformance,clustered,asynchronousmessagingsystem.[online].[retrievedon2015-05-13].retrievedfromtheinternet:<url:http:hornetq.jboss.org/>.



技术实现要素:

发明要解决的课题

但是,在这种数据库系统中,主装置的服务器装置,在由于例如网络的错误等而重新启动的情况下,在重新启动后,同一服务器装置再次被选择为主装置的情况存在。在此情况下,主装置的服务器装置,清除高速缓存的id。因此,在此情况下,主装置的服务器装置在从客户端装置重新发送了同一请求的情况下,无法无视请求而重复执行事务。

尤其是,近年来,服务器装置的虚拟化的技术正在进展。虚拟化的服务器装置,由于物理服务器的负荷的增大或者保养等,容易发生重新启动。因此,在数据库系统的服务器装置使用了虚拟化的服务器装置的情况下,重复执行操作信息的可能性更高。

用于解决课题的手段

实施方式的数据库系统具备:多个服务器装置,各服务器装置存储数据库,1个服务器装置作为主装置动作,至少1个服务器装置作为对上述主装置进行备份的从装置动作;以及客户端装置,对上述主装置的服务器装置发送操作信息,该操作信息指示针对上述数据库的操作,上述客户端装置对上述操作信息附加用于识别上述操作信息的识别符,上述多个服务器装置的每个服务器装置具备:数据保存部,存储上述数据库;识别符存储部,存储上述识别符的列表;日志保存部,存储上述数据库的变更的日志;操作部,对应于从上述客户端装置接收到的上述操作信息,变更存储于上述数据保存部的上述数据库,在对应于上述操作信息变更上述数据库的情况下,使上述操作信息的上述识别符存储于上述识别符存储部;日志处理部,在对应于上述操作信息变更上述数据库的情况下,使附加了上述操作信息的上述识别符的日志存储于上述日志保存部;以及恢复部,在进行了重新启动的情况下,基于存储于上述日志保存部的日志,将存储于上述数据保存部的上述数据库复原,并且基于被附加于在上述日志保存部所存储的日志的上述识别符,将存储于上述识别符存储部的上述识别符的列表复原,在从上述客户端装置接收到的上述操作信息的上述识别符被存储于上述识别符存储部的情况下,上述操作部不执行与接收到的上述操作信息对应的上述数据库的变更。

附图说明

图1是表示实施方式的数据库系统的构成的图。

图2是表示基于协调装置的主装置及从装置的设定的处理的流程的图。

图3是表示基于客户端装置的数据库的操作及复制的处理的流程的图。

图4是表示主装置的服务器装置发生了故障的状态的图。

图5是表示主装置的服务器装置发生了故障后的处理的流程的图。

图6是表示客户端装置的构成的图。

图7是表示服务器装置的构成的图。

图8是表示客户端装置的处理的流程图。

图9是表示主装置的服务器装置的处理的流程图。

图10是表示从装置的服务器装置的处理的流程图。

图11是表示恢复(recovery)时的服务器装置的处理的流程图。

图12是表示数据库的操作时的处理的流程的图。

图13是表示故障时的处理的流程的图。

图14是表示将未处理的操作信息对从从装置被变更为主装置的服务器装置重新发送的情况下的处理的流程的图。

图15是表示将处理完毕的操作信息对从从装置被变更为主装置的服务器装置重新发送的情况下的处理的流程的图。

图16是表示主装置的服务器装置重新启动并再次被设定为主装置的情况下的处理的流程的图。

图17是表示将处理完毕的操作信息对在重新启动后再次被设定为主装置的服务器装置重新发送的情况下的处理的流程的图。

图18是表示信息处理装置的硬件构成的图。

具体实施方式

以下,参照附图对实施方式的数据库系统详细地进行说明。本实施方式的数据库系统的目的在于,在从客户端装置重新发送了同一操作信息的情况下消除重复执行。

图1是表示实施方式的数据库系统的构成的图。数据库系统10具备多个服务器装置30、协调装置40及客户端装置50。多个服务器装置30、协调装置40及客户端装置50分别是信息处理装置,且能够经由网络互相连接。

多个服务器装置30分别存储数据库。多个服务器装置30中,1个作为主装置动作,其他的至少1个服务器装置30作为对主装置进行备份的从装置动作。

主装置的服务器装置30从客户端装置50接收指示数据库的操作的操作信息。所谓的数据库的操作,例如为记录的参照、检索、更新、删除、新登记等。

从装置的服务器装置30,在其与主装置的服务器装置30间执行复制,并执行与主装置的服务器装置30具有的数据库相同的变更处理。更具体而言,主装置的服务器装置30将数据库的变更(更新、删除、新登记等)的日志发送至从装置的服务器装置30。从装置的服务器装置30接收到数据库的变更的日志时,按照日志变更自身具有的数据库。由此,各个从装置的服务器装置30能够使数据库与主装置的服务器装置30同步。另外,在设定有多个从装置的服务器装置30的情况下,主装置的服务器装置30,在其与各个从装置的服务器装置30间执行复制。

协调装置40将多个服务器装置30中的1个设定为主装置的服务器装置30。另外,协调装置40将多个服务器装置30中主装置以外的其他的至少1个设定为从装置的服务器装置30。另外,协调装置40监视各个服务器装置30是否发生了故障。协调装置40在主装置的服务器装置30发生了故障的情况下,将某一个从装置的服务器装置30设定为主装置的服务器装置30。另外,协调装置40在从客户端装置50接收到查询的情况下,回答哪一个为主装置的服务器装置30。

客户端装置50对主装置的服务器装置30发送指示数据库的操作的操作信息。另外,客户端装置50在主装置的服务器装置30不明的情况下,向协调装置40查询,并收到主装置的服务器装置30的通知。由此,客户端装置50能够对主装置的服务器装置30发送操作信息。

图2是表示基于协调装置40的主装置及从装置的设定的处理的流程的图。协调装置40在使服务器开始的情况下、某一个服务器装置30发生了故障的情况下及追加了新的服务器装置30的情况下等,针对各个服务器装置30设定主装置或者从装置的分配任务。在此情况下,协调装置40以避免多个服务器装置30同时被设定为主装置的方式设定分配任务。

另外,数据库系统10,只要是在某一个服务器装置30发生了故障的情况下等,未发生故障的多个服务器装置30中的1个作为主装置动作,而剩余的至少1个作为从装置动作即可,也可以是不具有协调装置40的构成。例如,在检测到主装置的故障或者检测到新的服务器装置30的追加的时刻,各个服务器装置30取得特定的磁盘锁(disklock)。并且,各个服务器装置30,在能够取得特定的磁盘锁的情况下作为主装置动作,在不能取得的情况下作为从装置动作。由此,数据库系统10能够在不具备协调装置40的构成中,适当地对各个服务器装置30设定分配任务。

另外,例如,在检测到主装置的故障或检测到新的服务器装置30的追加的时刻,多个服务器装置30执行互相投票出作为主装置的服务器装置30的投票处理。并且,多个服务器装置30在主装置确定之前反复进行投票处理。即使这样,数据库系统10也能够在不具备协调装置40的构成中适当地对各个服务器装置30设定分配任务。

图3是表示基于客户端装置50的数据库的操作及复制的处理的流程的图。

客户端装置50在从上位阶层的应用程序收到数据库的操作的指示的情况下,生成操作信息,并发送至主装置的服务器装置30。操作信息例如可以是归纳了多个更新处理等的事务的执行请求。另外,操作信息也可以是基于sql语句的数据库的操作请求。另外,操作信息也可以是1个记录的更新、删除或者新登记等的请求。另外,操作信息也可以是在客户端装置50与主装置的服务器装置30连接之后进行至少1个事务的执行并直到结束连接为止的会话(scssion)中包含的全部的信息。

主装置的服务器装置30在从客户端装置50接收到操作信息的情况下,按照操作信息操作数据库。主装置的服务器装置30,在按照操作信息的数据库的操作成功时,对客户端装置50回复表示已成功的信息。另外,主装置的服务器装置30在按照操作信息的处理失败的情况下,对客户端装置50回复表示失败的信息。

另外,主装置的服务器装置30,在根据操作信息变更数据库的情况下,在其与从装置的服务器装置30间执行复制。具体而言,主装置的服务器装置30将数据库的变更的日志发送至从装置的服务器装置30。数据库的变更的日志只要是能够传递数据库的更新、删除或者登记等的履历的信息即可,可以是任意的信息。例如,数据库的变更的日志既可以是表示数据库的操作的sql语句,也可以是记录级别的变更数据。

从装置的服务器装置30接收数据库的变更的日志。并且,从装置的服务器装置30以与接收到的日志进行同一变更的方式变更数据库。另外,在从装置的服务器装置30存在多个的情况下,主装置的服务器装置30在其与各个从装置的服务器装置30间执行复制。

另外,复制能够分为同步处理、非同步处理或者准同步处理。在同步处理中,从装置的服务器装置30变更了数据库后,变更主装置的服务器装置30的数据库。在非同步处理中,主装置的服务器装置30变更数据库之后,将日志发送至从装置的服务器装置30。在准同步处理中,在确认了从装置的服务器装置30接收到日志之后,主装置的服务器装置30变更数据库。

在本实施方式中,服务器装置30通过同步处理执行复制。但是,服务器装置30也可以通过非同步处理或者准同步处理执行复制。

图4是表示主装置的服务器装置30故障的状态的图。协调装置40在服务器的运用中,从各个服务器装置30定期地接收心跳(表示正在正常动作的包),监视各个服务器装置30的动作。协调装置40在无法接收到心跳的情况下,判断为该服务器装置30发生了故障。

另外,在主装置的服务器装置30发生故障的情况下,客户端装置50即使发送操作信息,也无法接收到结果。客户端装置50,在发送操作信息之后经过了规定时间也无法接收到结果的情况下,判断为发生了故障转移。

图5是表示主装置的服务器装置30发生了故障后的处理的流程的图。在判断为主装置的服务器装置30发生了故障的情况下,协调装置40执行将某一个从装置的服务器装置30变更为主装置的服务器装置30的故障转移。

另外,客户端装置50,在因为发送操作信息之后经过了规定时间也无法接收到结果所以判断为发生了故障转移的情况下,向协调装置40查询主装置的服务器装置30。作为一例,客户端装置50取得主装置的服务器装置30的网络地址等作为回答。并且,客户端装置50将同一操作信息重新发送至新的主装置的服务器装置30。

图6是表示客户端装置50的构成的图。客户端装置50具有操作信息生成部51、识别符生成部52、操作发送部53及结果接收部54。

操作信息生成部51从应用程序受理数据库的操作指示。并且,操作信息生成部51生成用于使服务器装置30执行与操作指示对应的处理的操作信息。

识别符生成部52,针对操作信息生成部51生成的每个操作信息,生成唯一的识别符。作为一例,识别符生成部52生成基于uuid(universallyuniqueidentifier)等的识别符。另外,识别符被发送至服务器装置30,通过服务器装置30至少保存一定期间。识别符只要在服务器装置30保存着的期间的范围中是唯一的即可。在此,一定期间为,主装置的服务器装置30发生故障之后到新的主装置的服务器装置30开始动作为止的期间,称为故障转移时间。

另外,识别符生成部52也可以基于从其他的装置接收到的信息,生成识别符。识别符生成部52例如可以从主装置的服务器装置30或者其他的装置接收识别符,并输出所接收到的识别符。另外,识别符生成部52例如从主装置的服务器装置30或者其他的装置接收成为识别符的源的信息,并基于所接收到的信息生成识别符。

操作发送部53对由操作信息生成部51所生成的操作信息,附加由识别符生成部52所生成的识别符。并且,操作发送部53将附加了识别符的操作信息发送至主装置的服务器装置30。

结果接收部54从主装置的服务器装置30接收按照所发送的操作信息的数据库的操作的结果。结果接收部54在接收到表示已成功的结果的情况下,对操作信息生成部51返回结果。操作信息生成部51在被返回了表示已成功的结果的情况下,将该结果返回至应用程序。

另外,结果接收部54在接收到表示失败的结果的情况下,或者发送操作信息之后经过了规定期间也无法接收到结果的情况下(超时的情况下),将该意思通知至操作发送部53。在此情况下,操作发送部53向协调装置40查询新的主装置的服务器装置30。并且,操作发送部53针对查询而获得的新的主装置的服务器装置30重新发送同一操作信息。在此情况下,操作发送部53对操作信息附加同一识别符。

另外,结果接收部54,在操作发送部53最初发送操作信息之后经过了故障转移时间后还是接收到表示失败的结果或者超时的情况下,不对操作信息生成部51重新发送操作信息,而将表示失败的结果返回至应用程序。

图7是表示服务器装置30的构成的图。服务器装置30具有数据保存部61、识别符存储部62、日志保存部63及信息处理部64。

数据保存部61存储数据库。数据保存部61既可以是硬盘等的非易失性的存储装置,也可以是ram(randomaccessmemory)等的易失性的存储装置。

识别符存储部62存储识别符的列表。识别符存储部62是ram等的易失性的存储装置。因此,识别符存储部62在服务器装置30重新启动的情况下,将所存储的识别符的列表清除。

日志保存部63存储数据库的变更的日志。日志保存部63是硬盘等的非易失性的存储装置。因此,日志保存部63,在服务器装置30重新启动的情况下,也继续存储所存储的日志。

信息处理部64是通过由cpu等处理器执行程序而实现的功能块。信息处理部64的一部分的功能构成也可以用硬件来实现。

信息处理部64具有操作接收部71、操作部72、日志处理部73、第1复制部74、结果发送部75、第2复制部76及恢复部77。操作接收部71、操作部72、日志处理部73、第1复制部74及结果发送部75,是用于使服务器装置30作为主装置动作的功能块。第2复制部76是用于使服务器装置30作为从装置动作的功能块。

操作接收部71从客户端装置50接收附加了识别符的操作信息。操作部72对应于从客户端装置50接收到的操作信息,从数据保存部61读出数据库并进行操作。例如,操作部72对应于从客户端装置50接收到的操作信息,变更存储于数据保存部61的数据库。

另外,操作部72,在对应于从客户端装置50接收到的操作信息变更数据库的情况下,使操作信息的识别符存储于识别符存储部62。并且,操作部72在从客户端装置50接收到操作信息的情况下,检查从客户端装置50接收到的操作信息的识别符是否被存储于识别符存储部62。并且,操作部72在从客户端装置50接收到的操作信息的识别符被存储于识别符存储部62的情况下,不执行与所接收到的操作信息对应的数据库的变更。另外,操作部72将在比距当前时间点一定时间前的时间点之前接收到的操作信息的识别符,从识别符存储部62删除。在此,一定时间是故障转移时间。

日志处理部73,生成与基于操作部72的操作信息对应的数据库的变更的日志。并且,日志处理部73对与操作信息对应的数据库的变更的日志,附加操作信息的识别符。另外,日志处理部73,使附加有识别符的日志存储于日志保存部63。

第1复制部74在其与从装置的服务器装置30间执行复制。具体而言,第1复制部74将附加有识别符的日志发送至从装置的服务器装置30。

结果发送部75将与操作信息对应的处理结果发送至客户端装置50。结果发送部75例如在复制及与操作信息对应的数据库的变更完成后,将表示与所接收到的操作信息对应的处理已成功的结果发送至客户端装置50。另外,结果发送部75例如在复制或者与操作信息对应的数据库的变更失败的情况下,将表示与所接收到的操作信息对应的处理失败的结果发送至客户端装置50。

另外,结果发送部75,在从客户端装置50接收到的操作信息的识别符被存储于识别符存储部62的情况下,将表示与所接收到的操作信息对应的处理已成功的结果发送至客户端装置50。

第2复制部76在其与主装置的服务器装置30间执行复制。具体而言,第2复制部76从主装置的服务器装置30接收附加了识别符的日志。接下来,第2复制部76,对应于从主装置的服务器装置30接收到的日志,变更存储于数据保存部61的数据库。另外,第2复制部76使日志存储于日志保存部63。并且,第2复制部76使识别符存储部62存储日志的识别符。

恢复部77,在服务器装置30被重新启动的情况下,基于存储于日志保存部63的日志,将存储于数据保存部61的数据库复原。例如,恢复部77,在通常的动作时,定期取得存储于数据保存部61的数据库的图像并存储于例如非易失性的存储装置。在进行了重新启动的情况下,恢复部77读出距故障发生点最近的时间点的数据库的图像并存储于数据保存部61。接下来,恢复部77,从日志保存部63读出取得该图像的时间点之后的日志,并基于所读出的日志将数据库复原到故障即将发生前的时间点。

另外,恢复部77在被重新启动并复原了数据库的情况下,基于存储于日志保存部63的日志的识别符,将存储于识别符存储部62的识别符的列表复原。

图8是表示客户端装置50的处理的流程图。客户端装置50在从应用程序收到数据库的操作的指示的情况下,执行图8所示的处理。

首先,客户端装置50生成操作信息(步骤s31)。接下来,客户端装置50生成识别符(步骤s32)。接下来,客户端装置50生成对操作信息附加了识别符的消息(步骤s33)。接下来,客户端装置50对主装置的服务器装置30发送消息(步骤s34)。

接下来,客户端装置50判断是否从主装置的服务器装置30接收到表示与操作信息对应的处理已成功的结果(步骤s35)。客户端装置50,在未接收到表示已成功的结果的情况下(s35中的否),判断是否从发送操作信息后经过了规定时间而超时、或者是否接收到表示与操作信息对应的处理失败的结果(步骤s36)。客户端装置50,在没超时也没接收到表示失败的结果的情况下(s36中的否),使处理返回到步骤s35,反复进行步骤s35和步骤s36的处理。

在接收到表示已成功的结果的情况下(s35中的是),客户端装置50对应用程序通知数据库的操作已成功(步骤s37),并结束本流程。

在超时或者接收到表示失败的结果的情况下(s36中的是),客户端装置50判断从最初发送操作信息之后是否经过了故障转移时间(步骤s38)。在经过了故障转移时间的情况下(s38中的是),客户端装置50对应用程序通知数据库的操作失败(步骤s39),结束本流程。

在未经过故障转移时间的情况下(s38中的否),客户端装置50向协调装置40查询主装置的服务器装置30(步骤s40)。接下来,客户端装置50对查询而获得的主装置的服务器装置30,发送同一消息即附加了同一识别符的同一操作信息(步骤s41)。客户端装置50使步骤s41结束后,使处理返回到骤s35,反复进行处理。

图9是表示主装置的服务器装置30的处理的流程图。主装置的服务器装置30,在从客户端装置50接收到消息(附加了识别符的操作信息)的情况下,执行图9所示的处理。

首先,操作部72,从存储于识别符存储部62的识别符的列表,将故障转移时间前的时间点之前的识别符删除(步骤s51)。由此,操作部72能够从识别符存储部62删除不需要的识别符而高效地使用存储器容量。

接下来,操作部72检查从客户端装置50接收到的操作信息的识别符是否被存储于识别符存储部62(步骤s52)。在操作信息的识别符被存储于识别符存储部62的情况下(s52中的是),操作部72不执行任何处理。并且,在此情况下(s52中的是),结果发送部75,将表示与所接收到的操作信息对应的处理已成功的结果发送至客户端装置50(步骤s58),并结束本流程。

在所接收到的操作信息的识别符未存储于识别符存储部62的情况下(s52中的否),操作部72,使所接收到的操作信息的识别符存储于识别符存储部62(步骤s53)。在此情况下,操作部72对识别符附加时刻信息。时刻例如是接收到操作信息的时刻。由此,操作部72能够将在故障转移时间前的时间点之前接收到的识别符,从识别符存储部62删除。

接下来,操作部72,对应于所接收到的操作信息,对存储于数据保存部61的数据库进行操作(步骤s54)。

接下来,日志处理部73生成通过数据库的操作而产生的数据库的变更的日志(步骤s55)。在此情况下,日志处理部73对数据库的变更的日志附加操作信息的识别符。并且,日志处理部73使附加了识别符的日志存储于日志保存部63。

接下来,第1复制部74在其与从装置的服务器装置30间执行复制(步骤s56)。具体而言,第1复制部74对从装置的服务器装置30发送附加了识别符的日志,并从从装置的服务器装置30接收表示复制已成功的结果。

接下来,操作部72改写存储于数据保存部61的数据库,并确定通过数据库的操作而产生的数据库的变更(步骤s57)。然后,结果发送部75,将表示与操作信息对应的处理已成功的结果发送至客户端装置50(步骤s58),并结束本流程。

另外,在从步骤s52到步骤s58的某一个处理未成功的情况下,结果发送部75将表示与操作信息对应的处理失败的结果发送至客户端装置50,并结束本流程。在此情况下,操作部72及日志处理部73使执行了的处理重新运行,使数据保存部61及日志保存部63返回到操作信息的接收前的状态。

图10是表示从装置的服务器装置30的处理的流程图。从装置的服务器装置30在从主装置的服务器装置30接收了复制的执行请求的情况下,执行图10所示的处理。

首先,第2复制部76从主装置的服务器装置30接收附加了识别符的日志(步骤s61)。接下来,第2复制部76将从主装置的服务器装置30接收到的日志,以附加有识别符的状态存储于日志保存部63(步骤s62)。接下来,第2复制部76从存储于识别符存储部62的识别符的列表,将故障转移时间前的时间点之前的识别符删除(步骤s63)。

接下来,第2复制部76将被附加于从主装置的服务器装置30接收到的日志的识别符,存储于识别符存储部62(步骤s64)。在此情况下,第2复制部76对识别符附加时刻信息。时刻信息例如是附加了识别符的操作信息的接收时刻。由此,第2复制部76能够将在故障转移时间前的时间点之前接收到的识别符从识别符存储部62删除。

接下来,第2复制部76,对应于从主装置的服务器装置30接收到的日志,变更存储于数据保存部61的数据库(步骤s65)。数据库的变更已成功的情况下,第2复制部76对主装置的服务器装置30回复表示复制已成功的结果(步骤s66),并结束本流程。

图11是表示恢复时的服务器装置30的处理的流程图。服务器装置30在例如由于网络的错误等而重新启动的情况下,执行图11所示的恢复处理。

首先,恢复部77从日志保存部63读出数据库的变更的日志(步骤s71)。另外,恢复部77,在定期取得存储于数据保存部61的数据库的图像并存储于例如非易失性的存储装置的情况下,还读出最新的数据库的图像。在此情况下,恢复部77只要读出取入了最新的数据库的图像的时间点后的日志即可。

接下来,恢复部77基于所读出的日志,将存储于数据保存部61的数据库复原为故障发生时的状态(步骤s72)。作为一例,恢复部77基于日志依次更新最新的数据库的图像,由此将数据库复原为故障发生时的状态。

接下来,恢复部77基于存储于日志保存部63的日志的识别符,将存储于识别符存储部62的识别符的列表复原(步骤s73)。并且,在步骤s73的处理完成的情况下,恢复部77结束本流程。

图12是表示数据库的操作时的处理的流程的图。数据库系统10在对数据库进行操作的情况下,用图12所示的流程推进处理。

首先,客户端装置50将附加了识别符(例如#11)的操作信息发送至主装置的服务器装置30(步骤s111)。接下来,主装置的服务器装置30的信息处理部64检查所接收到操作信息的识别符是否被存储于识别符存储部62(步骤s112)。在操作信息的识别符未被存储于识别符存储部62的情况下,信息处理部64使所接收到的操作信息的识别符存储于识别符存储部62(步骤s113)。

接下来,主装置的服务器装置30的信息处理部64,对应于操作信息,对存储于数据保存部61的数据库进行操作(步骤s114)。接下来,主装置的服务器装置30的信息处理部64生成数据库的变更的日志,并存储于日志保存部63(步骤s115)。在此情况下,信息处理部64对日志附加操作信息的识别符。

接下来,主装置的服务器装置30的信息处理部64,对从装置的服务器装置30的信息处理部64,发送附加了识别符的日志(步骤s116)。接下来,从装置的服务器装置30的信息处理部64将所接收到的日志,以附加有识别符的状态存储于日志保存部63(步骤s117)。接下来,从装置的服务器装置30的信息处理部64将被附加于所接收到的日志的识别符,存储于识别符存储部62(步骤s118)。接下来,从装置的服务器装置30的信息处理部64,对应于所接收到的日志,变更存储于数据保存部61的数据库(步骤s119)。然后,从装置的服务器装置30的信息处理部64,对主装置的服务器装置30发送表示复制已成功的处理结果(步骤s120)。

接下来,主装置的服务器装置30的信息处理部64,对数据保存部61内的数据库写入变更内容,由此确定通过数据库的操作而产生的数据库的变更(步骤s121)。然后,主装置的服务器装置30的信息处理部64,将表示与操作信息对应的处理已成功的结果发送至客户端装置50(步骤s122)。

图13是表示故障时的处理的流程的图。数据库系统10在主装置的服务器装置30发生了故障的情况下,以图13所示的流程推进处理。

在主装置的服务器装置30发生了故障的情况下,协调装置40,将某1个从装置的服务器装置30变更为主装置(步骤s131)。接下来,客户端装置50将附加了识别符(例如#12)的操作信息,发送至原来的主装置的服务器装置30(步骤s132)。但是,原来的主装置的服务器装置30发生了故障,所以无法回复处理结果。

客户端装置50在发送操作信息后经过了规定时间由此超时之时,向协调装置40查询主装置的服务器装置30(步骤s133)。协调装置40针对客户端装置50,回答新的主装置的服务器装置30(步骤s134)。

图14是表示将未处理的操作信息重新发送至从从装置被变更为主装置的服务器装置30的情况下的处理的流程的图。客户端装置50将未处理的操作信息重新发送至从从装置被变更为主装置的服务器装置30的情况下,数据库系统10接着图13的处理,以图14所示的流程推进处理。

首先,客户端装置50将附加了识别符(例如#12)的操作信息,重新发送至新的主装置的服务器装置30(步骤s135)。在此情况下,客户端装置50重新发送与已对原来的主装置的服务器装置30发送的操作信息及识别符相同的操作信息及识别符。

接下来,新的主装置的服务器装置30的信息处理部64,检查所接收到的操作信息的识别符是否被存储于识别符存储部62(步骤s136)。在本例中,服务器装置30为未处理,所以识别符存储部62未存储有操作信息的识别符(#12)。

接下来,新的主装置的服务器装置30的信息处理部64,使所接收到的操作信息的识别符存储于识别符存储部62(步骤s137)。接下来,新的主装置的服务器装置30的信息处理部64,对应于操作信息,对存储于数据保存部61的数据库进行操作(步骤s138)。接下来,新的主装置的服务器装置30的信息处理部64生成数据库的变更的日志,并存储于日志保存部63(步骤s139)。

接下来,新的主装置的服务器装置30的信息处理部64,确定通过数据库的操作而产生的数据库的变更(步骤s140)。然后,主装置的服务器装置30的信息处理部64,将表示与操作信息对应的处理已成功的结果发送至客户端装置50(步骤s141)。另外,在设定了从装置的服务器装置30的情况下,主装置的服务器装置30及从装置的服务器装置30执行复制。

图15是表示将处理完毕的操作信息重新发送至从从装置被变更为主装置的服务器装置30的情况下的处理的流程的图。

在复制完成了的情况下,在从装置的服务器装置30的数据保存部61中,存储有与操作信息对应的变更已完成后的数据库。另外,在从装置的服务器装置30的识别符存储部62中,存储有由客户端装置50发送的操作信息的识别符(例如#12)。

但是,设为,在复制完成后,对客户端装置50回复成功之前,主装置的服务器装置30发生了故障。在此情况下,客户端装置50对新的主装置的服务器装置30,重新发送附加了同一识别符(例如#12)的同一操作信息(步骤s151)。

在此情况下,在原来是从装置的新的主装置的服务器装置30的识别符存储部62中,已经存储有操作信息的识别符(#12)(步骤s152)。因此,信息处理部64对于存储于数据保存部61的数据库不执行任何处理。并且,新的主装置的服务器装置30的信息处理部64,将表示与所接收到的操作信息对应的处理已成功的结果发送至客户端装置50(步骤s153)。

图16是表示主装置的服务器装置30重新启动并再次被设定为主装置的情况下的处理的流程的图。

在日志的生成及存储完成的情况下,在主装置的服务器装置30的日志保存部63中,存储有与操作信息对应的数据库的变更的日志。但是,设为,在日志的存储完成后,对客户端装置50发送表示已成功的结果前,主装置的服务器装置30的网络例如暂时被切断。在此情况下,主装置的服务器装置30在关机后进行重新启动。

服务器装置30的信息处理部64,在进行了重新启动的情况下,读出存储于日志保存部63的日志,将存储于数据保存部61的数据库复原为即将重新启动前的状态(步骤s161)。并且,服务器装置30的信息处理部64,在进行了重新启动的情况下,读出被附加于在日志保存部63中所存储的日志的识别符,将存储于识别符存储部62的识别符的列表,复原为即将重新启动前的状态(步骤s162)。

另外,协调装置40,在主装置的服务器装置30重新启动了的情况下,再次进行主装置及从装置的设定。在此情况下,协调装置40可以将同一服务器装置30设定为主装置。

图17是表示将处理完毕的操作信息重新发送至在重新启动后再次被设定为主装置的服务器装置30的情况下的处理的流程的图。

例如,在与某识别符(#14)的操作信息对应的数据库的变更的日志的生成及存储完成的情况下,在主装置的服务器装置30的日志保存部63中,存储有该日志。另外,在主装置的服务器装置30的识别符存储部62中,存储有客户端装置50发送的操作信息的识别符(例如#14)。

但是,设为,在日志的存储完成后,发送表示已成功的结果前,主装置的服务器装置30关机,之后,重新启动并再次被设定为主装置。在此情况下,客户端装置50对主装置的服务器装置30,重新发送附加了同一识别符(例如#14)的同一操作信息(步骤s163)。

在此情况下,在主装置的服务器装置30的识别符存储部62中,通过复原而存储有操作信息的识别符(#14)(步骤s164)。因此,信息处理部64对于存储于数据保存部61的数据库不执行任何处理。并且,主装置的服务器装置30的信息处理部64,将表示与所接收到的操作信息对应的处理已成功的结果发送至客户端装置50(步骤s165)。

如以上所述,根据本实施方式的数据库系统10,事先将附加于操作信息的识别符附加于数据库的变更的日志并存储,所以能够在从客户端装置50重新发送了同一操作信息的情况下消除重复执行。例如,根据数据库系统10,即使服务器装置30从从装置被变更为主装置的情况下、或者主装置的服务器装置30在重新启动后再次被设定为主装置的情况下,也能够将附加于操作信息的识别符从日志复原,所以能够在从客户端装置50重新发送了同一操作信息的情况下消除重复执行。

图18是表示实施方式的信息处理装置200的硬件构成的图。服务器装置30、协调装置40及客户端装置50,通过例如图18所示那样的硬件构成的信息处理装置200来实现。

该信息处理装置200具备:cpu(centralprocessingunit)201、ram(randomaccessmemory)202、rom(readonlymemory)203、操作输入装置204、显示装置205、存储装置206及通信装置207。并且,上述各部,通过总线连接。

cpu201是按照程序执行运算处理及控制处理等的处理器。cpu201将ram202的规定区域作为作业区域,通过与存储于rom203及存储装置206等的程序的协作来执行各种处理。

ram202是sdram(synchronousdynamicrandomaccessmemory)等的存储器。ram202作为cpu201的作业区域发挥功能。rom203是将程序及各种信息以不能改写的方式存储的存储器。

操作输入装置204是鼠标及键盘等输入器件。操作输入装置204受理从用户操作输入的信息作为指示信号,并输出指示信号至cpu201。

显示装置205是lcd(liquidcrystaldisplay)等的显示器件。显示装置205基于来自cpu201的显示信号,显示各种信息。

存储装置206是在闪存存储器等的基于半导体的存储介质、或者能够以磁性或光学方式记录的存储介质等中写入及读出数据的装置。存储装置206对应于来自cpu201的控制,对存储介质进行数据的写入及读出。通信装置207对应于来自cpu201的控制,经由网络与外部的设备通信。

服务器装置30中执行的程序成为,包括操作接收模块、操作模块、日志处理模块、第1复制模块、结果发送模块、第2复制模块及恢复模块的模块构成。该程序由cpu201(处理器)在ram202上展开来执行,由此使信息处理装置200作为操作接收部71、操作部72、日志处理部73、第1复制部74、结果发送部75、第2复制部76及恢复部77发挥功能。另外,服务器装置30不限于这样的构成,也可以是通过硬件电路(例如半导体集成电路)来实现操作接收部71、操作部72、日志处理部73、第1复制部74、结果发送部75、第2复制部76及恢复部77的至少一部分的构成。

客户端装置50执行的程序成为,包括操作信息生成模块、识别符生成模块、操作发送模块及结果接收模块的模块构成。该程序通过由cpu201(处理器)在ram202上展开来执行,由此使信息处理装置200作为操作信息生成部51、识别符生成部52、操作发送部53及结果接收部54发挥功能。另外,客户端装置50不限于这样的构成,可以是通过硬件电路(例如半导体集成电路)实现操作信息生成部51、识别符生成部52、操作发送部53及结果接收部54的至少一部分的构成。

另外,服务器装置30或者客户端装置50执行的程序,以计算机能够装载的格式或者能够执行的格式的文件,记录在cd-rom、软盘、cd-r、dvd(digitalversatiledisk)等的计算机可读取的记录介质中提供。

另外,也可以构成为将服务器装置30或者客户端装置50执行的程序存储于与因特网等网络连接的计算机上,并经由网络下载来提供。另外,也可以构成为经由因特网等的网络来提供或者分发服务器装置30或者客户端装置50执行的程序。另外,也可以构成为将服务器装置30或者客户端装置50执行的程序预先装入到rom等中来提供。

对本发明的几个实施方式进行了说明,但这些实施方式是作为例子提示的,意图不是限定发明的范围。这些新的实施方式,能够以其他各种方式实施,在不脱离发明的宗旨的范围内,能够进行各种省略、替换、变更。这些实施方式及其变形,包含在发明的范围、宗旨中,并且包含在权利要求书所记载的发明及其等同的范围中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1