一种电网异构数据库同步复制迁移方法与流程

文档序号:13072834阅读:269来源:国知局

本发明涉及一种电网异构数据库领域,特别是涉及一种基于mysql日志解析的电网异构数据库同步复制迁移方式。

技术背景

目前各电力公司在用的数据库同步复制软件超过600套,年增量达到300套,年投资在1000万以上,全部采用国外产品且均独立建设,未进行统一的规划和管理。而以现有实现方案针对不同的数据库采用不同的同步复制软件,以源端数据库为mysql为例,如果要备份到mysql目标端,则可以采用mysql自带的master-slave主从复制方案;如果要同步到oracle目标端,则需要部署另一个同步复制软件;如果是同步到postgresql目标端,则需要部署第三套同步复制软件。

本发明通过分析mysql日志,解析出变化的数据,并形成标准sql语句,在目标端以jdbc方式连接并执行,来达到不需要人为操作,使服务器上的数据库能够全自动化进行数据的同步复制。

mysql是一个关系型数据库管理系统,由瑞典mysqlab公司开发,目前最流行的关系型数据库管理系统之一,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

mysql所使用的sql语言是用于访问数据库的最常用标准化语言。mysql软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择mysql作为网站数据库。

jdbc(javadatabaseconnectivity,java数据库连接)是一种用于执行sql语句的javaapi,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。jdbc提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写用于连接多种类型数据库的应用程序。



技术实现要素:
及附图

图1为基于mysql日志解析的电网异构数据库同步复制迁移整体流程。

由于电网数据规模大、数据量庞杂、数据存储分散等特点,而且绝大多数产品主要是大数据库厂商针对自己公司的数据库产品开发出来的,不一定适用于其它数据库管理系统。因此需要一种异构数据库同步复制方法,在保证数据一致性和完整性的情况下,通过日志在线分析技术,可以使数据库不需要人为操作即可实现全自动化数据库内容复制迁移。

在本系统中日志主要分为程序执行过程日志以及分割/解析进度日志两种,在逻辑解析redo服务端还有sql重做日志,其中记录在解析过程中执行失败的sql语句。

程序执行过程log错误级别:

·error:包括sql_error、app_error两种错误级别,分别表示sql加载执行错误日志,对该错误还需要记录到sql重做日志当中;app_error表示程序执行过程中发生的错误信息;

·warning:记录sql加载过程中的转换,例如目标端的更新语句发现数据不存在,改为插入操作;

·info:程序执行过程日志;

·debug:调试日志

分割/解析进度日志:

用于记录当前对逻辑日志的分割、解析进度,包括记录当前读取到的位置、文件名信息,对因不可抗力导致的程序重启回滚以及断点续传。

日志格式:offset+filename

1.源端数据传输:数据源端逻辑分割程序,根据当前获取的逻辑文件分割整合,按固定大小,将数据发送到目标端数据分析程序,同时发送分割程序当前的解析状态或者目标端数据库状态发送至目标端。使用activemq作为消息总线和通信服务。

activemq通过开通不同的消息队列用来区分发送端消息的用途,消息队列包括:数据包队列(data_queue)和性能状态数据包队列(state_queue)。

消息格式(暂定):

db_name+ip+type(消息类型:增量备份、文件复制)+no(编号)+totalnumber(完整文件拆包数,增量备份忽略)+data

db_name+ip+type(指令、状态)+data

在这里db_name+ip是为了唯一确定源端数据来源,为了在目标端做区分使用

2.目标端逻辑数据接收:主要接收来自不同源端数据库的逻辑日志数据,并按照指定缓存路径,写入到缓存文件当中;采用缓存的方式存储接收到的逻辑数据主要是为了减少网络压力,增加网络发送接收响应时间,减少目标端数据库阻塞对数据接收的影响,从根本是解决因为数据库数据同步入库造成的源端和目标端之间数据阻塞问题。

3.目标端数据解析:接收源端发送的数据包和状态包,并将数据包写入到本地文件当中,同时展示当前收到的状态数据,数据重做服务根据本地逻辑数据文件的ddl/dml数据以及目标端数据库类型,转换符合目标端数据库规范的可执行命令。从数据包接收队列接收的数据,直接写入本地逻辑数据文件,主要用于解决在目标端执行逻辑命令时,发生不可抗力导致程序中断,恢复重做的问题;逻辑日志解析匹配模块,针对目标端数据库类型,转换成本地化数据库可执行命令,通过jdbc访问数据库,将数据同步,执行不成功的sql命令(以更改执行命令的sql:如inserttoupdata),将记录在重做sql日志当中。

4.目标端逻辑数据加载:主要读取缓存下来的逻辑日志数据,根据目标数据库的类型,启动内部自有的适配模块,解析成通用标准sql数据语句,并批量完成数据加载。

有益效果

本发明通过分析mysql日志,解析出变化的数据,并形成标准sql语句,在目标端以jdbc方式连接并执行,来达到不需要人为操作,使服务器上的数据库能够全自动化进行数据的同步复制。

本发明整合数据库处理软件,有效节约成本投入。使用本方法复制后的数据,通过jdbc方式统一进行迁移处理,可以达到将服务器上的数据库全部自动化处理的目的,无需人工操作,大幅提高工作效率。



技术特征:

技术总结
本发明涉及一种电网异构数据库处理领域,特别是涉及一种基于MySQL日志解析的电网异构数据库同步复制迁移方式。针对电网数据规模大、数据量庞杂、数据存储分散等特点,且绝大多数产品主要是大数据库厂商针对自己公司的数据库产品开发出来的,不一定适用于其它数据库管理系统等问题。本发明通过分析MySQL日志,解析出变化的数据,并形成标准SQL语句,在目标端以JDBC方式连接并执行,来达到不需要人为操作,使服务器上的数据库能够全自动化进行数据的同步复制迁移。

技术研发人员:谭洪恩;李钊;雷振江;佟贺;刘鹏宇;季胜鹏;方正伟;黄伟;李贤慧;徐增荣
受保护的技术使用者:国网辽宁省电力有限公司;国网辽宁省电力有限公司电力科学研究院;江苏瑞中数据股份有限公司;国家电网公司
技术研发日:2017.09.02
技术公布日:2017.12.01
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1