CN102081611A - 一种主、备网管系统数据库同步的实现方法及装置 - Google Patents
一种主、备网管系统数据库同步的实现方法及装置 Download PDFInfo
- Publication number
- CN102081611A CN102081611A CN2009102242644A CN200910224264A CN102081611A CN 102081611 A CN102081611 A CN 102081611A CN 2009102242644 A CN2009102242644 A CN 2009102242644A CN 200910224264 A CN200910224264 A CN 200910224264A CN 102081611 A CN102081611 A CN 102081611A
- Authority
- CN
- China
- Prior art keywords
- database
- operation log
- standby
- transaction
- management system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种主、备网管系统数据库同步的实现方法及装置,不需要专用的数据库同步工具即能实现主、备网管系统数据库的准实时同步。本发明装置包括如下模块:数据库操作拦截模块,该模块用于利用主机数据库应用代码层提供的标准接口拦截主机数据库的操作信息,包括执行存储过程的操作信息和更新数据库数据的操作信息;操作日志生成模块,该模块用于基于所述拦截的数据库操作信息,生成基于事务划分的主机数据库操作日志,并提出了事务划分策略;操作日志传输模块,该模块用于采用消息确认机制将所述主机的数据库操作日志传输给备机;操作日志入库模块,该模块用于根据备机收到的所述数据库操作日志执行备机数据库同步写入。
Description
技术领域
本发明属于数据同步技术领域,尤其涉及一种主、备网管系统数据库同步的实现方法及装置。
背景技术
随着电信技术的发展,电信网管系统需要提供越来越多的新业务和新功能,与此同时,网管服务器机器以及网管服务器本身的压力也越来越大,经常会出现网管服务器机器拓机或网管服务器进程跑死的现象。为了使网管服务器在上述异常情况发生后能在短时间内重新提供服务,提出了网管服务器备份的方案,即部署一台备用机器运行网管服务器的备份程序,这里称之为备机,当当前提供网管功能和业务的网管服务器出现异常不能继续工作后,马上切换到备机,备机在短时间内接管主机的资源,并对外提供业务支持。
要实现网管服务器的备份,最主要的工作就是要保证主备网管系统中数据库数据的一致,即数据库的同步。目前网管服务器基本都是通过独立于服务器本身的数据库同步工具实现数据库同步,同步的过程也不是基于服务器生成的数据库操作信息。因此现有技术中主、备网管系统数据库同步的实现需要配备专用的数据库同步工具来实现,增加了网管服务器备份操作的成本。
发明内容
本发明要解决的技术问题是提供一种主、备网管系统数据库同步的实现方法及装置,不需要专用的数据库同步工具即能实现主、备网管系统数据库的准实时同步。
为解决上述技术问题,本发明主、备网管系统数据库同步的实现方法包括如下步骤:
数据库操作拦截步骤,该步骤用于利用主机数据库应用代码层提供的标准接口拦截主机数据库的操作信息;
操作日志生成步骤,该步骤用于基于所述拦截的数据库操作信息,生成主机的数据库操作日志;
操作日志传输步骤,该步骤用于将所述主机的数据库操作日志传输给备机;
操作日志入库步骤,该步骤用于根据备机收到的所述数据库操作日志执行备机数据库同步写入。
进一步地,在操作日志生成步骤中,所述生成的主机数据库操作日志是基于事务划分的数据库操作日志。
更进一步地,所述基于事务划分数据库操作日志的策略包括:
如果是基于在事务中获取的数据库连接来生成所述主机数据库操作日志,则采用从事务管理容器中获取的全局事务号来唯一标识该数据库事务;
如果是基于不在事务中获取的数据库连接来生成所述主机数据库操作日志,则采用数据库连接编号与对应于同一个数据库连接的提交或回滚次数序号的组合来唯一标识该数据库事务。
再进一步地,在操作日志入库步骤中,所述根据备机收到的所述数据库操作日志执行备机数据库同步写入的方案包括:
对于各条所述数据库操作日志,如果其存在全局事务号,则以该全局事务号作为其数据库事务标识,如果其不存在全局事务号,则以数据库连接编号与对应于同一个数据库连接的提交或回滚次数序号的组合作为其数据库事务标识;
为各个正在执行的数据库事务均创建一个连接池,该连接池的结构为数据源名称到该数据源对应的数据库连接的映射;
对于各条所述数据库操作日志,根据其所述数据库事务标识取出对应的所述数据库连接池,然后根据该条数据库操作日志中的数据源名称取出对应于该数据源的数据库连接,最后通过该数据库连接执行数据库操作日志的入库,即根据备机收到的所述数据库操作日志执行备机数据库同步写入。
又进一步地,为提高数据库同步的效率,本发明方法采用多同步任务并发执行的方式来执行主、备网管系统数据库同步。
为解决上述技术问题,本发明主、备网管系统数据库同步的实现装置包括:
数据库操作拦截模块,该模块用于利用主机数据库应用代码层提供的标准接口拦截主机数据库的操作信息;
操作日志生成模块,该模块用于基于所述拦截的数据库操作信息,生成主机的数据库操作日志;
操作日志传输模块,该模块用于将所述主机的数据库操作日志传输给备机;
操作日志入库模块,该模块用于根据备机收到的所述数据库操作日志执行备机数据库同步写入。
进一步地,所述拦截的主机数据库操作信息包括执行存储过程的操作信息和更新数据库数据的操作信息。
进一步地,所述利用主机数据库应用代码层提供的标准接口拦截主机数据库的操作信息的具体方案包括:
通过包装模式将数据库应用代码需要获取的数据库连接进行基于接口的包装,然后再交由数据库应用代码执行相应的数据库操作,即能实现对主机数据库操作的拦截。
进一步地,为了能够划分数据库操作的事务并能在备机解析入库时能正确地获取数据源对应的数据库连接,所述基于拦截的数据库操作信息,生成的所述主机数据库操作日志是基于事务划分的数据库操作日志。
更进一步地,所述基于事务划分数据库操作日志的策略包括:
如果是基于在事务中获取的数据库连接来生成所述主机数据库操作日志,则采用从事务管理容器中获取的全局事务号(Global ID)来唯一标识该数据库事务;
如果是基于不在事务中获取的数据库连接来生成所述主机数据库操作日志,则采用数据库连接编号(Connection ID)和对应于同一个数据库连接的提交或回滚次数序号((Group ID)的组合来唯一标识该数据库事务,即采用Connection ID+Group ID的组合来唯一标识该数据库事务。
再进一步地,所述操作日志入库模块包括数据库事务标识确定子模块、连接池创建子模块和入库执行子模块;
其中,所述数据库事务标识确定子模块用于:对于各条所述数据库操作日志,如果其存在全局事务号Global ID,则以该全局事务号作为其数据库事务标识,如果其不存在全局事务号,则以数据库连接编号与对应于同一个数据库连接的提交或回滚次数序号的组合作为其数据库事务标识;
所述连接池创建子模块用于:为各个正在执行的数据库事务均创建一个连接池,该连接池的结构为数据源名称到该数据源对应的数据库连接的映射;
所述入库执行子模块用于:对于各条所述数据库操作日志,根据其所述数据库事务标识取出对应的所述数据库连接池,然后根据该条数据库操作日志中的数据源名称取出对应于该数据源的数据库连接,最后通过该数据库连接执行数据库操作日志的入库。
进一步地,所述操作日志传输模块在将所述主机的数据库操作日志传输给备机时,采用了主备机之间的消息传输成功确认机制,以保证将所述主机的数据库操作日志正确传输给备机。
本发明的有益效果为:
本发明利用主机数据库应用代码层提供的标准接口拦截主机数据库的操作信息,并根据拦截的主机数据库操作信息生成基于事务划分的数据库操作日志,并将数据库操作日志发送到备机,供备机实现这些数据库操作日志的入库操作,因此本发明主、备网管系统数据库同步的实现方法及装置,不需要专用的数据库同步工具即能实现主、备网管系统数据库的准实时同步,节省了主、备网管系统备份操作的费用,并且本发明还具有实施简便,易于推广使用的特点。
附图说明
图1是本发明主、备网管系统数据库同步的实现方法流程示意图;
图2是数据库操作日志传输链路建链过程示意图;
图3是本发明主、备网管系统数据库同步的实现装置结构示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细说明。
在目前的网管系统中,对数据库的访问都是通过标准的数据库访问接口,而这些接口的实现则是由各数据库厂商提供。以JDBC(Java 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,结构化查询语言)语句执行;
2、数据库操作拦截、数据库日志记录组件基于截获到的SQL语句或者存储过程生成数据库操作日志;
3、数据库操作拦截、数据库日志记录组件将数据库操作日志记录到与数据库日志传输组件约定的日志文件中;
4、在拦截数据库操作和记录数据库操作日志之后,向被包装的数据库连接透明传递数据库操作,这样不会影响应用代码的执行;
5、主机数据库日志传输组件从与数据库操作拦截、数据库日志记录组件约定的日志文件中读取数据库操作日志,并将这些日志逐条传给备机数据库日志接收组件。
备机:
1、备机数据库日志接收组件接收来自主机的数据库操作日志,并将操作日志写入与数据库分析入库组件约定好的文件中;
2、数据库分析入库组件从与数据库日志接收组件约定好的文件读取数据库操作日志;
3、数据库分析入库组件分析读取的每条数据库操作日志,并按数据库事务划分这些日志;
4、数据库分析入库组件按事务执行数据库入库操作。
下面对本发明的各个环节进行进一步阐述。
一、数据库操作的拦截
一般情况下数据库应用代码都是通过接口的方式获取数据库连接,本发明通过包装模式将数据库应用代码需要获取的数据库连接进行基于接口的包装后再交由应用代码执行相应的数据库操作,包装的目的是为了拦截数据库,并且应用代码获取的数据库连接依然是接口的方式,这样就不会影响到应用代码。
应用代码执行的数据库操作可以分为两种:最终可以转换为SQL语句执行的数据库操作和执行存储过程的数据库操作,对于执行存储过程的数据库操作,全部拦截,而对于执行SQL语句数据库操作,由于查询操作不会影响数据库中的数据,所以只需要拦截增、删、改这三种更新数据库数据的操作。
二、生成基于事务的数据库操作日志
为了能够划分数据库操作的事务并能在备机解析入库时能正确的获取数据源对应的数据库连接,在记录数据库操作日志时,除了执行的SQL语句或储存过程需要记录之外,还需要记录其他相关内容,例如数据源名称。
从有没有事务控制的角度,数据库连接可以划分为两类,下面分别介绍这两类数据库连接如何生成基于事务的数据库操作日志。
(一)在事务中获取的数据库连接
数据库应用代码一般都会有自己的事务机制,比如很多企业级应用服务器都提供了事务管理容器来管理数据库事务。对于这些存在于事务当中的数据库操作,本发明在包装数据库连接时,先从事务管理容器中获取全局事务号GlobalID,然后将Global ID保存在包装后的数据库连接中,对于包含多个数据库连接并且各个数据库连接可能对应不同数据源的数据库事务,因此在每个数据库连接中都保存Global ID。这样,不论一个事务包含多少个不同的数据库连接,对应多少个不同的数据源,都只需要通过保存在各个数据库连接中的Global ID就能够唯一标识这个数据库事务。
(二)不在事务中获取的数据库连接
对于不是在事务中获取的数据库连接,可以针对同一个数据库连接的提交或回滚操作来划分数据库事务。同时,由于一个数据库连接可能被多次用于数据库操作的执行,所以对于这类数据库连接需要在包装过后的数据库连接中保存该数据库连接编号Connection ID和该数据库连接执行提交或回滚操作的次数Group ID,每执行一次提交或回滚操作,Group ID加1,这样,只需要通过Connection ID+Group ID的组合就能够唯一标识一个数据库事务。
在记录数据库操作日志时,是把这些日志记录到各组件约定的文件中,这种IO操作可能会很耗时,如果单线程执行,就有可能影响数据库应用代码的效率。本发明实施例中通过生产者-消费者模式优化数据库操作日志的记录:生产者线程将拦截到的数据库操作日志写入指定的队列中,同时消费者线程从该队列中读取数据库操作日志并将这些日志记录到文件中,这种策略对数据库应用代码效率的影响就变得非常的小,甚至可以忽略。同时,由于使用队列作为保存数据库操作日志的中间介质,能够保证在文件中记录的数据库操作日志和拦截到的数据库操作日志顺序完全一致,这样就能够避免在备机执行这些数据库操作时由于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,则以该全局事务号作为其数据库事务标识,如果其不存在全局事务号,则以数据库连接编号与对应于同一个数据库连接的提交或回滚次数序号的组合作为其数据库事务标识;
连接池创建子模块用于:为各个正在执行的数据库事务均创建一个连接池,该连接池的结构为数据源名称到该数据源对应的数据库连接的映射;
入库执行子模块用于:对于各条数据库操作日志,根据其数据库事务标识取出对应的数据库连接池,然后根据该条数据库操作日志中的数据源名称取出对应于该数据源的数据库连接,最后通过该数据库连接执行数据库操作日志的入库。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应注意的是,以上所述仅为本发明的具体实施例而已,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求记载的技术方案及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
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所述的主、备网管系统数据库同步的实现装置,其特征在于:
所述操作日志传输模块在将所述主机的数据库操作日志传输给备机时,采用了主备机之间的消息传输成功确认机制。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102242644A CN102081611B (zh) | 2009-11-26 | 2009-11-26 | 一种主、备网管系统数据库同步的实现方法及装置 |
PCT/CN2010/073848 WO2010148966A1 (zh) | 2009-11-26 | 2010-06-11 | 一种网管数据同步的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102242644A CN102081611B (zh) | 2009-11-26 | 2009-11-26 | 一种主、备网管系统数据库同步的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102081611A true CN102081611A (zh) | 2011-06-01 |
CN102081611B CN102081611B (zh) | 2012-12-19 |
Family
ID=43385991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102242644A Active CN102081611B (zh) | 2009-11-26 | 2009-11-26 | 一种主、备网管系统数据库同步的实现方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102081611B (zh) |
WO (1) | WO2010148966A1 (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103885986A (zh) * | 2012-12-21 | 2014-06-25 | 阿里巴巴集团控股有限公司 | 主备数据库同步的方法和装置 |
CN105260486A (zh) * | 2015-11-23 | 2016-01-20 | 郑州悉知信息科技股份有限公司 | 一种数据处理方法、装置及系统 |
CN105306237A (zh) * | 2014-06-26 | 2016-02-03 | 中兴通讯股份有限公司 | 网管的分布式管理方法及装置 |
CN105491106A (zh) * | 2015-11-18 | 2016-04-13 | 中国石油天然气集团公司 | 一种石油测井主从数据库系统实时同步系统和方法 |
WO2016092430A1 (en) * | 2014-12-08 | 2016-06-16 | International Business Machines Corporation | Controlling multi-database system |
CN105787129A (zh) * | 2016-03-29 | 2016-07-20 | 联想(北京)有限公司 | 一种数据存储方法和电子设备 |
CN105989139A (zh) * | 2015-02-27 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 一种事务同步方法及设备 |
CN106681179A (zh) * | 2015-11-10 | 2017-05-17 | 北京精微智能科技有限公司 | 实时同步数据采集装置 |
CN106776754A (zh) * | 2016-11-14 | 2017-05-31 | 东软集团股份有限公司 | 数据采集方法、装置及系统 |
CN106855860A (zh) * | 2015-12-08 | 2017-06-16 | 阿里巴巴集团控股有限公司 | 用于创建主备数据库的方法和设备 |
CN106897365A (zh) * | 2017-01-11 | 2017-06-27 | 北京市天元网络技术股份有限公司 | 数据处理方法及装置 |
CN106997352A (zh) * | 2016-01-22 | 2017-08-01 | 晖保智能科技(上海)有限公司 | 一种主从同步管理方法 |
WO2018137327A1 (zh) * | 2017-01-26 | 2018-08-02 | 华为技术有限公司 | 一种主备机数据传递方法、控制节点以及数据库系统 |
CN108845866A (zh) * | 2018-06-28 | 2018-11-20 | 阿里巴巴集团控股有限公司 | 处理分布式事务的方法和装置 |
CN109542682A (zh) * | 2018-11-16 | 2019-03-29 | 上海达梦数据库有限公司 | 一种数据备份方法、装置、设备和存储介质 |
CN109614444A (zh) * | 2018-11-12 | 2019-04-12 | 武汉达梦数据库有限公司 | 一种数据同步时的数据初始化方法 |
CN110795413A (zh) * | 2019-10-30 | 2020-02-14 | 珠海港联科技有限公司 | 一种带有日志记录功能的数据库操作接口服务系统 |
CN110807062A (zh) * | 2018-08-02 | 2020-02-18 | 中兴通讯股份有限公司 | 一种数据同步的方法、装置和数据库主机 |
CN112787868A (zh) * | 2021-01-29 | 2021-05-11 | 杭州迪普科技股份有限公司 | 一种信息同步的方法和装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786806B (zh) * | 2014-12-15 | 2018-12-04 | 钟叶青 | 数据库转换的同步系统及其方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1317653C (zh) * | 2002-12-25 | 2007-05-23 | 中兴通讯股份有限公司 | 一种数据库连接的高效管理方法 |
US20040153383A1 (en) * | 2003-01-31 | 2004-08-05 | K Venugopal Rao | Transaction management with last agent optimization |
CN101184106A (zh) * | 2007-11-30 | 2008-05-21 | 北京航空航天大学 | 一种移动数据库的关联事务处理方法 |
CN101216843B (zh) * | 2008-01-17 | 2010-09-29 | 四川格瑞特科技有限公司 | 一种多点多跳的数据实时备份方法 |
US8650155B2 (en) * | 2008-02-26 | 2014-02-11 | Oracle International Corporation | Apparatus and method for log based replication of distributed transactions using globally acknowledged commits |
CN101408899B (zh) * | 2008-11-21 | 2010-09-29 | 北京中企开源信息技术有限公司 | 一种网站多数据源切换方法和装置 |
-
2009
- 2009-11-26 CN CN2009102242644A patent/CN102081611B/zh active Active
-
2010
- 2010-06-11 WO PCT/CN2010/073848 patent/WO2010148966A1/zh active Application Filing
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103885986B (zh) * | 2012-12-21 | 2017-12-19 | 阿里巴巴集团控股有限公司 | 主备数据库同步的方法和装置 |
CN103885986A (zh) * | 2012-12-21 | 2014-06-25 | 阿里巴巴集团控股有限公司 | 主备数据库同步的方法和装置 |
CN105306237A (zh) * | 2014-06-26 | 2016-02-03 | 中兴通讯股份有限公司 | 网管的分布式管理方法及装置 |
US11176171B2 (en) | 2014-12-08 | 2021-11-16 | International Business Machines Corporation | Controlling a multi-database system |
WO2016092430A1 (en) * | 2014-12-08 | 2016-06-16 | International Business Machines Corporation | Controlling multi-database system |
US10552451B2 (en) | 2014-12-08 | 2020-02-04 | International Business Machines Corporation | Controlling a multi-database system |
CN107004010B (zh) * | 2014-12-08 | 2020-08-11 | 国际商业机器公司 | 控制多数据库系统 |
CN107004010A (zh) * | 2014-12-08 | 2017-08-01 | 国际商业机器公司 | 控制多数据库系统 |
CN105989139A (zh) * | 2015-02-27 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 一种事务同步方法及设备 |
CN106681179A (zh) * | 2015-11-10 | 2017-05-17 | 北京精微智能科技有限公司 | 实时同步数据采集装置 |
CN105491106A (zh) * | 2015-11-18 | 2016-04-13 | 中国石油天然气集团公司 | 一种石油测井主从数据库系统实时同步系统和方法 |
CN105260486A (zh) * | 2015-11-23 | 2016-01-20 | 郑州悉知信息科技股份有限公司 | 一种数据处理方法、装置及系统 |
CN106855860A (zh) * | 2015-12-08 | 2017-06-16 | 阿里巴巴集团控股有限公司 | 用于创建主备数据库的方法和设备 |
CN106997352A (zh) * | 2016-01-22 | 2017-08-01 | 晖保智能科技(上海)有限公司 | 一种主从同步管理方法 |
CN105787129A (zh) * | 2016-03-29 | 2016-07-20 | 联想(北京)有限公司 | 一种数据存储方法和电子设备 |
CN105787129B (zh) * | 2016-03-29 | 2020-06-23 | 联想(北京)有限公司 | 一种数据存储方法和电子设备 |
CN106776754A (zh) * | 2016-11-14 | 2017-05-31 | 东软集团股份有限公司 | 数据采集方法、装置及系统 |
CN106776754B (zh) * | 2016-11-14 | 2020-05-15 | 东软集团股份有限公司 | 数据采集方法、装置及系统 |
CN106897365A (zh) * | 2017-01-11 | 2017-06-27 | 北京市天元网络技术股份有限公司 | 数据处理方法及装置 |
CN106897365B (zh) * | 2017-01-11 | 2020-02-14 | 北京市天元网络技术股份有限公司 | 数据处理方法及装置 |
WO2018137327A1 (zh) * | 2017-01-26 | 2018-08-02 | 华为技术有限公司 | 一种主备机数据传递方法、控制节点以及数据库系统 |
US10831612B2 (en) | 2017-01-26 | 2020-11-10 | Huawei Technologies Co., Ltd. | Primary node-standby node data transmission method, control node, and database system |
CN108845866B (zh) * | 2018-06-28 | 2021-06-29 | 创新先进技术有限公司 | 处理分布式事务的方法和装置 |
CN108845866A (zh) * | 2018-06-28 | 2018-11-20 | 阿里巴巴集团控股有限公司 | 处理分布式事务的方法和装置 |
CN110807062A (zh) * | 2018-08-02 | 2020-02-18 | 中兴通讯股份有限公司 | 一种数据同步的方法、装置和数据库主机 |
CN110807062B (zh) * | 2018-08-02 | 2021-06-22 | 中兴通讯股份有限公司 | 一种数据同步的方法、装置和数据库主机 |
CN109614444A (zh) * | 2018-11-12 | 2019-04-12 | 武汉达梦数据库有限公司 | 一种数据同步时的数据初始化方法 |
CN109542682A (zh) * | 2018-11-16 | 2019-03-29 | 上海达梦数据库有限公司 | 一种数据备份方法、装置、设备和存储介质 |
CN109542682B (zh) * | 2018-11-16 | 2021-03-30 | 上海达梦数据库有限公司 | 一种数据备份方法、装置、设备和存储介质 |
CN110795413A (zh) * | 2019-10-30 | 2020-02-14 | 珠海港联科技有限公司 | 一种带有日志记录功能的数据库操作接口服务系统 |
CN112787868A (zh) * | 2021-01-29 | 2021-05-11 | 杭州迪普科技股份有限公司 | 一种信息同步的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2010148966A1 (zh) | 2010-12-29 |
CN102081611B (zh) | 2012-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102081611B (zh) | 一种主、备网管系统数据库同步的实现方法及装置 | |
AU2019295818B2 (en) | Block chain-based data processing method and device | |
US9286368B2 (en) | Linking framework for information technology management | |
CN102262680B (zh) | 一种基于海量数据存取需求的分布式数据库代理系统 | |
CN105138615A (zh) | 一种构建大数据分布式日志的方法和系统 | |
CN104104738A (zh) | 一种基于ftp的数据交换系统 | |
CN104517181B (zh) | 一种核电站企业内容管理系统及方法 | |
CN102693324A (zh) | 一种分布式数据库同步系统、同步方法和节点管理方法 | |
CN101277212B (zh) | 资源管理平台及资源管理方法 | |
EP4213038A1 (en) | Data processing method and apparatus based on distributed storage, device, and medium | |
CN102262674A (zh) | 一种分布式内存数据库的数据同步方法及系统 | |
KR101545626B1 (ko) | Dds-db 연동 시스템 | |
US8527995B2 (en) | Synchronization system for entities maintained by multiple applications | |
CN101710281A (zh) | 基于Agent的动态集成开发平台系统和方法 | |
CN102937964A (zh) | 基于分布式系统的智能数据服务方法 | |
KR20030064779A (ko) | 이질적인 분배된 기업업무 통합객체의 중앙관리 시스템 및방법 | |
KR100521742B1 (ko) | 엑스엠엘 문서의 구조 및 속성 정보의 손실 없이 엑스엠엘문서를 원격 서버로 복제하는 엑스엠엘 데이터베이스이중화 장치 및 그 방법 | |
US7765197B2 (en) | System and method for producing data replica | |
US8626716B1 (en) | Service broker enhancements | |
KR102598619B1 (ko) | 데이터베이스 관리 서비스 제공 시스템 | |
CN111241044A (zh) | 搭建异构数据库的方法、装置、设备及可读存储介质 | |
CN113641760A (zh) | 数据同步方法及装置 | |
CN112069160B (zh) | 一种基于cap数据清洗同步方法 | |
CN114780639A (zh) | 一种基于双数据库并行的核心系统建设方法 | |
CN109376193B (zh) | 基于自适应规则的数据交换系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |