主备控制中心数据库同步系统的制作方法

文档序号:14444227阅读:178来源:国知局
本发明涉及轨道控制
技术领域
:,具体涉及一种主备控制中心数据库同步系统。
背景技术
::在自动列车监控ats系统中,存在一个主控制中心和一个备控制中心,主控制中心中包含主数据库服务器、备数据库服务器和磁盘阵列;备控制中心中包含主数据库服务器、备数据库服务器和磁盘阵列。在上述的物理架构中,数据库文件存放在磁盘阵列中,在数据库应用存取数据库时,直接连接数据库服务器,在数据库服务器完成存取数据库的操作。在ats系统中,所有数据库应用在同一时刻,只读写一个控制中心的数据库。这样,另一个控制中心接收不到任何数据,因此,需要有一个方案来解决数据同步到另一个控制中心的问题。技术实现要素:针对现有技术中的缺陷,本发明提供一种主备控制中心数据库同步系统,本发明能够解决主备控制中心数据库同步的问题。为实现上述目的,本发明提供以下技术方案:本发明提供了一种主备控制中心数据库同步系统,包括:主控制中心和备控制中心;所述主控制中心包括第一主数据库服务器和第一备数据库服务器;所述备控制中心包括第二主数据库服务器和第二备数据库服务器;所述第一主数据库服务器、第一备数据库服务器、第二主数据库服务器和第二备数据库服务器上分别部署有数据同步单元;其中,所述第一主数据库服务器、第一备数据库服务器、第二主数据库服务器和第二备数据库服务器中的数据同步单元均用于执行以下过程:判断所述数据同步单元所在的服务器是否为作业服务器,并在判断所述数据同步单元所在的服务器是作业服务器时连接本地数据库服务器,若连接正常,则查询本地数据库服务器是否存在变化数据,若是,则连接目标数据库服务器,并将所述变化数据同步至所述目标数据库服务器;其中,所述本地数据库服务器为所述数据同步单元所在的服务器,所述目标数据库服务器为除所述数据同步单元所在的服务器以外的其他三个数据库服务器。进一步地,所述主控制中心还包括第一磁盘阵列,所述第一磁盘阵列供所述第一主数据库服务器和所述第一备数据库服务器读写数据库文件所用;所述备控制中心还包括第二磁盘阵列,所述第二磁盘阵列供所述第二主数据库服务器和所述第二备数据库服务器读写数据库文件所用;相应地,部署在所述第一主数据库服务器上的数据同步单元通过查询第一磁盘阵列上与所述第一主数据库服务器对应的工作区是否存在变化数据进而判断所述第一主数据库服务器是否存在变化数据;部署在所述第一备数据库服务器上的数据同步单元通过查询第一磁盘阵列上与所述第一备数据库服务器对应的工作区是否存在变化数据进而判断所述第一备数据库服务器是否存在变化数据;部署在所述第二主数据库服务器上的数据同步单元通过查询第二磁盘阵列上与所述第二主数据库服务器对应的工作区是否存在变化数据进而判断所述第二主数据库服务器是否存在变化数据;部署在所述第二备数据库服务器上的数据同步单元通过查询第二磁盘阵列上与所述第二备数据库服务器对应的工作区是否存在变化数据进而判断所述第二备数据库服务器是否存在变化数据。进一步地,所述数据同步单元基于oracle数据库的闪回查询结果,通过轮询方式,查询本地数据库服务器是否存在变化数据,其中,轮询时间间隔要小于oracle数据库的闪回查询时间间隔。进一步地,所述数据同步单元将所述变化数据同步至所述目标数据库服务器,具体包括:所述数据同步单元将所述变化数据的非二进制字段转换为sql语句,并在所述目标数据库服务器中执行所述sql语句,将所述变化数据同步至所述目标数据库服务器中。进一步地,当所述数据同步单元在所述目标数据库服务器中执行所述sql语句失败时,向ats系统发送报警信息,回滚sql,并继续执行所述sql语句。进一步地,所述数据同步单元在查询本地数据库服务器是否存在变化数据之前,还用于:判断本地数据库服务器是否存在未同步数据,若是,则将未同步数据同步至所述目标数据库服务器。进一步地,所述数据同步单元在连接目标数据库服务器失败时,将所述变化数据存储至本地数据库服务器,并标记为未同步数据。进一步地,所述数据同步单元用于根据ats系统发送的消息判断所述数据同步单元所在的服务器是否为作业服务器。进一步地,所述数据同步单元还用于在判断所述数据同步单元所在的服务器不是作业服务器时,继续接收ats系统发送的消息并根据接收到的信息持续判断所述数据同步单元所在的服务器是否为作业服务器。进一步地,所述第一主数据库服务器、第一备数据库服务器、第二主数据库服务器和第二备数据库服务器上还分别部署有监督单元,所述监督单元用于监督对应数据库服务器上的数据同步单元,并在数据同步单元发生异常时,重新启动数据同步单元。由上述技术方案可知,本发明提供的主备控制中心数据库同步系统,在主备控制中心的四台数据库服务器分别部署数据同步单元,由数据同步单元确定当前哪个控制中心的哪台服务器为作业服务器,并将作业服务器上的变化数据同步至其他非作业服务器,从而实现主备控制中心的数据同步。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的主备控制中心数据库同步系统的结构示意图;图2是本发明实施例提供的数据同步单元处理过程的一种示意图;图3是本发明实施例提供的数据同步单元处理过程的另一种示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。可以理解的是,实现主备控制中心的数据同步,实质上是保持主备控制中心数据的一致性。在主备控制中心发生数据不一致时,首先要确定以哪边的数据为准,即确定生产库在主控制中心还是备控制中心。然后,将不一致的数据同步到数据不完整的控制中心。根据这一思路,本发明提供了一种主备控制中心数据库同步系统,用于解决主备控制中心数据库同步的问题。下面将通过具体实施例对本发明提供的主备控制中心数据库同步系统进行详细介绍。本发明一实施例提供了一种主备控制中心数据库同步系统,参见图1,包括:主控制中心和备控制中心;所述主控制中心包括第一主数据库服务器和第一备数据库服务器;所述备控制中心包括第二主数据库服务器和第二备数据库服务器;所述第一主数据库服务器、第一备数据库服务器、第二主数据库服务器和第二备数据库服务器上分别部署有数据同步单元;其中,所述第一主数据库服务器、第一备数据库服务器、第二主数据库服务器和第二备数据库服务器中的数据同步单元均用于执行图2所示的过程:判断所述数据同步单元所在的服务器是否为作业服务器,并在判断所述数据同步单元所在的服务器是作业服务器时连接本地数据库服务器,若连接正常,则查询本地数据库服务器是否存在变化数据,若是,则连接目标数据库服务器,并将所述变化数据同步至所述目标数据库服务器;其中,所述本地数据库服务器为所述数据同步单元所在的服务器,所述目标数据库服务器为除所述数据同步单元所在的服务器以外的其他三个数据库服务器。可以理解的是,所述主控制中心还包括第一磁盘阵列,所述第一磁盘阵列供第一主数据库服务器和第一备数据库服务器读写数据库文件所用。同理,所述备控制中心还包括第二磁盘阵列,所述第二磁盘阵列供第二主数据库服务器和第二备数据库服务器读写数据库文件所用。相应地,部署在所述第一主数据库服务器上的数据同步单元通过查询第一磁盘阵列上与所述第一主数据库服务器对应的工作区是否存在变化数据进而判断所述第一主数据库服务器是否存在变化数据;部署在所述第一备数据库服务器上的数据同步单元通过查询第一磁盘阵列上与所述第一备数据库服务器对应的工作区是否存在变化数据进而判断所述第一备数据库服务器是否存在变化数据;部署在所述第二主数据库服务器上的数据同步单元通过查询第二磁盘阵列上与所述第二主数据库服务器对应的工作区是否存在变化数据进而判断所述第二主数据库服务器是否存在变化数据;部署在所述第二备数据库服务器上的数据同步单元通过查询第二磁盘阵列上与所述第二备数据库服务器对应的工作区是否存在变化数据进而判断所述第二备数据库服务器是否存在变化数据。可以理解的是,所述数据同步单元可以为实体硬件单元,也可以为虚拟软件单元。当所述数据同步单元为虚拟软件单元,所述虚拟软件单元可以理解为能够实现上述同步功能的计算机程序(如同步程序)。当所述数据同步单元为实体硬件单元时,可以理解成,其上运行有能够实现上述同步功能的计算机程序。由上面描述可知,本实施例提供的主备控制中心数据库同步系统,在主备控制中心的四台数据库服务器分别部署数据同步单元,由数据同步单元确定当前哪个控制中心的哪台服务器为作业服务器,并将作业服务器上的变化数据同步至其他非作业服务器,从而实现主备控制中心的数据同步。在一种优选实施方式中,所述数据同步单元基于oracle数据库的闪回查询结果,通过轮询方式,查询本地数据库服务器是否存在变化数据,其中,轮询时间间隔要小于oracle数据库的闪回查询时间间隔。在一种优选实施方式中,所述数据同步单元将所述变化数据同步至所述目标数据库服务器,具体包括:所述数据同步单元将所述变化数据的非二进制字段转换为sql语句,并在所述目标数据库服务器中执行所述sql语句,将所述变化数据同步至所述目标数据库服务器中。在一种优选实施方式中,当所述数据同步单元在所述目标数据库服务器中执行所述sql语句失败时,向ats系统发送报警信息,回滚sql,并继续执行所述sql语句。在一种优选实施方式中,所述数据同步单元在查询本地数据库服务器是否存在变化数据之前,还用于:判断本地数据库服务器是否存在未同步数据,若是,则将未同步数据同步至所述目标数据库服务器。在一种优选实施方式中,所述数据同步单元在连接目标数据库服务器失败时,将所述变化数据存储至本地数据库服务器,并标记为未同步数据。可以理解的是,所述数据同步单元在连接目标数据库服务器失败时,可以将所述变化数据以sql语句方式存储至本地数据库服务器,并标记为未同步数据。例如,将未同步数据用文件保存,以将文件命名为save.sql,以标记该文件中的数据为未同步的数据。在一种优选实施方式中,所述数据同步单元用于根据ats系统发送的消息判断所述数据同步单元所在的服务器是否为作业服务器。在一种优选实施方式中,所述数据同步单元还用于在判断所述数据同步单元所在的服务器不是作业服务器时,继续接收ats系统发送的消息并根据接收到的信息持续判断所述数据同步单元所在的服务器是否为作业服务器。在一种优选实施方式中,所述数据同步单元在连接本地数据库服务器的过程中若出现异常,则向ats系统发送报警信息。在一种优选实施方式中,所述第一主数据库服务器、第一备数据库服务器、第二主数据库服务器和第二备数据库服务器上还分别部署有监督单元,所述监督单元用于监督对应数据库服务器上的数据同步单元,并在数据同步单元发生异常时,重新启动数据同步单元。下面结合图3通过一个更为具体的实施例来对本发明提供的方案进行详细解释说明。其中,安装在四个数据服务器上的数据同步单元进行数据同步的过程如下所所述:首先,数据同步单元通过轮询方式轮询作业服务器的变化数据,发现数据发生变化时,即时将变化数据同步到非作业控制中心的数据库服务器。若系统采用的是oracle数据库,则轮询作业服务器的变化数据可以利用oracle数据库的闪回查询。由于闪回查询只保存一段时间内变化的数据,因此,轮询时间需要设置的比数据库闪回查询的时间更短。然后,在查询到变化数据后,将变化数据的非二进制字段转换为sql的形式,在非作业控制中心的数据库服务器执行sql,将变化数据同步到非作业控制中心的数据库服务器中。如果非作业控制中心的数据库服务器发生问题,那么将变化数据非二进制字段的sql保存在作业控制中心的磁盘阵列上,文件名为save.sql,每一行的格式为“[序号][sql语句]”的形式。其中,[序号]是数据库服务器中的变化数据在闪回查询时获取到的数据的id号,[sql语句]则是一条变化的数据库记录形成的sql。对于二进制的字段,将每条记录的每个二进制字段的信息分别保存为一个文件,文件名以“sqlid_字段名_yyyymmdd.dat”的方式保存在磁盘阵列中的用户指定位置。文件名中sqlid是保存的sql的顺序号,yyyymmdd是日期格式。sqlid是save.sql文件中二进制数据对应的非二进制sql语句的序号,字段名是二进制字段在表中的字段名称。当一条记录中没有二进制字段时,不会形成这个文件。当一条记录有n个二进制字段时,则会形成n个文件。例如,在数据库中有表tablea,tableb,两个表的结构如表1、表2所示:表1数据库表tablea的表结构字段名称字段类型是否主键列车类型integer是日期datetime是记录人varchar(20)是表2数据库表tableb的表结构字段名称字段类型是否主键配置文件名称varchar(30)是配置文件blob修改人varchar(20)是假设在2017年10月18日16:36,tablea表中变化了两条数据,通过表中的变更标志,可以看出一条增加,一条删除,如表3所示;tableb表中变化了一条数据,通过表中的变更标志,可以看出是一条增加的数据,如表4所示。:表3数据库表tablea中发生改变的数据与改变的方式列车类型日期记录人变更标志120170908张三增加120170908李四删除表4数据库表tablea中发生改变的数据与改变的方式配置文件名称配置文件修改人变更标志config<sdf>sf<dsf>王五增加上述结构中,tableb的“配置文件”字段是二进制字段,其他的都为非二进制字段。表中变化数据中,最后一列是进行闪回查询时,数据库附加的列,表示本条记录产生的是何种变化,即增加,修改或删除。上述两个表变更的三条记录分别组成下述三条sql语句:①insertintotablea(列车类型,日期,记录人)values(1,to_date('20170908','yyyymmdd'),'张三');②deletefromtableawhere列车类型=1and日期=to_date('20170908','yyyymmdd');③insertintotableb(配置文件名称,配置文件,修改人)values(‘config’,$para,'王五');其中,$para代表二进制流“<sdf>sf<dsf>”,在组成语句后,连接非作业控制中心的数据库服务器,在这个数据库中执行这三条语句。如果非作业控制中心的数据库服务器发生问题,那么文件save.sql中的内容为:①insertintotablea(列车类型,日期,记录人)values(1,to_date('20170908','yyyymmdd'),'张三');②deletefromtableawhere列车类型=1and日期=to_date('20170908','yyyymmdd');③insertintotableb(配置文件名称,配置文件,修改人)values(‘config’,$para,'王五');在save.sql的文件中,每行前面的序号就是sqlid,即保存的sql的顺序号。由于只有tableb表存在一个二进制字段,而且,tableb中只有一条改变的记录,因此,在生成save.sql文件的同时,会生成一个名为3_配置文件_20171018.dat的文件,文件的内容为:“<sdf>sf<dsf>”,这个文件的内容就是二进制字段的内容。最后,在确认作业服务器的数据库连接正常后,查找是否有以前未同步的数据,如果有,那么先同步以前未同步数据。未同步的数据是在以sql的方式保存在本地,每个sql有一个序号,在同步这些未同步数据时,就是将这些sql数据执行一次,执行成功后将持久化存储的未同步数据删除,整个执行流程如图3所示。可见,通过上面的处理方式,解决了主备控制中心数据库同步的问题,同步的实时性的好坏通过调整轮询作业库的间隔时间来实现。以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1