一种主、备网管系统数据库同步的实现方法及装置的制作方法

文档序号:7718892阅读:206来源:国知局
专利名称:一种主、备网管系统数据库同步的实现方法及装置的制作方法
技术领域
本发明属于数据同步技术领域,尤其涉及一种主、备网管系统数据库同步的实现 方法及装置。
背景技术
随着电信技术的发展,电信网管系统需要提供越来越多的新业务和新功能,与此 同时,网管服务器机器以及网管服务器本身的压力也越来越大,经常会出现网管服务器机 器拓机或网管服务器进程跑死的现象。为了使网管服务器在上述异常情况发生后能在短时 间内重新提供服务,提出了网管服务器备份的方案,即部署一台备用机器运行网管服务器 的备份程序,这里称之为备机,当当前提供网管功能和业务的网管服务器出现异常不能继 续工作后,马上切换到备机,备机在短时间内接管主机的资源,并对外提供业务支持。要实现网管服务器的备份,最主要的工作就是要保证主备网管系统中数据库数据 的一致,即数据库的同步。目前网管服务器基本都是通过独立于服务器本身的数据库同步 工具实现数据库同步,同步的过程也不是基于服务器生成的数据库操作信息。因此现有技 术中主、备网管系统数据库同步的实现需要配备专用的数据库同步工具来实现,增加了网 管服务器备份操作的成本。

发明内容
本发明要解决的技术问题是提供一种主、备网管系统数据库同步的实现方法及装 置,不需要专用的数据库同步工具即能实现主、备网管系统数据库的准实时同步。为解决上述技术问题,本发明主、备网管系统数据库同步的实现方法包括如下步 骤数据库操作拦截步骤,该步骤用于利用主机数据库应用代码层提供的标准接口拦 截主机数据库的操作信息;操作日志生成步骤,该步骤用于基于所述拦截的数据库操作信息,生成主机的数 据库操作日志;操作日志传输步骤,该步骤用于将所述主机的数据库操作日志传输给备机;操作日志入库步骤,该步骤用于根据备机收到的所述数据库操作日志执行备机数 据库同步写入。进一步地,在操作日志生成步骤中,所述生成的主机数据库操作日志是基于事务 划分的数据库操作日志。更进一步地,所述基于事务划分数据库操作日志的策略包括如果是基于在事务中获取的数据库连接来生成所述主机数据库操作日志,则采用 从事务管理容器中获取的全局事务号来唯一标识该数据库事务;如果是基于不在事务中获取的数据库连接来生成所述主机数据库操作日志,则采 用数据库连接编号与对应于同一个数据库连接的提交或回滚次数序号的组合来唯一标识该数据库事务。再进一步地,在操作日志入库步骤中,所述根据备机收到的所述数据库操作日志 执行备机数据库同步写入的方案包括对于各条所述数据库操作日志,如果其存在全局事务号,则以该全局事务号作为 其数据库事务标识,如果其不存在全局事务号,则以数据库连接编号与对应于同一个数据 库连接的提交或回滚次数序号的组合作为其数据库事务标识;为各个正在执行的数据库事务均创建一个连接池,该连接池的结构为数据源名称 到该数据源对应的数据库连接的映射;对于各条所述数据库操作日志,根据其所述数据库事务标识取出对应的所述数据 库连接池,然后根据该条数据库操作日志中的数据源名称取出对应于该数据源的数据库连 接,最后通过该数据库连接执行数据库操作日志的入库,即根据备机收到的所述数据库操 作日志执行备机数据库同步写入。又进一步地,为提高数据库同步的效率,本发明方法采用多同步任务并发执行的 方式来执行主、备网管系统数据库同步。为解决上述技术问题,本发明主、备网管系统数据库同步的实现装置包括数据库操作拦截模块,该模块用于利用主机数据库应用代码层提供的标准接口拦 截主机数据库的操作信息;操作日志生成模块,该模块用于基于所述拦截的数据库操作信息,生成主机的数 据库操作日志;操作日志传输模块,该模块用于将所述主机的数据库操作日志传输给备机;操作日志入库模块,该模块用于根据备机收到的所述数据库操作日志执行备机数 据库同步写入。进一步地,所述拦截的主机数据库操作信息包括执行存储过程的操作信息和更新 数据库数据的操作信息。进一步地,所述利用主机数据库应用代码层提供的标准接口拦截主机数据库的操 作信息的具体方案包括通过包装模式将数据库应用代码需要获取的数据库连接进行基于接口的包装,然 后再交由数据库应用代码执行相应的数据库操作,即能实现对主机数据库操作的拦截。进一步地,为了能够划分数据库操作的事务并能在备机解析入库时能正确地获取 数据源对应的数据库连接,所述基于拦截的数据库操作信息,生成的所述主机数据库操作 日志是基于事务划分的数据库操作日志。更进一步地,所述基于事务划分数据库操作日志的策略包括如果是基于在事务中获取的数据库连接来生成所述主机数据库操作日志,则采用 从事务管理容器中获取的全局事务号(GlcAal ID)来唯一标识该数据库事务;如果是基于不在事务中获取的数据库连接来生成所述主机数据库操作日志,则采 用数据库连接编号(Connection ID)和对应于同一个数据库连接的提交或回滚次数序号 ((Group ID)的组合来唯一标识该数据库事务,即采用Connection ID+Group ID的组合来 唯一标识该数据库事务。再进一步地,所述操作日志入库模块包括数据库事务标识确定子模块、连接池创建子模块和入库执行子模块;其中,所述数据库事务标识确定子模块用于对于各条所述数据库操作日志,如果 其存在全局事务号Global ID,则以该全局事务号作为其数据库事务标识,如果其不存在全 局事务号,则以数据库连接编号与对应于同一个数据库连接的提交或回滚次数序号的组合 作为其数据库事务标识;所述连接池创建子模块用于为各个正在执行的数据库事务均创建一个连接池, 该连接池的结构为数据源名称到该数据源对应的数据库连接的映射;所述入库执行子模块用于对于各条所述数据库操作日志,根据其所述数据库事 务标识取出对应的所述数据库连接池,然后根据该条数据库操作日志中的数据源名称取出 对应于该数据源的数据库连接,最后通过该数据库连接执行数据库操作日志的入库。进一步地,所述操作日志传输模块在将所述主机的数据库操作日志传输给备机 时,采用了主备机之间的消息传输成功确认机制,以保证将所述主机的数据库操作日志正 确传输给备机。本发明的有益效果为本发明利用主机数据库应用代码层提供的标准接口拦截主机数据库的操作信息, 并根据拦截的主机数据库操作信息生成基于事务划分的数据库操作日志,并将数据库操作 日志发送到备机,供备机实现这些数据库操作日志的入库操作,因此本发明主、备网管系统 数据库同步的实现方法及装置,不需要专用的数据库同步工具即能实现主、备网管系统数 据库的准实时同步,节省了主、备网管系统备份操作的费用,并且本发明还具有实施简便, 易于推广使用的特点。


图1是本发明主、备网管系统数据库同步的实现方法流程示意图;图2是数据库操作日志传输链路建链过程示意图;图3是本发明主、备网管系统数据库同步的实现装置结构示意图。
具体实施例方式下面结合附图和具体实施方式
对本发明作进一步详细说明。在目前的网管系统中,对数据库的访问都是通过标准的数据库访问接口,而这些 接口的实现则是由各数据库厂商提供。以JDBCCJava Data BaseConnectivity, java数据 库连接)接 口禾口 JBoss (—种 J2EE(Java 2Platform, Enterprise Edition, Java2 平台企 业版)服务器)为例,当数据库应用代码想要访问数据库时,首先通过JBoss的Jca(J2EE Connectorarchitecture,J2EE连接器架构)获取数据库连接接口实现,然后再执行数据库 访问或操作,并且,从Jca返回给数据库应用代码的依然是JDBC的标准数据库接口,也就是 说具体的实现对数据库应用代码是透明的,因此可以考虑在Jca返回的连接上通过包装模 式再封装一层实现数据库操作拦截和日志记录的实现,以获取在数据库备份时必须的数据 库操作信息。另一方面,数据库操作和事务是密不可分的,因此需要在包装的数据库连接中 准确地划分出数据库事务。本发明首先拦截数据库操作信息并生成、记录基于事务的数据库操作日志,然后将数据库操作日志传递到备机并在备机上解析数据库操作日志,最终执行增量入数据库操 作,以实现数据库之间的准实时同步。图1是本发明主、备网管系统数据库同步的实现方法流程示意图,为便于说明,本 发明实施例中引入了数据库操作拦截、数据库日志记录组件,主机数据库日志传输组件,备 机数据库日志接收组件以及数据库分析入库组件的概念。如图1所示,本发明主、备网管系统数据库同步的实现方法流程包括主机1、数据库操作拦截、数据库日志记录组件截获存储过程执行或增、删、改数据的 SQL (Structured Query Language,结构化查i旬i吾言)i吾句执;2、数据库操作拦截、数据库日志记录组件基于截获到的SQL语句或者存储过程生 成数据库操作日志;3、数据库操作拦截、数据库日志记录组件将数据库操作日志记录到与数据库日志 传输组件约定的日志文件中;4、在拦截数据库操作和记录数据库操作日志之后,向被包装的数据库连接透明传 递数据库操作,这样不会影响应用代码的执行;5、主机数据库日志传输组件从与数据库操作拦截、数据库日志记录组件约定的日 志文件中读取数据库操作日志,并将这些日志逐条传给备机数据库日志接收组件。备机1、备机数据库日志接收组件接收来自主机的数据库操作日志,并将操作日志写入 与数据库分析入库组件约定好的文件中;2、数据库分析入库组件从与数据库日志接收组件约定好的文件读取数据库操作 日志;3、数据库分析入库组件分析读取的每条数据库操作日志,并按数据库事务划分这 些日志;4、数据库分析入库组件按事务执行数据库入库操作。下面对本发明的各个环节进行进一步阐述。一、数据库操作的拦截一般情况下数据库应用代码都是通过接口的方式获取数据库连接,本发明通过包 装模式将数据库应用代码需要获取的数据库连接进行基于接口的包装后再交由应用代码 执行相应的数据库操作,包装的目的是为了拦截数据库,并且应用代码获取的数据库连接 依然是接口的方式,这样就不会影响到应用代码。应用代码执行的数据库操作可以分为两种最终可以转换为SQL语句执行的数 据库操作和执行存储过程的数据库操作,对于执行存储过程的数据库操作,全部拦截,而对 于执行SQL语句数据库操作,由于查询操作不会影响数据库中的数据,所以只需要拦截增、 删、改这三种更新数据库数据的操作。 二、生成基于事务的数据库操作日志 为了能够划分数据库操作的事务并能在备机解析入库时能正确的获取数据源对 应的数据库连接,在记录数据库操作日志时,除了执行的SQL语句或储存过程需要记录之 外,还需要记录其他相关内容,例如数据源名称。
从有没有事务控制的角度,数据库连接可以划分为两类,下面分别介绍这两类数 据库连接如何生成基于事务的数据库操作日志。(一 )在事务中获取的数据库连接数据库应用代码一般都会有自己的事务机制,比如很多企业级应用服务器都提供 了事务管理容器来管理数据库事务。对于这些存在于事务当中的数据库操作,本发明在包 装数据库连接时,先从事务管理容器中获取全局事务号GlcAallD,然后将Global ID保存 在包装后的数据库连接中,对于包含多个数据库连接并且各个数据库连接可能对应不同数 据源的数据库事务,因此在每个数据库连接中都保存Global ID。这样,不论一个事务包含 多少个不同的数据库连接,对应多少个不同的数据源,都只需要通过保存在各个数据库连 接中的Global ID就能够唯一标识这个数据库事务。( 二)不在事务中获取的数据库连接对于不是在事务中获取的数据库连接,可以针对同一个数据库连接的提交或回 滚操作来划分数据库事务。同时,由于一个数据库连接可能被多次用于数据库操作的执 行,所以对于这类数据库连接需要在包装过后的数据库连接中保存该数据库连接编号 Connection ID和该数据库连接执行提交或回滚操作的次数Group ID,每执行一次提交或 回滚操作,Group ID加1,这样,只需要通过Connection ID+Group ID的组合就能够唯一标 识一个数据库事务。在记录数据库操作日志时,是把这些日志记录到各组件约定的文件中,这种10操 作可能会很耗时,如果单线程执行,就有可能影响数据库应用代码的效率。本发明实施例 中通过生产者-消费者模式优化数据库操作日志的记录生产者线程将拦截到的数据库操 作日志写入指定的队列中,同时消费者线程从该队列中读取数据库操作日志并将这些日志 记录到文件中,这种策略对数据库应用代码效率的影响就变得非常的小,甚至可以忽略。同 时,由于使用队列作为保存数据库操作日志的中间介质,能够保证在文件中记录的数据库 操作日志和拦截到的数据库操作日志顺序完全一致,这样就能够避免在备机执行这些数据 库操作时由于SQL或存储过程执行顺序不一致而造成的执行失败。三、主机将数据库操作日志传输到备机数据库操作日志从主机到备机的传输是整个数据库同步中很重要的一个环节,为 了使在主机执行的数据库操作在备机也能正确的执行,必须保证数据库传输日志在主备机 之间传输的正确性。影响数据库操作日志正确传输的因素很多,包括主机数据库日志传输组件未启动 或不能正常工作,备机数据库日志接收组件未启动或不能正常工作,主备机之间通信链路 不通或通信链路不稳定、经常出现链路瞬间断开的情况等,总的说来就是不能建立稳定的 主备机之间数据库操作日志传输链路,对于这些情况,本发明通过主备机之间的消息确认 机制加以解决,下面详细描述主备机数据库操作日志传输链路的建立以及数据库操作日志 的可靠传输。(一 )备机作为建立数据库操作日志传输链路的服务端;( 二)主机作为建立数据库操作日志传输链路的客户端;(三)备机在指定的端口上监听来自于主机的建链请求,主机不断尝试和备机建 链,当链路建立成功以后主备机之间开始发送、接收数据库操作日志以及确认消息,并同时在主备机之间发送心跳消息,如果心跳握手失败,则说明主备机之间的网络不通或对方不 能正常工作,此时便主动关闭传输链路,同时如果是主机就重新尝试向备机发送建链请求, 如果是备机则继续监听来自于主机的建链请求,直到数据库日志传输链路再次建立成功;对于备机返回给主机的数据库操作日志接收确认信息,如果针对每条数据库操作 日志备机都生成一条确认信息返回给主机,同时,主机向备机发送一条数据库操作日志后 要等待直到备机返回确认信息再向备机发送下一条数据库操作日志,那就相当于将数据库 传输链路的吞吐量增加了一倍,加上主机等待确认消息的时间,数据库操作日志的传输效 率很可能会减半。因此本发明采用下面的策略实现主备机之间数据库操作日志的传输以及 传输确认。1、主机数据库操作拦截、数据库日志记录组件分文件记录数据库操作日志,主机 的数据库操作日志传输组件和主机数据库操作拦截、数据库日志记录组件约定日志记录文 件的下列内容文件名格式统一的前缀+文件序号;文件的行数约定固定的行数;文件序号一个文件记满固定的行数以后,将文件序号加1后以文件名格式生成 下一个日志记录文件。2、主机数据库操作日志传输组件向备机数据库操作日志接收组件发送数据库操 作日志时,加上下列内容日志文件序号、日志在文件中的行号这两个信息能够唯一标识一条数据库操作 日志;请求删除文件序号对应的日志文件标识如果传输到约定的行数则该标识设置为 真(true),否则为假(false)。3、备机的数据库操作日志接收组件收到一条数据库操作日志之后,从日志中解析 出日志文件序号、日志在文件中的行号、请求删除文件序号对应的日志文件标识三个信息, 并且将日志文件序号、日志在文件中的行号更新到持久化的介质中作为成功接收的最后一 条数据库操作日志记录标识,便于主备建链时读取。同时,如果检测到请求删除文件序号对 应的日志文件标识为true,那备机就将文件序号返回给主机,主机收到以后删除该文件序 号对应的数据库操作日志文件。4、备机收到主机的数据库操作日志传输链路建链请求之后,读取已经接收到的最 后一条数据库操作日志的标识(日志文件序号+日志在文件中的行号),并将该标识返回给 主机,主机通过日志文件序号、日志在文件中的行号这两条信息,定位到下一条需要传输的 数据库操作日志并开始传输,建链过程如图2所示。通过上面的传输链路建立策略和数据库操作日志传输和确认策略,能够取得如下 的效果及时删除已经确认传输完成的数据库日志文件,从而防止占用太多磁盘空间;主 备机之间的请求、响应机制防止了数据库操作日志文件的误删除;建链时需要传输的数据 库操作日志的重新定位能够避免由于断链造成的数据丢失现象;备机发往主机的确认消息 比较少,降低了对传输效率的影响。备机数据库操作日志接收组件将接收到的数据库操作日志按事务记录到不同的 临时日志文件中并同时传递给备机数据库操作日志分析入库组件。
四、备机对主机数据库操作日志的分析和入库备机对数据库操作日志的分析和入库由数据库操作日志分析入库组件完成,该环 节主要完成两个工作(一)数据库操作日志的分析对于每一条数据库操作日志,从中读取数据库操作 日志的Connection ID,Group ID和Global ID,然后根据这三个信息构造出数据库事务标 识,构造方法如下如果Global ID存在,则使用Global ID作为数据库事务标识,否则使用 Connection ID+Group ID作为数据库事务的标识。将所有数据库事务标识一致的数据库操 作日志划分在同一个事务中执行,数据库事务的结束标识是这个数据库事务对应的提交或 回滚操作。(二)分析后的数据库操作日志的入库此过程是数据库同步的最后一个过程,在 该过程中,为每个正在执行的数据库事务创建一个连接池,连接池的结构为数据源名称到 该数据源对应的数据库连接的映射。对于每一条数据库操作日志,当取出该条日志的事务 标识以后,根据事物标识取出对应的数据库连接池,然后再根据该条日志中的数据源名称 取出对应于该数据源的数据库连接,最后通过该数据库连接执行数据库操作日志的入库。在实际应用本发明时,为了提高数据库同步的效率,可以采用多同步任务的方式 实施本发明,这种方式只需要对上述技术方案稍加改进即可划分同步任务将有关联关系的数据库表划分在同一个同步任务中,并给每个同 步任务取一个唯一的任务名称,各同步任务原则上独立、并行执行。每个同步任务均有自己的组件主机数据库操作拦截、数据库操作日志记录组件该组件可以被各个同步任务共 享,前提是能够根据不同的同步任务将数据库操作日志记录到不同的日志文件中,各个同 步任务的日志记录文件可以根据下面的规则确定同步任务名称+文件序号.log;主机数据库日志传输组件每个同步任务部署自己的数据库日志传输组件,该组 件的工作方式同单同步任务时的工作方式一样,它们之间的区别在于需要读取的数据库 操作日志记录文件的命名规则的不同以及和备机不同的数据库日志接收组件建立传输链 路;备机数据库日志接收组件每个同步任务部署自己的数据库日志接收组件,该组 件的工作方式同单同步任务时的工作方式一样,它们之间的区别在于和主机不同的数据库 日志传输组件建立传输链路;备机数据库日志分析入库组件每个同步任务部署自己的数据库日志分析入库组 件,该组件的工作方式同单同步任务时的工作方式一样。通过以上两方面的改进,能够实现多任务并发的数据库同步,大大提高了数据库 同步的效率。图3是本发明主、备网管系统数据库同步的实现装置结构示意图,如图所示,本发 明主、备网管系统数据库同步的实现装置具体包括数据库操作拦截模块、操作日志生成模 块、操作日志传输模块和操作日志入库模块。其中数据库操作拦截模块用于利用主机数据库应用代码层提供的标准接口拦截 主机数据库的操作信息,拦截的主机数据库操作信息包括执行存储过程的操作信息和更新 数据库数据的操作信息。其具体方案包括通过包装模式将数据库应用代码需要获取的数据库连接进行基于接口的包装,然后再交由数据库应用代码执行相应的数据库操作,即能 实现对主机数据库操作的拦截。操作日志生成模块用于基于拦截的数据库操作信息,生成主机的数据库操作日 志。生成的主机数据库操作日志是基于事务划分的数据库操作日志,基于事务划分数据库 操作日志的策略包括如果是基于在事务中获取的数据库连接来生成主机数据库操作日志,则采用从事 务管理容器中获取的全局事务号来唯一标识该数据库事务;如果是基于不在事务中获取的数据库连接来生成主机数据库操作日志,则采用数 据库连接编号与对应于同一个数据库连接的提交或回滚次数序号的组合来唯一标识该数 据库事务。操作日志传输模块用于将主机的数据库操作日志传输给备机。操作日志传输模块 在将主机的数据库操作日志传输给备机时,采用了主备机之间的消息传输成功确认机制, 以保证将主机的数据库操作日志正确传输给备机。操作日志入库模块用于将备机收到的数据库操作日志存入备机的数据库。操作日志入库模块包括数据库事务标识确定子模块、连接池创建子模块和入库执 行子模块。其中数据库事务标识确定子模块用于对于各条数据库操作日志,如果其存在全 局事务号Global ID,则以该全局事务号作为其数据库事务标识,如果其不存在全局事务 号,则以数据库连接编号与对应于同一个数据库连接的提交或回滚次数序号的组合作为其 数据库事务标识;连接池创建子模块用于为各个正在执行的数据库事务均创建一个连接池,该连 接池的结构为数据源名称到该数据源对应的数据库连接的映射;入库执行子模块用于对于各条数据库操作日志,根据其数据库事务标识取出对 应的数据库连接池,然后根据该条数据库操作日志中的数据源名称取出对应于该数据源的 数据库连接,最后通过该数据库连接执行数据库操作日志的入库。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详 细说明,所应注意的是,以上所述仅为本发明的具体实施例而已,本领域的技术人员可以对 本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改 和变型属于本发明权利要求记载的技术方案及其等同技术的范围之内,则本发明也意图包 含这些改动和变型在内。
权利要求
1.一种主、备网管系统数据库同步的实现方法,其特征在于包括如下步骤数据库操作拦截步骤,该步骤用于利用主机数据库应用代码层提供的标准接口拦截主 机数据库的操作信息;操作日志生成步骤,该步骤用于基于所述拦截的数据库操作信息,生成主机的数据库 操作日志;操作日志传输步骤,该步骤用于将所述主机的数据库操作日志传输给备机;操作日志入库步骤,该步骤用于根据备机收到的所述数据库操作日志执行备机数据库 同步写入。
2.根据权利要求1所述的主、备网管系统数据库同步的实现方法,其特征在于在操作日志生成步骤中,所述生成的主机数据库操作日志是基于事务划分的数据库操 作曰志。
3.根据权利要求2所述的主、备网管系统数据库同步的实现方法,其特征在于,所述基 于事务划分数据库操作日志的策略包括如果是基于在事务中获取的数据库连接来生成所述主机数据库操作日志,则采用从事 务管理容器中获取的全局事务号来唯一标识该数据库事务;如果是基于不在事务中获取的数据库连接来生成所述主机数据库操作日志,则采用数 据库连接编号与对应于同一个数据库连接的提交或回滚次数序号的组合来唯一标识该数 据库事务。
4.根据权利要求3所述的主、备网管系统数据库同步的实现方法,其特征在于,在操作 日志入库步骤中,所述根据备机收到的所述数据库操作日志执行备机数据库同步写入的方 案包括对于各条所述数据库操作日志,如果其存在全局事务号,则以该全局事务号作为其数 据库事务标识,如果其不存在全局事务号,则以数据库连接编号与对应于同一个数据库连 接的提交或回滚次数序号的组合作为其数据库事务标识;为各个正在执行的数据库事务均创建一个连接池,该连接池的结构为数据源名称到该 数据源对应的数据库连接的映射;对于各条所述数据库操作日志,根据其所述数据库事务标识取出对应的所述数据库连 接池,然后根据该条数据库操作日志中的数据源名称取出对应于该数据源的数据库连接, 最后通过该数据库连接执行数据库操作日志的入库。
5.根据权利要求1至4中任一项所述的主、备网管系统数据库同步的实现方法,其特征 在于该方法采用多同步任务并发执行的方式来执行所述主、备网管系统数据库的同步操作。
6.一种主、备网管系统数据库同步的实现装置,其特征在于包括数据库操作拦截模块,该模块用于利用主机数据库应用代码层提供的标准接口拦截主 机数据库的操作信息;操作日志生成模块,该模块用于基于所述拦截的数据库操作信息,生成主机的数据库 操作日志;操作日志传输模块,该模块用于将所述主机的数据库操作日志传输给备机;操作日志入库模块,该模块用于根据备机收到的所述数据库操作日志执行备机数据库 同步写入。
7.根据权利要求6所述的主、备网管系统数据库同步的实现装置,其特征在于 所述拦截的主机数据库操作信息包括执行存储过程的操作信息和更新数据库数据的操作信息。
8.根据权利要求6所述的主、备网管系统数据库同步的实现装置,其特征在于,所述利 用主机数据库应用代码层提供的标准接口拦截主机数据库的操作信息的具体方案包括通过包装模式将数据库应用代码需要获取的数据库连接进行基于接口的包装,然后再 交由数据库应用代码执行相应的数据库操作。
9.根据权利要求6或7或8所述的主、备网管系统数据库同步的实现装置,其特征在于所述基于拦截的数据库操作信息,生成的所述主机数据库操作日志是基于事务划分的 数据库操作日志。
10.根据权利要求9所述的主、备网管系统数据库同步的实现装置,其特征在于,所述 基于事务划分数据库操作日志的策略包括如果是基于在事务中获取的数据库连接来生成所述主机数据库操作日志,则采用从事 务管理容器中获取的全局事务号来唯一标识该数据库事务;如果是基于不在事务中获取的数据库连接来生成所述主机数据库操作日志,则采用数 据库连接编号与对应于同一个数据库连接的提交或回滚次数序号的组合来唯一标识该数 据库事务。
11.根据权利要求10所述的主、备网管系统数据库同步的实现装置,其特征在于 所述操作日志入库模块包括数据库事务标识确定子模块、连接池创建子模块和入库执行子模块;其中,所述数据库事务标识确定子模块用于对于各条所述数据库操作日志,如果其存 在全局事务号,则以该全局事务号作为其数据库事务标识,如果其不存在全局事务号,则以 数据库连接编号与对应于同一个数据库连接的提交或回滚次数序号的组合作为其数据库 事务标识;所述连接池创建子模块用于为各个正在执行的数据库事务均创建一个连接池,该连 接池的结构为数据源名称到该数据源对应的数据库连接的映射;所述入库执行子模块用于对于各条所述数据库操作日志,根据其所述数据库事务标 识取出对应的所述数据库连接池,然后根据该条数据库操作日志中的数据源名称取出对应 于该数据源的数据库连接,最后通过该数据库连接执行数据库操作日志的入库。
12.根据权利要求6或7或8所述的主、备网管系统数据库同步的实现装置,其特征在于所述操作日志传输模块在将所述主机的数据库操作日志传输给备机时,采用了主备机 之间的消息传输成功确认机制。
全文摘要
本发明公开了一种主、备网管系统数据库同步的实现方法及装置,不需要专用的数据库同步工具即能实现主、备网管系统数据库的准实时同步。本发明装置包括如下模块数据库操作拦截模块,该模块用于利用主机数据库应用代码层提供的标准接口拦截主机数据库的操作信息,包括执行存储过程的操作信息和更新数据库数据的操作信息;操作日志生成模块,该模块用于基于所述拦截的数据库操作信息,生成基于事务划分的主机数据库操作日志,并提出了事务划分策略;操作日志传输模块,该模块用于采用消息确认机制将所述主机的数据库操作日志传输给备机;操作日志入库模块,该模块用于根据备机收到的所述数据库操作日志执行备机数据库同步写入。
文档编号H04L12/24GK102081611SQ20091022426
公开日2011年6月1日 申请日期2009年11月26日 优先权日2009年11月26日
发明者冯文波, 巫锴, 胡锐 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1