CN108228592B - 基于二进制日志的数据归档方法及数据归档装置 - Google Patents

基于二进制日志的数据归档方法及数据归档装置 Download PDF

Info

Publication number
CN108228592B
CN108228592B CN201611146591.9A CN201611146591A CN108228592B CN 108228592 B CN108228592 B CN 108228592B CN 201611146591 A CN201611146591 A CN 201611146591A CN 108228592 B CN108228592 B CN 108228592B
Authority
CN
China
Prior art keywords
data
database
binary log
archived
task
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.)
Active
Application number
CN201611146591.9A
Other languages
English (en)
Other versions
CN108228592A (zh
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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201611146591.9A priority Critical patent/CN108228592B/zh
Publication of CN108228592A publication Critical patent/CN108228592A/zh
Application granted granted Critical
Publication of CN108228592B publication Critical patent/CN108228592B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Abstract

本发明提供了一种基于二进制日志的数据归档方法及数据归档装置,其中,该数据归档方法包括:启动对第一数据库的二进制日志的订阅服务;删除所述第一数据库中需要归档的数据;获取所述第一数据库的二进制日志,根据所述二进制日志确定所述需要归档的数据;将所述需要归档的数据插入第二数据库中。本发明的技术方案能够通过二进制日志来获取需要归档的数据,无需直接从数据库中获取需要归档的数据,有效降低了在进行数据归档时对数据库的影响,进而能够很好地适用于不间断核心系统的数据归档工作。

Description

基于二进制日志的数据归档方法及数据归档装置
技术领域
本发明涉及数据库技术领域,具体而言,涉及一种基于二进制日志的数据归档方法及数据归档装置。
背景技术
数据归档是将不再经常使用的数据从生产库移到历史库长期保存的过程。生产库中的数据是随着业务量动态增长的,如果不及时进行数据归档,会严重影响生产库的性能。在互联网行业尤其是电商行业,为了保障生产库的性能,需要及时进行数据归档,由于这些行业的生产库中数据每日的增长量非常大,因此数据归档的频率远大于传统行业。
同时,由于互联网行业的数据库系统往往需要不间断提供服务,任何时候的并发量都很大,因此数据归档操作必须尽量减少对生产库的性能影响。另外在电商行业,业务复杂导致数据库的表关系复杂,很多业务表都是有级联关系的,数据归档的时候需要在一个事务中归档,这无疑又增加了数据归档的复杂度。
目前,在MySQL(一个关系型数据库管理系统)数据库领域普遍采用的数据归档方案有如下两种:
1、基于mysqldump(mysql中用于转存储数据库的实用程序)的数据归档方案:该方案通过MySQL中的mysqldump命令将需要归档的数据导出,然后导入到历史库,最后再从生产库中删除。
2、基于select-insert-delete的数据归档方案:该方案采用SQL语句select(选择)出需要归档的数据,然后insert(插入)到历史库,最后再从生产库delete(删除)。
上述的两种数据归档方案是传统企业级应用在数据归档领域最常用的方案。从性能上来说,这两种方案都会对生产库造成很大的影响,在生产库并发压力高且属于不间断核心系统时都不适宜;从功能上来说,基于mysqldump的数据归档方案仅支持单表的数据归档,难以处理有级联关系的多张表的同步归档,而基于select-insert-delete的数据归档方案虽然可以处理有级联关系的多张表,但通常仅能针对主表数据逐条进行归档。
因此,需要一种新的数据归档方案来对数据库中的数据进行归档。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明的目的在于提供一种基于二进制日志的数据归档方法及数据归档装置,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明的一个方面,提供一种基于二进制日志的数据归档方法,包括:
启动对第一数据库的二进制日志的订阅服务;
删除所述第一数据库中需要归档的数据;
获取所述第一数据库的二进制日志,根据所述二进制日志确定所述需要归档的数据;
将所述需要归档的数据插入第二数据库中。
在本发明的一种示例性实施例中,删除所述第一数据库中需要归档的数据的步骤,包括:
向所述第一数据库发送包括任务标记命令和数据删除命令的数据归档命令,所述任务标记命令用于标记所述第一数据库中需要归档的数据,所述数据删除命令用于删除所述第一数据库中需要归档的数据。
在本发明的一种示例性实施例中,所述任务标记命令具体用于在所述第一数据库中的识别码表中创建一记录,所述记录包含有本次数据归档任务的标识符、所述任务标记命令对应的事务标识符、所述数据删除命令对应的SQL语句和当前数据库时间,其中,所述任务标记命令和所述数据删除命令在同一个事务中执行。
在本发明的一种示例性实施例中,根据所述二进制日志确定所述需要归档的数据的步骤,包括:
若所述二进制日志中的任一事务包含的第一条数据对应的事务标识符和数据归档任务的标识符分别与所述记录中包含的事务标识符和本次数据归档任务的标识符相匹配,则确定所述任一事务中的数据为所述需要归档的数据。
在本发明的一种示例性实施例中,所述的基于二进制日志的数据归档方法还包括:
在根据所述二进制日志确定所述需要归档的数据之后,将确定的所述需要归档的数据备份至分布式文件系统中。
在本发明的一种示例性实施例中,所述的基于二进制日志的数据归档方法还包括:
在需要执行数据归档任务时,启动对所述第一数据库的二进制日志的订阅服务,并在获取到所述二进制日志之后,停止对所述第一数据库的二进制日志进行订阅。
根据本发明的另一方面,提供一种基于二进制日志的数据归档装置,包括:
订阅管理单元,用于启动对第一数据库的二进制日志的订阅服务;
处理单元,用于删除所述第一数据库中需要归档的数据;
获取单元,用于获取所述第一数据库的二进制日志;
确定单元,用于根据所述二进制日志确定所述需要归档的数据;
插入单元,用于将所述需要归档的数据插入第二数据库中。
在本发明的一种示例性实施例中,所述处理单元配置为:
向所述第一数据库发送包括任务标记命令和数据删除命令的数据归档命令,所述任务标记命令用于标记所述第一数据库中需要归档的数据,所述数据删除命令用于删除所述第一数据库中需要归档的数据。
在本发明的一种示例性实施例中,所述任务标记命令具体用于在所述第一数据库中的识别码表中创建一记录,所述记录包含有本次数据归档任务的标识符、所述任务标记命令对应的事务标识符、所述数据删除命令对应的SQL语句和当前数据库时间,其中,所述任务标记命令和所述数据删除命令在同一个事务中执行。
在本发明的一种示例性实施例中,所述确定单元配置为:
在所述二进制日志中的任一事务包含的第一条数据对应的事务标识符和数据归档任务的标识符分别与所述记录中包含的事务标识符和本次数据归档任务的标识符相匹配时,确定所述任一事务中的数据为所述需要归档的数据。
在本发明的一些实施例所提供的技术方案中,由于二进制日志会记录数据库中所有数据的变化,因此通过在启动对第一数据库的二进制日志的订阅服务之后,删除第一数据库中需要归档的数据,使得第一数据库中需要归档的数据能够记录在二进制日志中,进而可以通过第一数据库的二进制日志来确定需要归档的数据,由于本发明的实施例中的技术方案是基于二进制日志来获取需要归档的数据,因此无需直接从第一数据库中获取数据,有效降低了对第一数据库的影响,进而能够很好地适用于不间断核心系统的数据归档工作。
同时,在本发明的一些实施例所提供的技术方案中,通过在第一数据库中的识别码表中创建记录(该记录也会记录在二进制日志中),并根据该记录中的标识符和二进制日志中的标识符来确定需要归档的数据,使得能够准确定位到需要归档的数据,有效提高了数据归档的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示意性示出了根据本发明的实施例的基于二进制日志的数据归档方法的流程图;
图2示意性示出了根据本发明的实施例的基于binlog的数据归档方法的总体示意图;
图3示意性示出了根据本发明的实施例的基于binlog的数据归档方法的详细过程示意图;
图4示意性示出了根据本发明的第一个实施例的基于二进制日志的数据归档装置的框图;
图5示意性示出了根据本发明的第二个实施例的基于二进制日志的数据归档装置的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示意性示出了根据本发明的实施例的基于二进制日志的数据归档方法的流程图。
具体地,如图1所示,在步骤S102中,启动对第一数据库的二进制日志的订阅服务。
根据示例实施例,第一数据库可以是生产库,其中的二进制日志主要是用于记录数据库中所有数据的变化。具体来说,对于MySQL数据库而言,二进制日志即为binlog日志。
在步骤S104中,删除所述第一数据库中需要归档的数据。
由于二进制日志能够记录数据库中所有数据的变化,因此在删除第一数据库中需要归档的数据之后,第一数据库中需要归档的数据能够记录在二进制日志中,以此便于根据二进制日志来确定需要归档的数据。
在步骤S106中,获取所述第一数据库的二进制日志,根据所述二进制日志确定所述需要归档的数据。
如上所述,由于在删除第一数据库中需要归档的数据之后,第一数据库中需要归档的数据能够记录在二进制日志中,因此可以根据第一数据库的二进制日志来确定需要归档的数据。
在步骤S108中,将所述需要归档的数据插入第二数据库中。
根据示例实施例,当第一数据库是生产库时,第二数据库可以是历史库,历史库用于存储生产库中需要归档的数据。由于本发明的上述实施例中的技术方案是基于二进制日志来获取需要归档的数据,进而插入到第二数据库中,因此在将第一数据库中的数据归档至第二数据库时,无需直接从第一数据库中获取需要归档的数据,有效降低了对第一数据库的影响,进而能够很好地适用于不间断核心系统的数据归档工作。
基于图1所示的数据归档方法,在本发明的一种示例性实施例中,还可以包括:在步骤S106根据所述二进制日志确定所述需要归档的数据之后,将确定的所述需要归档的数据备份至分布式文件系统中。
根据示例实施例,由于数据归档操作属于跨数据库的分布式事务,而本发明上述实施例的技术方案又是采用基于二进制日志的异步处理方式,可能存在事务风险,因此通过将需要归档的数据备份至分布式文件系统中,可以在系统出现异常时采用事务补偿的方式重新执行,并且也可以实现数据归档操作的回滚。
由于订阅第一数据库的二进制日志会对第一数据库的网络产生一定的影响,为了尽可能降低对第一数据库的网络造成的影响,根据本发明的示例实施例,上述的数据归档方法还包括:在需要执行数据归档任务时,启动对所述第一数据库的二进制日志的订阅服务,并在获取到所述二进制日志之后,停止对所述第一数据库的二进制日志进行订阅。换句话说,在本发明的示例实施例中,仅在进行数据归档任务期间才开启对第一数据库的二进制日志的订阅服务。
此外,由于在进行数据归档期间会有很多与本次数据归档任务无关的数据变更,因此为了保证能够准确识别到需要归档的数据,本发明的一个示例实施例对图1中所示的步骤S104和步骤S106进行了具体阐述如下:
根据本发明的示例实施例,步骤S104包括:向所述第一数据库发送包括任务标记命令和数据删除命令的数据归档命令,所述任务标记命令用于标记所述第一数据库中需要归档的数据,所述数据删除命令用于删除所述第一数据库中需要归档的数据。
更具体地,所述任务标记命令具体用于在所述第一数据库中的识别码表中创建一记录,所述记录包含有本次数据归档任务的标识符、所述任务标记命令对应的事务标识符、所述数据删除命令对应的SQL语句和当前数据库时间,其中,所述任务标记命令和所述数据删除命令在同一个事务中执行。
根据本发明的示例实施例,第一数据库中的识别码表可以是事先(即在发送任务标记命令之前)创建的,也可以是由任务标记命令创建的。
由于在第一数据库中的识别码表中创建了一记录,该记录包含有本次数据归档任务的标识符、任务标记命令对应的事务标识符等,且任务标记命令和数据删除命令在同一个事务中执行,因此在第一数据库的二进制日志中也会在一个事务中记录出相应的标识符,进而可以据此来确定属于本次数据归档任务的数据。
而通过在创建的记录中包含有数据删除命令对应的SQL语句和当前数据库时间,也使得在数据归档任务期间出现异常时进行数据恢复。
根据本发明的示例实施例,步骤S106中根据所述二进制日志确定所述需要归档的数据包括:若所述二进制日志中的任一事务包含的第一条数据对应的事务标识符和数据归档任务的标识符分别与所述记录中包含的事务标识符和本次数据归档任务的标识符相匹配,则确定所述任一事务中的数据为所述需要归档的数据。
以下结合图2和图3,以上述的二进制日志为binlog日志、第一数据库为生产库、第二数据库为历史库为例,详细说明本发明的示例实施例的技术方案。
图2示意性示出了根据本发明的实施例的基于binlog的数据归档方法的总体示意图。
如图2所示,根据本发明的实施例的基于binlog的数据归档方法主要采用了基于binlog的主从复制技术,将数据归档服务伪装成binlog订阅服务,从而得到生产库的数据变更信息。具体地,数据归档服务通过任务调度按照一定规则(如图2中所示的定时触发)触发数据归档程序,数据归档程序首先启动binlong订阅服务,然后向生产库发送数据归档命令,生产库接收到相关命令后,会执行相关数据删除操作,即将需要归档的数据删除,同时,删除的数据会被记录到binlog中。数据归档程序通过获取生产库的binlog确定被删除的数据(也即需要归档的数据),最后将这些数据插入到历史库,完成数据归档操作。
由于图2中所示的技术方案是通过订阅binlog的方式异步取得需要归档的数据,对生产库几乎没有任何影响。同时对于存在级联关系的多张表,可以通过执行MySQL的级联删除语句在一个事务中执行删除操作,插入历史库的操作也可以在一个事务中全部解决,有效保障多表执行归档操作的数据一致性。
需要说明的是:存在级联关系的多张表主要是指主子表,子表只能依赖主表存在,如果主表不存在,则子表没有存在的价值,因此有级联关系的表需要在一个事务中同时删除。
图3示意性示出了根据本发明的实施例的基于binlog的数据归档方法的详细过程示意图。
如图3所示,根据本发明的实施例的基于binlog的数据归档方法的详细过程,主要包括以下步骤:
步骤(1),任务调度组件触发数据归档任务。其中,任务调度组件负责触发数据归档任务,该组件可以根据业务需求灵活定制数据归档的策略,比如可以基于给定时间点、给定时间间隔或者给定执行次数自动触发数据归档任务。
步骤(2),数据归档组件开始订阅binlog。
步骤(3),开启订阅binlog之后,数据归档组件向生产库发送执行数据归档的命令。之后,数据归档组件从生产库中取得binlog日志。
步骤(4),在数据归档组件取得binlog日志之后,停止订阅binlog。
需要说明的是,由于订阅生产库的binlog对生产库网络IO有一定影响,因此本实施例的技术方案只有在执行数据归档任务期间才开启订阅服务,图3中所示的步骤(2)开始订阅binlog和步骤(4)停止订阅binlog分别对应数据归档任务的起点和终点。开启订阅binlog之后,数据归档组件向生产库发送执行数据归档的命令,该命令主要包括任务标记命令和数据删除命令,任务标记命令用于数据归档组件取得binlog数据后定位哪些变更的数据属于本次数据归档任务对应的数据,这是由于生产库的并发量很大,在步骤(2)至步骤(4)期间会有很多与本次数据归档任务无关的数据变更,因此需要识别属于本次数据归档任务的数据。
步骤(5),数据归档组件将binlog日志备份到分布式文件系统中。
需要说明的是,分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,分布式文件系统可以有效解决数据的存储和管理难题。在本发明的示例实施例中,数据归档组件主要是用于备份数归档过程中的binlog日志,因为数据归档操作属于跨数据库的分布式事务,本实施例中又是采用异步处理方式,存在事务风险,因此通过将数据归档的binlog日志备份到分布式文件系统中,可以在系统出现异常时采用事务补偿方式重新执行。同时基于该binlog日志,数据归档组件还可以实现数据归档操作的回滚。
更具体地,步骤(5)中,数据归档组件可以仅将确定的与需要归档的数据相关的binlog日志备份到分布式文件系统中。
步骤(6),解析binlog日志,将需要归档的数据归档到历史库中。
需要说明的是:binlog日志是二进制存储的,在本实施例的技术方案中需要将binlog日志从二进制解析成MySQL的Insert语句,然后将数据插入到历史库中。
其中,binlog日志解析过程需要严格按照MySQL的规范进行,目前已经有很多开源实现,在此不再赘述。
在图3所示的技术方案的基础上,以下详细说明如何在binlog中识别属于本次数据归档任务的数据。
在MySQL数据库中,binlog主要分为STATEMENT、ROW、MIXED三种模式,目前主要采用的是ROW模式,该模式下不记录执行的SQL语句的上下文相关的信息,仅记录被修改的数据,因此无法通过在SQL语句中增加标记的方式识别本次归档任务修改的数据。根据本发明的示例实施例,主要采用事务内附加标记方式识别本次归档任务修改的数据,具体方案如下:
在生产库中创建一张名为识别码的表,表的字段包括:任务标识符、事务标识符、归档执行的SQL语句(即删除数据使用的SQL语句)、创建时间。
数据归档组件发送的数据归档命令包括两部分SQL语句,第一部分即是在识别码表中创建一条新的记录,记录的内容包括:本次任务的标识符、事务标识符(由数据归档组件随机生成UUID)、归档执行的SQL语句(也即是数据归档命令包括的第二部分SQL语句,记录该SQL语句可以在出现异常时进行数据恢复),以及当前数据库时间。第二部分即是删除本次归档数据的SQL语句。其中,存在级联关系的多张表使用MySQL级联删除的SQL语句。
需要说明的是:数据归档命令的两部分SQL语句在同一个事务中执行的。在生产库中创建的识别码表可以是事先创建的,也可以是由数据归档命令的第一部分SQL语句创建的。
当数据归档组件在获取到binlog日志后,首先检查事务中第一条数据变更是否符合:类型为INSERT,变更数据表为识别码表,并且任务标识符和事务标识符都与本次数据归档任务相匹配。若上述条件都符合,则确定该事务中的数据都属于本次数据归档任务对应的数据,否则即为正常的业务操作数据。
需要说明的是:也可以仅检查事务中第一条数据变更是否符合:任务标识符和事务标识符都与本次数据归档任务相匹配,以确定该事务中的数据是否属于本次数据归档任务对应的数据。
图4示意性示出了根据本发明的第一个实施例的基于二进制日志的数据归档装置的框图。
如图4所示,根据本发明的第一个实施例的基于二进制日志的数据归档装置400,包括:订阅管理单元402、处理单元404、获取单元406、确定单元408和插入单元410。
具体地:订阅管理单元402用于启动对第一数据库的二进制日志的订阅服务;处理单元404用于删除所述第一数据库中需要归档的数据;获取单元406用于获取所述第一数据库的二进制日志;确定单元408用于根据所述二进制日志确定所述需要归档的数据;插入单元410用于将所述需要归档的数据插入第二数据库中。
由于二进制日志会记录数据库中所有数据的变化,因此在图4所示的实施例中,通过在订阅管理单元402启动对第一数据库的二进制日志的订阅服务之后,由处理单元404删除第一数据库中需要归档的数据,使得第一数据库中需要归档的数据能够记录在二进制日志中,进而可以通过第一数据库的二进制日志来确定需要归档的数据,由于本发明的实施例中的技术方案是基于二进制日志来获取需要归档的数据,因此无需直接从第一数据库中获取数据,有效降低了对第一数据库的影响,进而能够很好地适用于不间断核心系统的数据归档工作。
根据本发明的示例性实施例,处理单元404配置为:向所述第一数据库发送包括任务标记命令和数据删除命令的数据归档命令,所述任务标记命令用于标记所述第一数据库中需要归档的数据,所述数据删除命令用于删除所述第一数据库中需要归档的数据。
更具体地,所述任务标记命令具体用于在所述第一数据库中的识别码表中创建一记录,所述记录包含有本次数据归档任务的标识符、所述任务标记命令对应的事务标识符、所述数据删除命令对应的SQL语句和当前数据库时间,其中,所述任务标记命令和所述数据删除命令在同一个事务中执行。
根据本发明的示例性实施例,确定单元408配置为:在所述二进制日志中的任一事务包含的第一条数据对应的事务标识符和数据归档任务的标识符分别与所述记录中包含的事务标识符和本次数据归档任务的标识符相匹配时,确定所述任一事务中的数据为所述需要归档的数据。
需要说明的是:通过在第一数据库中的识别码表中创建记录(该记录也会记录在二进制日志中),并由确定单元408根据该记录中的标识符和二进制日志中的标识符来确定需要归档的数据,使得能够准确定位到需要归档的数据,有效提高了数据归档的效率。
根据本发明的示例性实施例,订阅管理单元402配置为:在需要执行数据归档任务时,启动对所述第一数据库的二进制日志的订阅服务,并在获取单元406获取到所述二进制日志之后,停止对所述第一数据库的二进制日志进行订阅。
图5示意性示出了根据本发明的第二个实施例的基于二进制日志的数据归档装置的框图。
如图5所示,根据本发明的实施例的基于二进制日志的数据归档装置500,在包括图4中所示的订阅管理单元402、处理单元404、获取单元406、确定单元408和插入单元410的基础上,还包括备份单元502。
具体地,备份单元502用于在确定单元408根据所述二进制日志确定所述需要归档的数据之后,将所述需要归档的数据备份至分布式文件系统中。
需要说明的是:由于数据归档操作属于跨数据库的分布式事务,而本发明上述实施例的技术方案又是采用基于二进制日志的异步处理方式,可能存在事务风险,因此通过由备份单元502将需要归档的数据备份至分布式文件系统中,可以在系统出现异常时采用事务补偿的方式重新执行,并且也可以实现数据归档操作的回滚。
本发明上述实施例的技术方案特别适用于不间断高并发压力的数据库系统进行数据归档的场景。由于目前业界普遍使用的数据归档方案都对生产库网络的IO有很大影响,所以数据归档工作一般都是集中在系统负载较低时(如晚上)进行的。而在互联网行业尤其是大型电商行业,核心系统往往都是不间断运行且并发压力一直都很高,并且对数据库访问的延迟要求也比较苛刻,这样的系统无法采用传统的数据归档方案,而本发明上述实施例的数据归档方案由于是通过二进制日志(如binlog日志)取得需要归档的数据,无需通过数据库,因此对生产库网络的IO影响较小,可以随时进行数据归档,并且也能够实现快速回滚操作,以适应多变的数据归档需求。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (10)

1.一种基于二进制日志的数据归档方法,其特征在于,包括:
启动对第一数据库的二进制日志的订阅服务;其中,所述第一数据库包括生产库;
删除所述第一数据库中需要归档的数据;
获取所述第一数据库的二进制日志,根据所述二进制日志确定所述需要归档的数据;
将所述需要归档的数据插入第二数据库中;其中,所述第二数据库包括历史库。
2.根据权利要求1所述的基于二进制日志的数据归档方法,其特征在于,删除所述第一数据库中需要归档的数据的步骤,包括:
向所述第一数据库发送包括任务标记命令和数据删除命令的数据归档命令,所述任务标记命令用于标记所述第一数据库中需要归档的数据,所述数据删除命令用于删除所述第一数据库中需要归档的数据。
3.根据权利要求2所述的基于二进制日志的数据归档方法,其特征在于,所述任务标记命令具体用于在所述第一数据库中的识别码表中创建一记录,所述记录包含有本次数据归档任务的标识符、所述任务标记命令对应的事务标识符、所述数据删除命令对应的SQL语句和当前数据库时间,其中,所述任务标记命令和所述数据删除命令在同一个事务中执行。
4.根据权利要求3所述的基于二进制日志的数据归档方法,其特征在于,根据所述二进制日志确定所述需要归档的数据的步骤,包括:
若所述二进制日志中的任一事务包含的第一条数据对应的事务标识符和数据归档任务的标识符分别与所述记录中包含的事务标识符和本次数据归档任务的标识符相匹配,则确定所述任一事务中的数据为所述需要归档的数据。
5.根据权利要求1至4中任一项所述的基于二进制日志的数据归档方法,其特征在于,还包括:
在根据所述二进制日志确定所述需要归档的数据之后,将确定的所述需要归档的数据备份至分布式文件系统中。
6.根据权利要求1至4中任一项所述的基于二进制日志的数据归档方法,其特征在于,还包括:
在需要执行数据归档任务时,启动对所述第一数据库的二进制日志的订阅服务,并在获取到所述二进制日志之后,停止对所述第一数据库的二进制日志进行订阅。
7.一种基于二进制日志的数据归档装置,其特征在于,包括:
订阅管理单元,用于启动对第一数据库的二进制日志的订阅服务;其中,所述第一数据库包括生产库;
处理单元,用于删除所述第一数据库中需要归档的数据;
获取单元,用于获取所述第一数据库的二进制日志;
确定单元,用于根据所述二进制日志确定所述需要归档的数据;
插入单元,用于将所述需要归档的数据插入第二数据库中;其中,所述第二数据库包括历史库。
8.根据权利要求7所述的基于二进制日志的数据归档装置,其特征在于,所述处理单元配置为:
向所述第一数据库发送包括任务标记命令和数据删除命令的数据归档命令,所述任务标记命令用于标记所述第一数据库中需要归档的数据,所述数据删除命令用于删除所述第一数据库中需要归档的数据。
9.根据权利要求8所述的基于二进制日志的数据归档装置,其特征在于,所述任务标记命令具体用于在所述第一数据库中的识别码表中创建一记录,所述记录包含有本次数据归档任务的标识符、所述任务标记命令对应的事务标识符、所述数据删除命令对应的SQL语句和当前数据库时间,其中,所述任务标记命令和所述数据删除命令在同一个事务中执行。
10.根据权利要求9所述的基于二进制日志的数据归档装置,其特征在于,所述确定单元配置为:
在所述二进制日志中的任一事务包含的第一条数据对应的事务标识符和数据归档任务的标识符分别与所述记录中包含的事务标识符和本次数据归档任务的标识符相匹配时,确定所述任一事务中的数据为所述需要归档的数据。
CN201611146591.9A 2016-12-13 2016-12-13 基于二进制日志的数据归档方法及数据归档装置 Active CN108228592B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611146591.9A CN108228592B (zh) 2016-12-13 2016-12-13 基于二进制日志的数据归档方法及数据归档装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611146591.9A CN108228592B (zh) 2016-12-13 2016-12-13 基于二进制日志的数据归档方法及数据归档装置

Publications (2)

Publication Number Publication Date
CN108228592A CN108228592A (zh) 2018-06-29
CN108228592B true CN108228592B (zh) 2021-02-26

Family

ID=62638189

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611146591.9A Active CN108228592B (zh) 2016-12-13 2016-12-13 基于二进制日志的数据归档方法及数据归档装置

Country Status (1)

Country Link
CN (1) CN108228592B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111209251A (zh) * 2019-12-27 2020-05-29 山大地纬软件股份有限公司 一种用于数据归档系统的数据增量同步系统及方法
CN112100186B (zh) * 2020-08-26 2024-04-05 金蝶软件(中国)有限公司 基于分布式系统的数据处理方法、装置、计算机设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040225728A1 (en) * 2003-05-05 2004-11-11 Huggins Guy Dwayne Network and communications system for streaming media applications
US8510270B2 (en) * 2010-07-27 2013-08-13 Oracle International Corporation MYSQL database heterogeneous log based replication
CN103345470B (zh) * 2013-05-31 2016-05-25 深圳市沃信科技有限公司 一种数据库容灾方法、系统及服务器
CN103500229B (zh) * 2013-10-24 2017-04-19 北京奇虎科技有限公司 一种数据库同步方法和数据库系统
CN104239476B (zh) * 2014-09-04 2018-09-25 上海天脉聚源文化传媒有限公司 一种数据库同步的方法、装置及系统

Also Published As

Publication number Publication date
CN108228592A (zh) 2018-06-29

Similar Documents

Publication Publication Date Title
US9031997B2 (en) Log file compression
CN101719149B (zh) 数据同步方法及装置
WO2019109854A1 (zh) 分布式数据库数据处理方法、装置、存储介质及电子装置
US20150261766A1 (en) Method and apparatus for determining a range of files to be migrated
CN111046036A (zh) 数据同步方法、装置、系统及存储介质
JP2022031625A (ja) 情報をプッシュするための方法および装置、電子機器、記憶媒体並びにコンピュータプログラム
CN112417033A (zh) 一种分布式图数据库多节点数据一致性实现方法和系统
CN109389299B (zh) 工作流流程部署方法、装置、计算机设备和存储介质
CN109299074B (zh) 一种基于模板化数据库视图的数据校验方法及系统
CN103235811A (zh) 一种数据存储方法及装置
CN114722119A (zh) 数据同步方法及系统
CN111737227A (zh) 数据修改方法及系统
CN112241437A (zh) 数据库多主同步的回环控制方法、装置、设备及存储介质
CN108228592B (zh) 基于二进制日志的数据归档方法及数据归档装置
CN105353988A (zh) 一种元数据读写方法及装置
WO2019118274A1 (en) Automated transaction engine
CN111177173A (zh) 大数据环境下实现数据同步优化处理的系统及其方法
CN110245148B (zh) 一种数据存储方法、装置、系统及介质
CN112632266B (zh) 数据写入方法、装置、计算机设备及可读存储介质
CN111026764B (zh) 一种数据存储方法、装置、电子产品及存储介质
Lausen Integrated concurrency control in shared B-trees
CN115599868B (zh) 数据实时同步处理方法、系统、设备及介质
Gautier et al. Formal synthesis of optimal rtos
CN108363617B (zh) 一种ssr上的离线清单异步导入方法
Sasaki et al. Logic design verification using automated test generation

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
GR01 Patent grant
GR01 Patent grant