数据库备份方法及装置与流程

文档序号:17790465发布日期:2019-05-31 20:07阅读:140来源:国知局
本发明实施例涉及数据库
技术领域
:,更具体地,涉及数据库备份方法及装置。
背景技术
::当前市场的软件都在追求实时的数据反馈,秒级的结果反馈,不同数据库系统之间的实时交互,同步传输等。目前遇到了包括以下几点的架构挑战:1.对现有数据库管理技术的挑战。2.传统的数据库技术对数据的多类别、sql并没有太多的考虑,在设计之初对非结构化数据的存储问题是没有考虑到的。3.传统的bi应用、数据库仓库系统等,对数据处理时间的要求并不是很高。因此这样的应用建模后,运行一两天都是没有任何问题的。但对于要求数据进行实时处理,则存在一定问题,这也是区别大数据应用和传统数据仓库技术、bi技术的关键差别之一。4.随着每天创建的数据量爆炸性的增长,数据保存能改进的技术空间不是很大,而数据丢失的这种可能性却不断的增加。如此庞大的数据量存储就是首先面临的非常严峻的问题,硬件的更新速度将是大数据发展的基石,但效果确实不甚理想。信息是当代企业运用科学管理、决策分析的基础,是企业的重要资源。目前,大多数企业花费大量的资金和时间来构建联机事务处理oltp的业务系统和办公自动化系统,用来记录事务处理的各种相关数据。据统计,数据量每2~3年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占在总数据量的2%~4%左右。因此,企业仍然没有最大化地利用已存在的数据资源,以至于浪费了更多的时间和资金,也失去制定关键商业决策的最佳契机。于是,企业如何通过各种技术手段,并把数据转换为信息、知识,已经成了提高其核心竞争力的主要瓶颈。技术实现要素:本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的数据库备份方法及装置。第一个方面,本发明实施例提供一种数据库备份方法,包括:监听并解析源数据库的binlog日志,分解出多种类型的数据库操作语言;将所述数据库操作语言的数据类型和语法格式转换为目标数据库可识别的数据库操作语言,以在所述目标数据库中执行;其中,所述源数据库为mysql数据库,所述目标数据库为oracle数据库。第二个方面,本发明实施例提供一种数据库备份装置,包括:解析模块,监听并解析源数据库的binlog日志,分解出多种类型的数据库操作语言;转换模块,用于将所述数据库操作语言的数据类型和语法格式转换为目标数据库可识别的数据库操作语言,以在所述目标数据库中执行;其中,所述源数据库为mysql数据库,所述目标数据库为oracle数据库。第三个方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的方法的步骤。第四个方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。本发明实施例提供的数据库备份方法及装置,通过监听并解析源数据库的binlog日志,分解出多种类型的数据库操作语言;将所述数据库操作语言的数据类型和语法格式转换为目标数据库可识别的数据库操作语言,以在所述目标数据库中执行,能够完成在毫秒级对源数据库进行实时数据备份的目的。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的数据库备份方法的流程示意图;图2为本发明另一个实施例提供的数据库备份方法的流程示意图;图3为本发明实施例的技术架构图;图4为本发明实施例提供的数据库备份装置的结构示意图;图5为本发明实施例提供的配置平台的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。etl(extract-transform-load),用来描述将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程。etl一词较常用在数据仓库,但其对象并不限于数据仓库。etl是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。现在市场大多数etl工具,还是以批次性的、对数据源进行sql方式进行,需要对源数据库每秒的进行监控扫描,极大的消耗源数据库的iops。而目前市场上可以进行数据库系统之家毫秒级实时传输的,仅限于x(x表示市场流行的数据库)到mysql,目标数据库有极大的限制。为了克服现有技术的上述问题,图1为本发明实施例提供的数据库备份方法的流程示意图,如图1所示,该方法包括:s101、监听并解析源数据库的binlog日志,分解出多种类型的数据库操作语言。binlog日志即二进制日志,本发明实施例的源数据库是mysql数据库,mysql数据库中的binlog日志中记录了所有的ddl(datadefinitionlanguage)和dml(datamanipulationlanguage)语句,以事件形式记录,还包含语句所执行的消耗的时间,mysql的二进制日志是事务安全型的。二进制日志包括两类文件:二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件,二进制日志文件(文件名后缀为.00000*)记录数据库所有的ddl和dml(除了数据查询语句)语句事件。可以理解的时,通过对binlog日志进行解析,可以分解出ddl、dml等多种类型数据库操作语言。ddl指针对数据源的表进行的变更操作,如altertable。dml是正常对数据进行增删改等操作。本发明实施例会对ddl和dml进行解析并在目标执行,保证源和目标的表的一致性。s102、将所述数据库操作语言的数据类型和语法格式转换为目标数据库可识别的数据库操作语言,以在所述目标数据库中执行;在本发明实施例中,目标数据库为oracle数据库。通过将mysql数据库中的数据库操作语言的数据类型和语法格式转换为oracle数据库可识别的数据库操作语言,以在oracle数据库中执行。本发明实施例是对源数据库进行binlog日志的采集,不走源数据库迎亲,所以不会对数据源进行任何资源消耗。可以理解的是,mysql的日志记录存在binlog日志中,binlog日志中记录了针对数据表的所有操作记录,而本发明实施例针对该日志,每次binlog日志有变化都会同步到目标指向,并不是对表进行扫描,因此能够实现毫秒级的扫描,答复提高扫描速度。本发明实施例适用于mysql-oracle属于跨数据库类型的数据同步,具有极其重要的实践意义。在上述各实施例的基础上,作为一种可选实施例,将所述数据库操作语言的数据类型和语法格式转换为目标数据库可识别的数据库操作语言,具体为:将varchar数据类型的数据转换为varchar2数据类型;将int数据类型的数据转换为number数据类型;将decimal数据类型的数据转换为number数据类型;将float数据类型的数据转换为number数据类型。在上述各实施例的基础上,作为一种可选实施例,binlog日志的存储级别为行级。mysql配置中可以设置binlog存储级别,本发明实施例采用row级(即行级),也就是针对每行记录的操作都会进行binlog记录。图2为本发明另一个实施例提供的数据库备份方法的流程示意图,如图2所示,请对图2进行描述,源端数据库的binlog日志通过canal进行监控,然后发送到node节点,再由node节点进行转换输出值目标端执行,该过程由manager进行整体控制。图3为本发明实施例的技术架构图,如图3所示,源端mysql数据库的数据发生变化时会写入binlog日志中,通过监控binlog日志对内容进行解析,转换成oracle数据库可识别的内容,在oracle端进行执行。图4为本发明实施例提供的数据库备份装置的结构示意图,如图4所示,该配置平台包括:解析模块401和转换模块402;其中:解析模块401,监听并解析源数据库的binlog日志,分解出多种类型的数据库操作语言;转换模块402,用于将所述数据库操作语言的数据类型和语法格式转换为目标数据库可识别的数据库操作语言,以在所述目标数据库中执行;其中,所述源数据库为mysql数据库,所述目标数据库为oracle数据库。本发明实施例提供的数据库备份方法,具体执行上述各数据库备份方法的实施例流程,具体请详见上述各数据库备份方法的实施例的内容,在此不再赘述。图5为本发明实施例提供的电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communicationsinterface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储在存储器530上并可在处理器510上运行的计算机程序,以执行上述各实施例提供的数据库备份,例如包括:监听并解析源数据库的binlog日志,分解出多种类型的数据库操作语言;将所述数据库操作语言的数据类型和语法格式转换为目标数据库可识别的数据库操作语言,以在所述目标数据库中执行;其中,所述源数据库为mysql数据库,所述目标数据库为oracle数据库。此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的数据库备份方法,例如包括:监听并解析源数据库的binlog日志,分解出多种类型的数据库操作语言;将所述数据库操作语言的数据类型和语法格式转换为目标数据库可识别的数据库操作语言,以在所述目标数据库中执行;其中,所述源数据库为mysql数据库,所述目标数据库为oracle数据库。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1