具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
图1为本发明实施例提供的一种数据库同步方法的流程示意图。本实施例中,该方法的执行主体可以为数据库同步装置。如图1所示,该方法包括以下步骤:
101、监听源数据库的日志,捕获所述源数据库的数据变化信息。
具体地,数据库同步装置对源数据库的日志进行监听,在源数据库的日志发生变化时,数据库同步装置捕获到该源数据库的数据变化信息。例如,源数据库可以为结构化查询语句(Structured Query Language,简称SQL)数据库,相应的,数据变化信息可以为SQL数据变化语句。
102、确定待同步的各目标数据库的类型。
实际应用中,数据库同步装置可与多个数据库进行连接,在获取到数据变化信息后,数据库同步装置可以确定待同步的各目标数据库的类型。本实施例中,目标数据库的类型包括:源数据库的完全备份数据库、源数据库的部分备份数据库、用于存储数据变化信息的文件数据库、与源数据库异构的数据库,本实施例中,源数据库为关系型数据库,而与源数据库异构的数据库为内存型数据库。为了便于表达和区分不同类型的数据库,本实施例中将源数据库的完全备份数据库称为第一数据库、源数据库的部分备份数据库称为第二数据库、内存型数据库称为第三数据库以及将用于存储数据变化信息的文件数据库称为第四数据库。
103、获取与各目标数据库的类型对应的同步规则。
本实施例中,数据库同步装置中预先存储各类型目标数据库对应的同步规则。在确定出目标数据库的类型后,数据库同步装置根据各目标数据库的类型,获取与各类型目标数据库相应的同步规则。具体地,在数据库同步装置中预先存储目标数据库的类型标识与同步规则标识之间的映射关系,当确定出目标数据库的类型后,根据待同步的各目标数据库的类型标识查询上述映射关系,可以获取到与各目标数据库对应的同步规则标识,根据各目标数据库对应的同步规则标识,得到与各目标数据库对应的同步规则。
104、根据所述数据变化信息和各目标数据库对应的所述同步规则,将各目标数据库与所述源数据库进行数据同步。
具体地,如果待同步的目标数据库的类型为第一数据库,即第一数据库为源数据库的完全备份的数据库时,则获取到的与第一数据库对应的同步规则为:根据获取到的数据变化信息,将源数据库中所有数据变化同步到该第一数据库中。
如果待同步的目标数据库的类型为第二数据库,即第二数据库为源数据库的部分备份,则获取到的与第二数据库对应的同步规则为:从数据变化信息中获取与第二数据库对应的第一数据变化信息,将第一数据变化信息对应的数据变化同步到第二数据库中。
如果待同步的目标数据库的类型为第三数据库,其中,源数据库为关系型数据库,该第三数据库为内存型数据库,则获取到的与第三数据库对应的同步规则中包括预设的源数据库中数据表与第三数据库中数据表之间的映射关系,获取与源数据库中数据表相关的第二数据变化信息,根据所述第二数据变化信息以及该映射关系,将第二数据变化信息对应的数据变化同步到第三数据库中。
如果待同步的目标数据库的类型为第四数据库,即第四数据库为用于存储数据变化信息的文件型数据库,则获取到的与第四数据库对应的同步规则为:将数据变化信息存储到该第四数据库中。
相应地,当目标数据库为第一数据库时,数据库同步装置根据该数据变化信息和第一数据库对应的同步规则,将源数据库中所有数据变化同步到该第一数据库中。
相应地,当目标数据库为第二数据库时,数据库同步装置从数据变化信息中获取该第二数据库对应的第一数据变化信息,然后将第一数据变化信息对应的数据变化同步到第二数据库中。例如,第二数据库为源数据库中某一个子集的备份数据库,则数据库同步装置从数据变化信息中获取该子集的数据变化信息即第一数据变化信息,然后根据该第一数据变化信息将该子集的数据变化同步到第二数据库中,这样就能够保证第二数据库与源数据库中该子集的同步。
相应地,当目标数据库为第三数据库时,数据库同步装置查询第三数据库对应的同步规则中源数据库中数据表与第三数据库中数据表之间的映射关系,基于映射关系中源数据库中数据表,获取与源数据库中数据表相关的第二数据变化信息,根据该第二数据变化信息和上述映射关系,将第二数据变化信息对应的数据变化同步到第三数据库中的数据表中。本实施例实现了关系型数据库与内存型数据库的同步。
相应地,当目标数据库为第四数据库时,数据库同步装置将数据变化信息同步到第四数据库中。
进一步地,数据库同步装置还可以在源数据库与目标数据库进行同步过程中,监测是否发生数据同步中断,例如,目标数据库因为硬件或网络故障导致数据同步无法进行,就会造成数据同步的中断。在监测到所述数据同步中断时,记录所述数据同步中断发生的中断点,以保证在所述数据同步中断恢复后,将所述中断点后的数据变化同步到所述目标数据库中。
进一步地,数据库同步装置在获取到数据变化信息后,还可以对数据变化信息进行预处理,例如,当数据变化信息为SQL数据变化语句时,对该SQL数据变化语句进行解析,得到数据变化信息。
数据库同步装置还可以获取到每个数据变化信息的关键字,然后根据关键字对数据变化信息进行过滤,以降低待同步的数据量。本实施例中,在数据库同步装置中设置一个用于对数据变化信息进行过滤的列表,该列表中存储有用于过滤的关键字,当数据库同步装置监听到的数据变化信息中包括的关键字为该列表中关键字时,将该数据变化信息过滤掉,这样待同步的数据变化信息就可以得到精简,从而减少了待同步的数据的数据量,降低资源浪费,提高数据库之间的同步效率。其中上述列表可以由管理人员根据实际需求进行灵活设置。
而且数据库同步装置可以采用消息队列机制,将数据变化信息发送到消息对列中,数据库同步装置基于消息队列对所有数据变化信息,实现数据库之间的数据同步。可选地,数据库同步装置还可以对数据变化信息进行缓存,以避免数据变化信息的丢失。
本实施例提供的数据库同步方法可以应用在铁路客票系统中,目前铁路客票系统包括基于传统关系型数据库的铁路客票系统和基于内存型数据库的互联网铁路客票系统。将执行本实施例提供的数据库同步方法硬件或者软件,设置在传统铁路客票系统中的数据库与互联网铁路客票系统中的数据库之间,将其中传统铁路客票系统中的数据库作为源数据库,数据库同步装置监听源数据库的数据变化信息,然后确定互联网铁路客票系统中数据库的类型,进而获取相应的同步规则,基于同步规则和数据变化信息,将数据变化同步到该互联网铁路客票系统的数据库中,这样就实现传统铁路客票系统与互联网客票系统之间的数据同步。
本实施例提供的数据库同步方法,监听源数据库的日志,捕获源数据库的数据变化信息,确定待同步的各目标数据库的类型,根据各目标数据库的类型,获取与各目标数据库的类型对应的同步规则,根据数据变化信息和各目标数据库对应的同步规则,将各目标数据库与源数据库进行数据同步。本实施例中为不同类型的目标数据库建立不同的同步规则,在获取到源数据库的数据变化信息后,基于各目标数据库对应的同步规则,将目标数据库与源数据库进行数据同步,克服了现有技术中需要多次采集源数据库的数据变化信息问题,降低了资源浪费,并且提高了数据库之间的同步效率。
图2为本发明实施例提供的一种数据库同步装置的结构示意图。如图2所示,该数据库同步装置包括:捕获模块21、确定模块22、获取模块23和同步模块24。
具体地,捕获模块21对源数据库的日志进行监听,在源数据库的日志发生变化时,可以捕获到该源数据库的数据变化信息。例如,源数据库可以为SQL数据库,相应的,数据变化信息可以为SQL数据变化语句。
实际应用中,数据库同步装置可以与多个数据库进行连接。捕获模块21与确定模块22连接,在获取到数据变化信息后,确定模块22可以确定待同步的各目标数据库的类型。本实施例中,目标数据库的类型包括:源数据库的完全备份数据库、源数据库的部分备份数据库、用于存储数据变化信息的文件数据库、与源数据库异构的数据库,本实施例中,源数据库为关系型数据库,而与源数据库异构的数据库为内存型数据库。为了便于表达和区分不同类型的数据库,本实施例中将源数据库的完全备份数据库称为第一数据库、源数据库的部分备份数据库称为第二数据库、内存型数据库称为第三数据库以及将用于存储数据变化信息的文件数据库称为第四数据库。
本实施例中,数据库同步装置中预先存储各类型目标数据库对应的同步规则。确定模块22与获取模块23连接,在确定模块22确定出目标数据库的类型后,获取模块23根据各目标数据库的类型,获取与各类型目标数据库相应的同步规则。具体地,在数据库同步装置中预先存储目标数据库的类型标识与同步规则标识之间的映射关系,当确定出目标数据库的类型后,获取模块23根据待同步的各目标数据库的类型标识查询上述映射关系,可以获取到与各目标数据库对应的同步规则标识,根据各目标数据库对应的同步规则标识,得到与各目标数据库对应的同步规则。
具体地,如果待同步的目标数据库的类型为第一数据库,即第一数据库为源数据库的完全备份的数据库时,则获取到的与第一数据库对应的同步规则为:根据获取到的数据变化信息,将源数据库中所有数据变化同步到该第一数据库中。
如果待同步的目标数据库的类型为第二数据库,即第二数据库为源数据库的部分备份,则获取到的与第二数据库对应的同步规则为:从数据变化信息中获取与第二数据库对应的第一数据变化信息,将第一数据变化信息对应的数据变化同步到第二数据库中。
如果待同步的目标数据库的类型为第三数据库,其中,源数据库为关系型数据库,该第三数据库为内存型数据库,则获取到的与第三数据库对应的同步规则中包括预设的源数据库中数据表与第三数据库中数据表之间的映射关系,获取与源数据库中数据表相关的第二数据变化信息,根据所述第二数据变化信息以及该映射关系,将第二数据变化信息对应的数据变化同步到第三数据库中。
如果待同步的目标数据库的类型为第四数据库,即第四数据库为用于存储数据变化信息的文件型数据库,则获取到的与第四数据库对应的同步规则为:将数据变化信息存储到该第四数据库中。
本实施例中,获取模块23与同步模块24连接。在获取模块23获取到各目标数据库对应的同步规则后,同步模块24根据数据变化信息与各目标数据库的同步规则,将各目标数据库与源数据库进行数据同步。
相应地,当目标数据库为第一数据库时,同步模块24根据获取到的数据变化信息和第一数据库对应的同步规则,将源数据库中所有数据变化同步到该第一数据库中。
相应地,当目标数据库为第二数据库时,同步模块24从数据变化信息中获取与该第二数据库对应的第一数据变化信息,然后将第一数据变化信息对应的数据变化同步到第二数据库中。例如,第二数据库为源数据库中某一个子集的备份数据库,则数据库同步装置从数据变化信息中获取该子集的数据变化信息即第一数据变化信息,然后根据该第一数据变化信息将该子集的数据变化同步到第二数据库中,这样就能够保证第二数据库与源数据库中该子集的同步。
相应地,当目标数据库为第三数据库时,同步模块24查询第三数据库对应的同步规则中源数据库中数据表与第三数据库中数据表之间的映射关系,基于映射关系中源数据库中数据表,获取与源数据库中数据表相关的第二数据变化信息,根据该第二数据变化信息和上述映射关系,将第二数据变化信息对应的数据变化同步到第三数据库中的数据表中。本实施例实现了关系型数据库与内存型数据库的同步。
相应地,当目标数据库为第四数据库时,同步模块24将数据变化信息同步到第四数据库中。
进一步地,数据库同步装置还可以在源数据库与目标数据库进行同步过程中,通过同步模块24监测是否发生数据同步中断,例如,目标数据库因为硬件或网络故障导致数据同步无法进行,就会造成数据同步的中断。在监测到所述数据同步中断时,并记录所述数据同步中断发生的中断点,以保证在所述数据同步中断恢复后,将所述中断点后的数据变化同步到所述目标数据库中。
进一步地,在获取到数据变化信息后,捕获模块21还可以对数据变化信息进行预处理,例如,当数据变化信息为SQL数据变化语句时,对该SQL数据变化语句进行解析,得到数据变化信息。
捕获模块21还可以获取到每个数据变化信息的关键字,然后根据关键字对数据变化信息进行过滤,以降低待同步的数据量。本实施例中,在数据库同步装置中设置一个用于对数据变化信息进行过滤的列表,该列表中存储有用于过滤的关键字,当捕获模块21监听到的数据变化信息中包括的关键字为该列表中关键字时,将该数据变化信息过滤掉,这样待同步的数据变化信息就可以得到精简,从而减少了待同步的数据数据量,降低资源浪费,提高数据库之间的同步效率。其中上述列表可以由管理人员根据实际需求进行灵活设置。
而且同步装置24可以采用消息队列机制,将数据变化信息发送到消息对列中,然后基于消息队列对所有数据变化信息,实现数据库之间的数据同步。可选地,数据库同步装置还可以对数据变化信息进行缓存,以避免数据变化信息的丢失。
目前铁路客票系统包括基于传统关系型数据库的铁路客票系统和基于内存数据库的铁路互联网客票系统。本实施例提供的数据库同步装置,可以应用在铁路客票系统中。将执行数据同步装置设置在传统铁路客票系统与互联网铁路客票系统之间,将其中传统铁路客票系统中的数据库作为源数据库,数据库同步装置监听源数据库的数据变化信息,然后确定互联网铁路客票系统中数据库的类型,获取相应的同步规则,基于同步规则和数据变化信息,将数据变化同步到该互联网铁路客票系统中的数据库中,这样就实现传统铁路客票系统与互联网客票系统之间的数据同步。
本实施例提供的数据库同步装置,监听源数据库的日志,捕获源数据库的数据变化信息,确定待同步的各目标数据库的类型,根据各目标数据库的类型,获取与各目标数据库的类型对应的同步规则,根据所述数据变化信息和各目标数据库对应的所述同步规则,将各目标数据库与所述源数据库进行数据同步。本发明中预先为不同类型的目标数据库建立不同的同步规则,在获取到源数据库的数据变化信息后,基于各目标数据库对应的同步规则和数据变化信息,将各目标数据库与源数据库进行数据同步,克服了现有技术中需要多次采集源数据库的数据变化信息问题,降低了资源浪费,并且提高了数据库之间的同步效率。
图3为本发明实施例提供的一种数据库同步系统的结构示意图。如图3所示,该数据库同步系统包括:数据库同步装置1、源数据库2和至少一个目标数据库3。
其中,数据库同步装置1为上述实施例提供的数据库同步装置,设置在源数据库2与目标数据库3之间,用于实现源数据库2与目标数据库3的数据同步。关于数据库同步装置1的相关介绍可参见上述实施例中相关内容的记载,此处不再赘述。
本实施例中预先为不同类型的目标数据库建立不同的同步规则,在获取到源数据库的数据变化信息后,基于各目标数据库对应的同步规则,对目标数据库进行数据同步,克服了现有技术中需要多次采集源数据库的数据变化信息问题,降低了资源浪费,并且提高了数据库之间的同步效率。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。