CN111198869A - 数据迁移方法、装置、设备及计算机可读存储介质 - Google Patents

数据迁移方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN111198869A
CN111198869A CN201911306049.9A CN201911306049A CN111198869A CN 111198869 A CN111198869 A CN 111198869A CN 201911306049 A CN201911306049 A CN 201911306049A CN 111198869 A CN111198869 A CN 111198869A
Authority
CN
China
Prior art keywords
database
preset
data
write
read
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.)
Pending
Application number
CN201911306049.9A
Other languages
English (en)
Inventor
王英杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Weikun Shanghai Technology Service Co Ltd
Original Assignee
Weikun Shanghai Technology Service Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Weikun Shanghai Technology Service Co Ltd filed Critical Weikun Shanghai Technology Service Co Ltd
Priority to CN201911306049.9A priority Critical patent/CN111198869A/zh
Publication of CN111198869A publication Critical patent/CN111198869A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据存储技术领域,提供一种数据迁移方法、装置、设备及计算机可读存储介质,该方法包括:在接收到第一数据读写请求时,根据流量开关当前的流量导向在预设Oracle数据库和预设备用数据库中确定目标读写数据库;当目标读写数据库为预设Oracle数据库时,对预设Oracle数据库执行第一数据读写操作,并在操作完成时对预设备用数据库执行数据同步操作;在接收到第一开关调整指令时,调整预设流量开关的流量导向,以将目标读写数据库切换为预设备用数据库。本发明实现了在不停止服务的情况下将Oracle数据库的数据无法无缝迁移至其它数据库,确保不同数据库之间的数据统一,满足了实际业务需要。

Description

数据迁移方法、装置、设备及计算机可读存储介质
技术领域
本发明涉及数据存储技术领域,尤其涉及一种数据迁移方法、装置、设备及计算机可读存储介质。
背景技术
Oracle数据库是一种关系数据库管理系统,其效率高、并具有一定的可靠性;由于Oracle的良好性能,有许多企业的数据库采用Oracle的方式作为一种可适应高吞吐量的数据库解决方案,以满足自身的业务需要和发展。而由于Oracle属于闭源系统,其维护成本较高,因此目前有一些企业开始尝试将Oracle的数据迁移至开源数据库系统(如迁移至MySQL数据),实现去O化,从而降低企业的运营成本。
但是,对企业而言,在进行数据迁移的过程中往往不能停止正常服务的提供,且该服务提供的过程可能会出现数据的读写操作,这就会对数据库迁移过程中的数据完整性造成不利影响,因此,如何实现Oracle向其它数据库的无缝迁移成为亟待解决的问题。
发明内容
本发明的主要目的在于提供一种数据迁移方法、装置、设备及计算机可读存储介质,旨在实现在不停止服务的情况下将Oracle数据库的数据无法无缝迁移至其它数据库。
为实现上述目的,本发明实施例提供一种数据迁移方法,所述数据迁移方法包括:
在接收到前端应用发送的第一数据读写请求时,根据预设流量开关当前的流量导向在预设Oracle数据库和预设备用数据库中确定目标读写数据库;
当所述目标读写数据库为所述预设Oracle数据库时,通过预设数据总线对所述预设Oracle数据库执行对应的第一数据读写操作,并在所述第一数据读写操作完成时对所述预设Oracle数据库与所述预设备用数据库执行数据同步操作;
在接收到第一开关调整指令时,根据所述开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设备用数据库。
此外,为实现上述目的,本发明实施例还提供一种数据迁移装置,所述数据迁移装置包括:
请求接收模块,用于在接收到前端应用发送的第一数据读写请求时,根据预设流量开关当前的流量导向在预设Oracle数据库和预设备用数据库中确定目标读写数据库;
第一同步模块,用于当所述目标读写数据库为所述预设Oracle数据库时,通过预设数据总线对所述预设Oracle数据库执行对应的第一数据读写操作,并在所述第一数据读写操作完成时对所述预设Oracle数据库与所述预设备用数据库执行数据同步操作;
第一调整模块,用于在接收到第一开关调整指令时,根据所述开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设备用数据库。
此外,为实现上述目的,本发明实施例还提供一种数据迁移设备,所述数据迁移设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的数据迁移程序,其中所述数据迁移程序被所述处理器执行时,实现如上述的数据迁移方法的步骤。
此外,为实现上述目的,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据迁移程序,其中所述数据迁移程序被处理器执行时,实现如上述的数据迁移方法的步骤。
本发明实施例通过流量开关的方式在新旧数据库中确定数据读写流量导向,并在进行数据库迁移过程中通过数据实时双写的方式确保新旧数据库之间的完整和统一,从而实现了在不停止服务的情况下将Oracle数据库的数据无法无缝迁移至其它数据库,确保不同数据库之间的数据统一,满足了实际业务需要。
附图说明
图1为本发明实施例方案中涉及的数据迁移设备的硬件结构示意图;
图2为本发明数据迁移方法第一实施例的流程示意图;
图3为本发明数据迁移方法第一实施例的流程示意图;
图4为本发明数据迁移第一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例涉及的数据迁移方法主要应用于数据迁移设备,该数据迁移设备可以是服务器、个人计算机(personal computer,PC)、笔记本电脑等具有数据处理功能的设备。
参照图1,图1为本发明实施例方案中涉及的数据迁移设备的硬件结构示意图。本发明实施例中,该数据迁移设备可以包括处理器1001(例如中央处理器CentralProcessing Unit,CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真WIreless-FIdelity,WI-FI接口);存储器1005可以是高速随机存取存储器(random access memory,RAM),也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。本领域技术人员可以理解,图1中示出的硬件结构并不构成对本发明的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
继续参照图1,图1中作为一种计算机可读存储介质的存储器1005可以包括操作系统、网络通信模块以及数据迁移程序。在图1中,网络通信模块可用于连接数据库,与数据库进行数据通信;而处理器1001可以调用存储器1005中存储的数据迁移程序,并执行本发明实施例提供的数据迁移方法。
本发明实施例提供了一种数据迁移方法。
参照图2,图2为本发明数据迁移方法第一实施例的流程示意图。
本实施例中,所述数据迁移方法包括以下步骤:
步骤S10,在接收到前端应用发送的第一数据读写请求时,根据预设流量开关当前的流量导向在预设Oracle数据库和预设备用数据库中确定目标读写数据库;
许多企业的数据库采用Oracle的方式作为一种可适应高吞吐量的数据库解决方案,以满足自身的业务需要和发展。而由于Oracle属于闭源系统,其维护成本较高,因此目前有一些企业开始尝试将Oracle的数据迁移至开源数据库系统(如迁移至MySQL数据),实现去O化,从而降低企业的运营成本。但是,对企业而言,在进行数据迁移的过程中往往不能停止正常服务的提供,且该服务提供的过程可能会出现数据的读写操作,这就会对数据库迁移过程中的数据完整性造成不利影响,因此,如何实现在不停止服务的情况下将Oracle数据库的数据无法无缝迁移至其它数据库成为亟待解决的问题。对此,本实施例中提供一种数据库迁移方法,通过流量开关的方式在新旧数据库中确定数据读写流量导向,并在进行数据库迁移过程中通过数据实时双写的方式确保新旧数据库之间的完整和统一,从而实现了在不停止服务的情况下将Oracle数据库的数据无法无缝迁移至其它数据库,确保不同数据库之间的数据统一,满足了实际业务需要。
本实施例中的数据迁移方法可以是由数据迁移设备实现的,该数据迁移设备以服务器为例进行说明;其次,还预先设置有一个Oracle数据库和若干备用数据库,该Oracle数据库可认为是企业的原始数据库,而备用数据库的类型和数量可以是根据实际情况进行确定,本实施例中即是将Oracle数据库的数据迁移至备用数据库中。为了说明方便,该备用数据库以一个MySQL数据库为例进行说明。本实施例中的服务器可接收前端应用(如智能终端中安装的app应用)发送的数据读写请求并进行相关响应;同时,服务器还可分别向Oracle数据库和MySQL数据库(备用数据库)进行数据读写操作等;此外,为了控制数据流量的导向,本实施例中还预先设置有一个流量开关,该流量开关可控制读写流量是发生在Oracle数据库还是在MySQL数据库。
本实施例中,在对Oracle数据库的数据迁移至MySQL数据库的过程中,当前端应用(终端)检测到用户的相关应用操作时,会根据该操作向服务器发送对应的第一数据读写请求。服务器在接收到该第一数据读写请求时,首先会根据该第一数据读写请求查询流量开关当前的流量导向,以确定当前是对哪一个数据库进行读写操作,即根据预设流量开关当前的流量导向在Oracle数据库和MySQL数据库中确定目标读写数据库。值得说明的是,在数据迁移的过程中,由于MySQL数据库中的数据并不完整,因此在数据迁移的过程中,为了保证业务的持续性和一致性,流量开关当前的流量导向是导向了Oracle数据库,也即目标读写数据库为Oracle数据库。
进一步的,对于某些应用,可能会涉及较多的数据表,为了对数据迁移过程进行更精细化的控制和管理,流量开关的粒度可以细化至“表”。具体的,所述步骤S10包括:
在接收到前端应用发送的第一数据读写请求时,根据所述第一数据读写请求确定目标数据,并确定所述目标数据所对应的目标数据表;
本实施例中,流量开关可以是以“表”为维度确定流量导向。服务器在接收到前端应用发送的第一数据读写请求时,首先会根据该第一数据读写请求确定对应的目标数据,该目标数据可认为是数据读写的对象;对于目标数据的确定过程,可以是数据读写请求中包括相关的目标数据表名、目标字段名、目标数据行/列主键、写入内容等,服务器在接收到该第一数据读写请求时,即可在第一数据读写请求中提取得到上述内容,并根据上述内容确定目标数据。在确定目标数据时,服务器将确定该目标数据所存在的目标数据表(当然该目标数据表在Oracle数据库和MySQL中均存在),也即确定是对哪一个数据表进行操作。
根据所述目标数据表确定所述预设流量开关当前的流量导向,并根据所述预设流量开关当前的流量导向在预设Oracle数据库和预设备用数据库中确定目标读写数据库。
当确定目标数据表时,服务器将会查询该目标数据表所对应的流量开关当前的流量导向,也即确定向哪一个数据库中的目标数据表进行数据读写操作。值得说明的是,在实际数据迁移过程中,可能存在MySQL数据库中的数据不完整,但MySQL数据库中某一个数据表的数据已经完整的情况,此时若该已完整的数据表对应的流量开关当前的流量导向是导向MySQL数据库,则此时可以是将MySQL数据库作为本次数据读写请求所对应的目标读写数据库。通过以上方式,可以按表维度分多个批次进行去O(Oracle)化操作,实现了数据迁移过程的精细化控制和管理,有利于降低一次性整体数据库切换可能导致的风险。
步骤S20,当所述目标读写数据库为所述预设Oracle数据库时,通过预设数据总线对所述预设Oracle数据库执行对应的第一数据读写操作,并在所述第一数据读写操作完成时对所述预设Oracle数据库与所述预设备用数据库执行数据同步操作;
本实施例中,当服务器确定目标读写数据库为Oracle数据库时,将会通过预设数据总线(Databus)向Oracle数据库执行对应的第一数据读写操作,在Oracle数据库中查找与第一数据读写请求对应的目标数据表、然后在该目标数据表中查找到对应目标数据行/列主键、并对该目标数据行的目标字段值进行相应的读写。在第一数据读写操作完成时,服务器可向前端应用返回对应的操作反馈信息,以通过该操作反馈信息向前端应用返回操作结果提示。而服务器在对Oracle数据库的第一数据读写操作完成时,为了保证Oracle数据库和MySQL数据库的数据统一,还将通过预设数据总线对预设Oracle数据库与MySQL数据库执行数据同步操作,以使Oracle数据库的数据改动同步至MySQL数据库中。又由于本实施例中在进行读写时有且仅有一个数据库会被作为目标读写数据库,而在数据迁移完成(或是迁移准备完成)前,则是将Oracle数据库做为目标读写数据库,因此在进行数据同步时,可以是通过解析Oracle数据库的重写日志redo log的方式获知Oracle数据库的数据变动情况,再根据该数据变动情况对MySQL数据库进行相应的操作;其中对于redo log,一般是用于在Oracle数据库发生故障时与数据库备份文件配合以恢复数据库;本实施例中即通过对该redo log进行解析,确定Oracle数据库中的修改情况,并对MySQL数据库进行相应的操作,从而实现数据同步。
具体的,预设数据总线包括有Oracle数据库对应的第一消息队列、MySQL数据库对应的第二消息队列、用于向Oracle数据库进行读写的Oracle数据读写器(模块)、用于向MySQL数据库进行读写的MySQL读写器(模块)、对重写日志redo log进行解析的日志解析器(模块);其中,第一消息队列和第二消息队列可以是通过Kafka(一种高吞吐量的分布式发布订阅消息系统)或其它方式实现)。当确定目标读写数据库为Oracle数据库时,可先向第一消息队列添加对应的第一读写消息;然后通过Oracle数据读写器从第一消息队列取出该第一读写消息,根据该第一读写消息对Oracle数据库进行相应读写操作,并在读写操作完成时生成对应的redo log;而日志解析器检测(可以是轮询检测、也可以是实时检测)到有新的redo log生成时,即可根据预先设置好的Redo log存放地址获取该redo log文件,然后对该redo log文件进行解析,确定出Oracle数据库读写修改情况;然后可根据该Oracle数据库读写修改情况向第二消息队列中添加相应的第二读写消息;再通过MySQL数据读写器从该第二消息队列中的第二读写消息,并根据该第二读写消息对MySQL数据库进行相应操作,从而实现数据同步。
进一步的,对于redo log的解析过程,由于redo log本身可能是以一规范格式、或一预设结构体进行记录,因此可基于该规范格式或结构体设置相应的解析规则进行解析。例如,redo log包括一个文件头,主要记录了seq(序列号)、file rba(file redo byteaddress,重作日志文件字节地址)、scn(System Change Number,系统修订号)等信息,用来区分该文件中包含了哪些的redo记录,还包括了当前实例中可用的所有redo log文件的一个链表,主要用于日志切换时找到下一个可用的redo log文件。文件头之后是按照顺序写入的若干个redo record(重作记录),一个redo record记录的是一个原子操作的redo;而对于redo record的结构,则是由一个redo record头加上若干的change vector(变更向量);redo record头包括Thread(产生该redo record的实例instance的线程thread编号)、record rba(redo记录字节地址)、len(redo的大小)等;一个change vector就是对一个数据块的一次修改记录,包括change#n(同一个redo record中的change vector的编号)、CLS(本次修改对应的block的类别)、DBA(本次修改对应的block的地址)、OP(操作码)等,其中OP操作码又以字符串的形式记录Oracle操作类型,如“4”为块清除、“10”索引操作、“11”行数据操作等。在通过日志解析器对redo log进行解析时,也即主要对redo log文件中的redo record进行提取,并根据其中OP操作码确定操作类型,当然还需要确定操作对象(如DBA等);然后可根据该操作类型和操作对象向第二消息队列中添加相应的第二读写消息,再通过MySQL数据读写器从该第二消息队列中的第二读写消息,并根据该第二读写消息对MySQL数据库执行对应的数据同步操作,从而实现数据同步。
步骤S30,在接收到第一开关调整指令时,根据所述开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设备用数据库。
本实施例中,当MySQL数据库中的数据搭建工作完成、与Oracle数据库的数据一致(且满足实际需求时),相关管理人员可通过一管理终端向服务器发送第一开关调整指令,该第一开关调整指令主要用于对流量开关的流量导向进行调整,也即对目标读写数据库进行切换,重新确定要对哪一个数据库进行数据读写操作;值得说明的是,由于流量开关可以是以“表”为维度确定流量导向,因此该第一开关调整指令可以是“表”为维度对流量开关的流量导向进行调整。服务器在接收到该第一开关调整指令时,将根据该第一开关调整指令调整流量开关的流量导向,以将目标读写数据库切换为MySQL数据库;此时,当前端应用再次发送数据读写请求时,服务器将以MySQL数据库作为数据源执行相应的数据读写操作,从而实现向Oracle数据库向MySQL的迁移和切换。而对于Oracle数据库切换到MySQL数据库的过程,可以是这样实现的:首先会将Oracle数据库提供给应用层的写权限进行回收(不回收Oracle数据库提供给预设数据总线的写权限),然后等待预设数据总线DataBus中全部Oracle增量数据均同步至MySQL数据库(第一消息队列和第二消息队列中均无未消费的消息);然后可预设的调用数据比对工具比对上一对比周期的增量数据在Oracle数据库和MySQL数据库里是否完全一致的;当两者一致时,授予MySQL数据库提供给应用层的写权限,并监控MySQL写入流量及预设数据总线流量是否正常,若两者正常,则可认为切换完成。
进一步的,考虑到数据迁移过程(去O过程)可能需要较长的一段时间,而在这段时间还可能会出现应用功能的改造等情况(如用户终端的应用app的新版本添加一新功能、对某一功能进行改变等);为了使数据库适应该功能改造的情况,还可将根据实际需要对数据库的数据表结构进行相应的调整;当然为了保证业务的延续性,该调整是基于Oracle数据库和MySQL数据库同步进行。具体的,所述数据迁移方法还包括:
在接收到功能改造指令时,根据所述功能改造指令在所述预设Oracle数据库和所述预设备用数据库中同步修改对应的数据表结构。
管理人员可根据应用功能的改造情况,通过一管理终端向服务器发送对应的功能改造指令,该功能改造指令主要用于对Oracle数据库和MySQL数据库中的某个数据表结构进行相应的调整(以适应前端应用功能的改造、或实现其它的功能);当然该功能改造指令中包括有对于Oracle数据库和MySQL数据库的具体改造内容,例如,根据应用的升级要求,需要新增/删除/修改对应某一表的字段行(或列);服务器在接收到该应用功能改造指令时,将会根据该功能改造指令同时进行对应的数据表结构变更操作,使得Oracle数据库和MySQL数据库的数据表结构均能够符合前端应用功能的改造。
再进一步的,所述在接收到功能改造指令时,根据所述功能改造指令在所述预设Oracle数据库和所述预设备用数据库中同步修改对应的数据表结构步骤之后,还包括:
在修改完成时,将所述预设Oracle数据库和所述预设备用数据库中修改后的数据表锁定,并向对应的审核端发送评审信息;
在实际中,服务器在对数据表结构的调整完成时,还可先将Oracle数据库和MySQL数据库中修改后的数据表锁定,从而避免对该修改后的数据表进行读写操作,并向对应的审核端发送相关的评审信息,以使得相关评审人员通过该评审端就这一数据表结构的修改先进行评审,判断该修改是否可行。
在接收到审核端发送的评审通过信息时,根据所述评审通过信息解锁所述修改后的数据表。
在接收到审核端发送的评审通过信息时,可认为该修改可行,此时可解锁Oracle数据库和MySQL数据库中修改后的数据表,并配合前端应用的升级版本进行使用。通过以上方式,在数据表结构后先进行评审,当评审通过后再上线使用,有利于降低数据表结构变更可能带来的风险。
本实施例中,在接收到前端应用发送的第一数据读写请求时,根据预设流量开关当前的流量导向在预设Oracle数据库和预设备用数据库中确定目标读写数据库;当所述目标读写数据库为所述预设Oracle数据库时,通过预设数据总线对所述预设Oracle数据库执行对应的第一数据读写操作,并在所述第一数据读写操作完成时对所述预设Oracle数据库与所述预设备用数据库执行数据同步操作;在接收到第一开关调整指令时,根据所述开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设备用数据库。通过以上方式,本实施例通过流量开关的方式在新旧数据库中确定数据读写流量导向,并在进行数据库迁移过程中通过数据实时双写的方式确保新旧数据库之间的完整和统一,从而实现了在不停止服务的情况下将Oracle数据库的数据无法无缝迁移至其它数据库,确保不同数据库之间的数据统一,满足了实际业务需要。
基于上述图2所示实施例,提出本发明数据迁移方法第二实施例。
参照图3,图3为本发明数据迁移方法第二实施例的流程示意图。
本实施例中,所述步骤S30之后还包括:
步骤S40,在接收到所述前端应用发送的第二数据读写请求时,根据所述预设流量开关调整后的流量导向、通过所述预设数据总线对所述预设备用数据库执行对应的第二数据读写操作,并在所述第二读写操作完成时对所述预设备用数据库与所述预设Oracle数据库执行数据同步操作;
本实施例中,在将目标读写数据库切换为MySQL数据库后,服务器在接收到前端应用发送的第二数据读写请求时,将根据预设流量开关当前的流量导向、通过预设数据总线对MySQL数据库执行对应的第二数据读写操作。
本实施例中,考虑到在将Oracle数据库切换到MySQL后,可能会存在业务不兼容、或者其它的数据风险,为了保证业务的正常进行,管理人员或服务器在检测到相关异常时,可根据将该流量开关的流量导向回调,将Oracle数据库重新切换为新的目标读写数据库,实现数据库地快速、高效回滚,有利于降低去O的风险。然而,在切换到MySQL后,必然存在数据的读写操作,而由于此时数据读写是导向MySQL数据库,因而Oracle数据库不会进行变动,为了保证数据库回滚前后业务的延续性,本实施例在将Oracle数据库的流量导向切换到MySQL数据库后,还会将MySQL数据库的数据变动同步至Oracle数据库中,直至Oracle数据库完全下线、或是MySQL数据库试运行一段时间确认正常时再停止该同步处理。对于该Oracle的数据同步过程,与上述MySQL数据库的数据同步过程类似,也可通过预设数据总线实现,而MySQL数据库变动情况的获知则可以是通过二进制文件binlog得到,该二进制文件binlog记录了MySQL数据库的数据变更情况(包括所有的DDL和DML(除了数据查询语句)语句,以事件event形式记录,还包含语句所执行的消耗的时间)。
具体的,预设数据总线中还包括有用于解析binglog的文件解析器。服务器确定要向MySQL数据库进行第二数据读写操作时,会向MySQL数据库对应的第二消息队列中添加一对应的第三读写消息,然后通过MySQL数据读写器取出该第二消息队列中的第三读写消息并对MySQL数据库进行相应第二读写操作,在操作完成时生成对应的binlog。而文件解析器检测(可以是轮询检测、也可以是实时检测)到有新的binlog生成时,即可根据预先设置好的binlog存放地址获取该binlog,然后对该binlog进行解析,确定出MySQL数据库变动情况;然后可根据该变动情况向Oracle数据库对应的第一消息队列中添加相应的第四读写消息,再通过Oracle数据读写器取出该第一消息队列中的第四读写消息并对Oracle数据库执行相应同步操作,从而实现数据同步。而对于解析binlog以确定数据库变动类型的过程,则可以是通过binlog中的event_type字段的具体值确定,也即对于binlog中各条变动记录,可根据记录中event_type的具体值(字符串)确定出该条记录的变动类型,然后可根据信息备注Info部分确定该条记录具体变动内容;当然,对于不同版本的MySQL或者不同企业的MySQL,其对于binlog的文档结构可能具有不同的设置,因此文件解析器也可以根据实际情况进行相应变化调整。
步骤S50,在接收到第二开关调整指令时,根据所述第二开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设Oracle数据库。
本实施例中,在将Oracle数据库切换到MySQL数据库后,可能会存在业务不兼容、或者其它的数据风险,为了保证业务的正常进行,管理人员在发现异常情况时,可通过一管理端向服务器发送第二开关调整指令,以将流量开关的流量导向回调。服务器在接收到到第二开关调整指令时,将根据该第二开关调整指令再次调整预设流量开关的流量导向,将目标读写数据库切换为Oracle数据库,实现数据库地快速、高效回滚。
通过以上方式,在将流量开关的导向由Oracle数据库切换到MySQL数据库后,还会将MySQL数据库的数据变动同步至Oracle数据库中,从而在Oracle数据库未完全下线前也可能确保两者数据的一致性;同时还可根据实际需要将该流量开关的流量导向回调,将Oracle数据库重新切换为新的目标读写数据库,实现数据库地快速、高效回滚,有利于降低去O的风险;又由于Oracle数据库与MySQL数据库的数据具有一致性,因此还保证了数据库回滚前后的业务延续性。
进一步的,本实施例中,在将Oracle数据库切换到MySQL数据库后,还可对MySQL数据库的运行进行检测,并在检测到异常时及时通知相关工作人员。具体的,所述步骤S40之后,还包括:
检测所述预设备用数据库的性能指标数据,并判断所述性能指标数据是否满足预设正常运行条件;
本实施例中,在将Oracle数据库切换到MySQL数据库后,服务器还可用对MySQL数据库的性能指标数据,该性能指标数据可以包括预设周期内的读写量、某次读写操作或某批读写操作的操作耗时、表缓存量等;当然该性能指标数据的类型可以根据实际需要进行设置。在得到该性能指标数据时,可判断该性能指标数据是否满足预设正常运行条件。对于该预设正常运行条件,可以是根据实际情况设定各性能指标数据的正常阈值范围,也即服务器判断各性能指标数据是否在对应的正常阈值范围内;若在,则可认为性能指标数据满足预设正常运行条件;若不在,则可认为性能指标数据不满足预设正常运行条件。
若所述性能指标数据不满足预设正常运行条件,则向对应的管理端发送告警信息。
本实施例中,若性能指标数据满足预设正常运行条件,在可保持当前各服务的正常提供;而若性能指标数据不满足预设正常运行条件,则服务器会向对应的管理端发送告警信息,以通知相关管理人员当前的MySQL数据库运行存在异常。此时管理人员可通过管理端向服务器发送第二开关调整指令,以将流量开关的流量导向回调。服务器在接收到到第二开关调整指令时,将根据该第二开关调整指令再次调整预设流量开关的流量导向,将Oracle数据库重新切换为新的目标读写数据库(即执行步骤S50),实现数据库地快速、高效回滚。
通过以上方式,本实施例中的服务器可在流量开关切换后检测MySQL数据库(预设备用数据库)的性能指标数据,从而判断MySQL数据库是否正常,并在MySQL数据库异常时及时通知相关工作人员,有利于提高数据服务的稳定性。
此外,本发明实施例还提供一种数据迁移装置。
参照图4,图4为本发明数据迁移装置第一实施例的功能模块示意图。
本实施例中,所述数据迁移装置包括:
请求接收模块10,用于在接收到前端应用发送的第一数据读写请求时,根据预设流量开关当前的流量导向在预设Oracle数据库和预设备用数据库中确定目标读写数据库;
第一同步模块20,用于当所述目标读写数据库为所述预设Oracle数据库时,通过预设数据总线对所述预设Oracle数据库执行对应的第一数据读写操作,并在所述第一数据读写操作完成时对所述预设Oracle数据库与所述预设备用数据库执行数据同步操作;
第一调整模块30,用于在接收到第一开关调整指令时,根据所述开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设备用数据库。
其中,上述数据迁移装置的各虚拟功能模块存储于图1所示数据迁移设备的存储器1005中,用于实现数据迁移程序的所有功能;各模块被处理器1001执行时,可实现数据迁移的功能。
进一步的,所述数据迁移装置还包括:
第二同步模块,用于在接收到所述前端应用发送的第二数据读写请求时,根据所述预设流量开关调整后的流量导向、通过所述预设数据总线对所述预设备用数据库执行对应的第二数据读写操作,并在所述第二读写操作完成时对所述预设备用数据库与所述预设Oracle数据库执行数据同步操作;
第二调整模块,用于在接收到第二开关调整指令时,根据所述第二开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设Oracle数据库。
进一步的,所述数据迁移装置还包括:
数据检测模块,用于检测所述预设备用数据库的性能指标数据,并判断所述性能指标数据是否满足预设正常运行条件;
信息发送模块,用于若所述性能指标数据不满足预设正常运行条件,则向对应的管理端发送告警信息;
所述第二调整模块,还用于在接收到所述管理端发送的第二开关调整指令时,根据所述管理端发送的第二开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设Oracle数据库。
进一步的,所述预设备用数据库包括预设MySQL数据库,所述数据总线包括与所述预设Oracle数据库对应的第一消息队列、与所述预设MySQL数据库对应的第二消息队列和日志解析器,
所述第一同步模块20包括:
数据读写单元,用于当所述目标读写数据库为所述预设Oracle数据库时,向所述第一消息队列添加对应的第一读写消息,以根据所述第一读写消息对所述预设Oracle数据库执行对应的第一数据读写操作,并在所述第一数据读写操作完成时生成对应的重做日志redo log;
数据同步单元,用于通过所述日志解析器对所述redo log进行解析,并根据解析结果向所述第二消息队列添加对应的第二读写消息,以根据所述第二读写消息对所述预设MySQL数据库执行对应的数据同步操作。
进一步的,所述数据迁移装置还包括:
表结构修改模块,用于在接收到功能改造指令时,根据所述功能改造指令在所述预设Oracle数据库和所述预设备用数据库中同步修改对应的数据表结构。
进一步的,所述数据迁移装置还包括:
数据表锁定模块,用于将所述预设Oracle数据库和所述预设备用数据库中修改后的数据表锁定,并向对应的审核端发送评审信息;
数据表解锁模块,用于在接收到所述审核端发送的评审通过信息时,根据所述评审通过信息解锁所述修改后的数据表。
进一步的,所述请求接收模块10包括:
第一确定单元,用于在接收到前端应用发送的第一数据读写请求时,根据所述第一数据读写请求确定目标数据,并确定所述目标数据所对应的目标数据表;
第二确定单元,用于根据所述目标数据表确定所述预设流量开关当前的流量导向,并根据所述预设流量开关当前的流量导向在预设Oracle数据库和预设备用数据库中确定目标读写数据库。
其中,上述数据迁移装置中各个模块的功能实现与上述数据迁移方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
此外,本发明实施例还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有数据迁移程序,其中所述数据迁移程序被处理器执行时,实现如上述的数据迁移方法的步骤。
其中,数据迁移程序被执行时所实现的方法可参照本发明数据迁移方法的各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种数据迁移方法,其特征在于,所述数据迁移方法包括:
在接收到前端应用发送的第一数据读写请求时,根据预设流量开关当前的流量导向在预设Oracle数据库和预设备用数据库中确定目标读写数据库;
当所述目标读写数据库为所述预设Oracle数据库时,通过预设数据总线对所述预设Oracle数据库执行对应的第一数据读写操作,并在所述第一数据读写操作完成时对所述预设Oracle数据库与所述预设备用数据库执行数据同步操作;
在接收到第一开关调整指令时,根据所述开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设备用数据库。
2.如权利要求1所述的数据迁移方法,其特征在于,所述在接收到第一开关调整指令时,根据所述开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设备用数据库的步骤之后,还包括:
在接收到所述前端应用发送的第二数据读写请求时,根据所述预设流量开关调整后的流量导向、通过所述预设数据总线对所述预设备用数据库执行对应的第二数据读写操作,并在所述第二读写操作完成时对所述预设备用数据库与所述预设Oracle数据库执行数据同步操作;
在接收到第二开关调整指令时,根据所述第二开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设Oracle数据库。
3.如权利要求2所述的数据迁移方法,其特征在于,所述在接收到所述前端应用发送的第二数据读写请求时,根据所述预设流量开关调整后的流量导向、通过所述预设数据总线对所述预设备用数据库执行对应的第二数据读写操作,并在所述第二读写操作完成时对所述预设备用数据库与所述预设Oracle数据库执行数据同步操作的步骤之后,还包括:
检测所述预设备用数据库的性能指标数据,并判断所述性能指标数据是否满足预设正常运行条件;
若所述性能指标数据不满足预设正常运行条件,则向对应的管理端发送告警信息;
所述在接收到第二开关调整指令时,根据所述第二开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设Oracle数据库步骤还包括:
在接收到所述管理端发送的第二开关调整指令时,根据所述管理端发送的第二开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设Oracle数据库。
4.如权利要求1所述的数据迁移方法,其特征在于,所述预设备用数据库包括预设MySQL数据库,所述数据总线包括与所述预设Oracle数据库对应的第一消息队列、与所述预设MySQL数据库对应的第二消息队列和日志解析器,
所述当所述目标读写数据库为所述预设Oracle数据库时,通过预设数据总线对所述预设Oracle数据库执行对应的第一数据读写操作,并在所述第一数据读写操作完成时对所述预设Oracle数据库与所述预设备用数据库执行数据同步操作的步骤包括:
当所述目标读写数据库为所述预设Oracle数据库时,向所述第一消息队列添加对应的第一读写消息,以根据所述第一读写消息对所述预设Oracle数据库执行对应的第一数据读写操作,并在所述第一数据读写操作完成时生成对应的重做日志redo log;
通过所述日志解析器对所述redo log进行解析,并根据解析结果向所述第二消息队列添加对应的第二读写消息,以根据所述第二读写消息对所述预设MySQL数据库执行对应的数据同步操作。
5.如权利要求1所述的数据迁移方法,其特征在于,所述数据迁移方法还包括:
在接收到功能改造指令时,根据所述功能改造指令在所述预设Oracle数据库和所述预设备用数据库中同步修改对应的数据表结构。
6.如权利要求5所述的数据迁移方法,其特征在于,所述在接收到功能改造指令时,根据所述功能改造指令在所述预设Oracle数据库和所述预设备用数据库中同步修改对应的数据表结构的步骤之后,还包括:
在修改完成时,将所述预设Oracle数据库和所述预设备用数据库中修改后的数据表锁定,并向对应的审核端发送评审信息;
在接收到所述审核端发送的评审通过信息时,根据所述评审通过信息解锁所述修改后的数据表。
7.如权利要求1至6中任一项所述的数据迁移方法,其特征在于,所述在接收到前端应用发送的第一数据读写请求时,根据预设流量开关的流量导向在预设Oracle数据库和预设备用数据库中确定目标读写数据库的步骤包括:
在接收到前端应用发送的第一数据读写请求时,根据所述第一数据读写请求确定目标数据,并确定所述目标数据所对应的目标数据表;
根据所述目标数据表确定所述预设流量开关当前的流量导向,并根据所述预设流量开关当前的流量导向在预设Oracle数据库和预设备用数据库中确定目标读写数据库。
8.一种数据迁移装置,其特征在于,所述数据迁移装置包括:
请求接收模块,用于在接收到前端应用发送的第一数据读写请求时,根据预设流量开关当前的流量导向在预设Oracle数据库和预设备用数据库中确定目标读写数据库;
第一同步模块,用于当所述目标读写数据库为所述预设Oracle数据库时,通过预设数据总线对所述预设Oracle数据库执行对应的第一数据读写操作,并在所述第一数据读写操作完成时对所述预设Oracle数据库与所述预设备用数据库执行数据同步操作;
第一调整模块,用于在接收到第一开关调整指令时,根据所述开关调整指令调整所述预设流量开关的流量导向,以将所述目标读写数据库切换为所述预设备用数据库。
9.一种数据迁移设备,其特征在于,所述数据迁移设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的数据迁移程序,其中所述数据迁移程序被所述处理器执行时,实现如权利要求1至7中任一项所述的数据迁移方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据迁移程序,其中所述数据迁移程序被处理器执行时,实现如权利要求1至7中任一项所述的数据迁移方法的步骤。
CN201911306049.9A 2019-12-17 2019-12-17 数据迁移方法、装置、设备及计算机可读存储介质 Pending CN111198869A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911306049.9A CN111198869A (zh) 2019-12-17 2019-12-17 数据迁移方法、装置、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911306049.9A CN111198869A (zh) 2019-12-17 2019-12-17 数据迁移方法、装置、设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN111198869A true CN111198869A (zh) 2020-05-26

Family

ID=70746644

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911306049.9A Pending CN111198869A (zh) 2019-12-17 2019-12-17 数据迁移方法、装置、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN111198869A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112395267A (zh) * 2020-10-23 2021-02-23 四川新网银行股份有限公司 一种不停服务用户数据迁移切换方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112395267A (zh) * 2020-10-23 2021-02-23 四川新网银行股份有限公司 一种不停服务用户数据迁移切换方法
CN112395267B (zh) * 2020-10-23 2023-06-13 四川新网银行股份有限公司 一种不停服务用户数据迁移切换方法

Similar Documents

Publication Publication Date Title
US6980988B1 (en) Method of applying changes to a standby database system
US8938421B2 (en) Method and a system for synchronizing data
CN107818431B (zh) 一种提供订单轨迹数据的方法和系统
CN113590386B (zh) 数据的容灾恢复方法、系统、终端设备及计算机存储介质
CN112000350B (zh) 一种动态规则更新方法、装置及存储介质
CN110941629A (zh) 元数据处理方法、装置、设备及计算机可读存储介质
CN111666141A (zh) 任务调度方法、装置、设备及计算机存储介质
CN111198869A (zh) 数据迁移方法、装置、设备及计算机可读存储介质
CN112597123B (zh) 数据多版本动态切换方法及装置
CN110968569B (zh) 数据库的管理方法、数据库的管理装置及存储介质
CN113537943A (zh) 一种通用工作流引擎及其构建方法
US11294866B2 (en) Lazy optimistic concurrency control
CN112559638B (zh) 数据同步的方法、装置、设备和存储介质
CN112527497B (zh) 一种序列化多线程数据处理系统
CN114116325A (zh) 配置一致性检查装置及方法
AU2016100156A4 (en) Data Structure, Model for Populating a Data Structure and Method of Programming a Processing Device Utilising a Data Structure
CN112559641A (zh) 拉链表的处理方法及装置、可读存储介质及电子设备
CN111767299A (zh) 数据库操作方法、装置、系统、存储介质及电子设备
CN110674119A (zh) 数据处理方法、系统与计算机可读存储介质
CN112988365B (zh) 一种线程管理方法、装置、设备及介质
CN112836907A (zh) 不相容职务信息的处理方法、装置及系统
CN112131022B (zh) 开放api管理方法、装置、系统与计算机可读存储介质
CN107634957B (zh) 基于协议代理的数据和文件操作实时预保存方法和系统
CN114327670A (zh) 一体化配置处理的方法、装置以及存储介质
CN118170410A (zh) 数据库升级方法、装置及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination