CN106933703B - 一种数据库数据备份的方法、装置及电子设备 - Google Patents
一种数据库数据备份的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN106933703B CN106933703B CN201511027020.9A CN201511027020A CN106933703B CN 106933703 B CN106933703 B CN 106933703B CN 201511027020 A CN201511027020 A CN 201511027020A CN 106933703 B CN106933703 B CN 106933703B
- Authority
- CN
- China
- Prior art keywords
- database
- event
- log
- read
- relay
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1461—Backup scheduling policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据库数据备份的方法、一种数据库数据备份的装置以及一种电子设备。其中,所述数据库数据备份的方法,包括:从中继日志中读取事件;根据读取到的所述事件对备份数据库执行对应的数据库操作;基于所述数据库操作,更新所述中继日志中读取的所述事件的内容;将更新后的所述事件写入到二进制日志中。所述技术方案利用中继日志文件与二进制日志文件内容以及格式相似的特点,在数据更新通过的过程中将中继日志文件转换为二进制日志文件,省去了进行主备模式同步数据时,备份数据库通过中继日志文件更新数据并且在数据更新生成二进制日志文件时需要进行原生构建二进制日志文件的过程,解决了数据同步时过程繁琐,同步效率低的问题。
Description
技术领域
本申请涉及数据库技术领域,具体涉及一种数据库数据备份的方法以及一种数据库数据备份的装置;本申请同时涉及一种电子设备。
背景技术
MySQL是一种关系型数据库管理***。在MySQL数据库中有各种不同类型的日志文件:错误日志、二进制日志、查询日志等,根据这些日志可以查询MySQL数据库执行的操作以及状态等信息。其中二进制日志(binlog),记录了对MySQL数据库的更改操作,例如:创建数据库或表(create)、***操作(insert)、更新操作(update)、删除操作(delete)等,每个更改操作都以一条事件的形式写入二进制日志文件中,每条事件中都包含了当前事件更新的时间戳、该记录在当前二进制日志文件中的位置(即:偏移量)以及与数据库更改操作相关的其他信息。MySQL数据库通常有一个或者多个二进制日志文件,不同的二进制日志文件通过文件扩展名采用不同的数字编号形式加以区分,例如:MySQL-bin.00001。
一般的为了增强***的可靠性和稳定性,经常使用主备模式来部署在***中使用的数据库,目前MySQL通常包括一个主数据库和至少一个备份数据库,主数据库用于提供数据管理和数据查询等功能,备份数据库用于备份主数据库中的数据,用以在主数据库发生故障时代替主数据库提供相应的功能。在MySQL数据库中实现主备模式的方案为:备份数据库从主数据库获取二进制日志文件,将该二进制日志文件转换为中继日志文件(relaylog),根据中继日志文件在备份数据库中更新数据并生成备份数据库的二进制日志文件。
由此可见,在现有主备模式同步数据的方案下,备份数据库通过应用中继日志文件更新数据来和主数据库进行同步,并且在数据更新生成二进制日志文件时,需要进行原生构建二进制日志文件的过程,数据同步时过程繁琐,同步效率低。
发明内容
本申请提供一种数据库数据备份的方法以及一种数据库数据备份的装置,以解决现有技术中的上述问题。本申请同时涉及一种电子设备。
本申请提供了一种数据库数据备份的方法,所述数据库数据备份的方法,包括:
从中继日志中读取事件;
根据读取到的所述事件对备份数据库执行对应的数据库操作;
基于所述数据库操作,更新所述中继日志中读取的所述事件的内容;
将更新后的所述事件写入到二进制日志中。
可选的,所述根据读取到的所述事件对备份数据库执行对应的数据库操作,包括:
将从所述中继日志中读取到的所述事件解析为执行语句,并对当前数据库执行对应于所述执行语句的数据库操作;所述执行语句至少包括:修改操作语句、***操作语句或者删除操作语句。
可选的,所述事件至少包括:
执行所述事件时的时间戳、创建该事件的服务进程标识、该事件的偏移值。
可选的,所述基于所述数据库操作,更新所述中继日志中读取的所述事件的内容,包括:
基于所述数据库操作,更新所述中继日志中读取的所述事件中的时间戳、服务进程标识以及该事件的偏移值。
可选的,所述基于所述数据库操作,更新所述中继日志中读取的所述事件中的时间戳、服务进程标识以及该事件的偏移值,包括:
获取对该数据库执行对应的数据库操作时的当前***时间;
将所述中继日志中读取的所述事件的时间戳更新为已获取的当前***时间;
获取该数据库的服务进程标识;
将所述中继日志中读取的所述事件携带的创建该事件的服务进程标识更新为该数据库的服务进程标识;
获取存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度;
根据所述存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度,为从所述中继日志中读取的所述事件计算并更新偏移值。
可选的,所述事件还包括:校验和;
在所述基于所述数据库操作,更新所述中继日志中读取的所述事件的内容的步骤中,还包括:
更新所述中继日志中读取的所述事件的校验和。
可选的,所述更新所述中继日志中读取的所述事件的校验和,包括:
获取将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和;
将所述中继日志中读取的所述事件携带的校验和更新为将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和。
可选的,在所述从中继日志中读取事件的步骤之前,包括:
将当前数据库作为备份数据库,与主数据库之间建立数据连接。
可选的,所述主数据库和备份数据库为MySQL数据库。
可选的,在所述与主数据库之间建立数据连接的步骤之后,包括:
接收主数据库发送的所述主数据库中的二进制日志;
将所述二进制日志中的事件写入到备份数据库中的中继日志内。
相应的,本申请还提供了一种数据库数据备份的装置,所述数据库数据备份的装置,包括:
事件读取单元,用于从中继日志中读取事件;
数据库操作执行单元,用于根据读取到的所述事件对备份数据库执行对应的数据库操作;
事件更新单元,用于基于所述数据库操作,更新所述中继日志中读取的所述事件的内容;
日志写入单元,用于将更新后的所述事件写入到二进制日志中。
可选的,所述数据库操作执行单元,具体用于将从所述中继日志中读取到的所述事件解析为执行语句,并对当前数据库执行对应于所述执行语句的数据库操作;所述执行语句至少包括:修改操作语句、***操作语句或者删除操作语句。
可选的,所述事件读取单元,从中继日志中读取的事件至少包括:
执行所述事件时的时间戳、创建该事件的服务进程标识、该事件的偏移值。
可选的,所述事件更新单元,具体用于基于所述数据库操作,更新所述中继日志中读取的所述事件中的时间戳、服务进程标识以及该事件的偏移值。
可选的,所述事件更新单元,包括:
***时间获取子单元,用于获取对该数据库执行对应的数据库操作时的当前***时间;
时间更新子单元,用于将所述中继日志中读取的所述事件的时间戳更新为已获取的当前***时间;
服务进程标识获取子单元,用于获取该数据库的服务进程标识;
服务进程标识更新子单元,用于将所述中继日志中读取的所述事件携带的创建该事件的服务进程标识更新为该数据库的服务进程标识;
偏移值获取子单元,用于获取存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度;
偏移值更新子单元,用于根据所述存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度,为从所述中继日志中读取的所述事件计算并更新偏移值。
可选的,所述事件读取单元,从中继日志中读取的事件还包括:校验和;
所述事件更新单元,还用于基于所述数据库操作,更新所述中继日志中读取的所述事件的校验和。
可选的,所述事件更新单元,还包括:
校验和获取子单元,用于获取将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和;
校验和更新子单元,用于将所述中继日志中读取的所述事件携带的校验和更新为将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和。
可选的,所述数据库数据备份的装置,还包括:
连接建立单元,用于从中继日志中读取事件之前,将当前数据库作为备份数据库,与主数据库之间建立数据连接。
可选的,所述连接建立单元,将当前数据库作为备份数据库,与主数据库之间建立数据连接的主数据库和备份数据库为MySQL数据库。
可选的,所述数据库数据备份的装置,还包括:
二进制日志接收单元,用于在所述与主数据库之间建立数据连接之后,接收主数据库发送的所述主数据库中的二进制日志;
中继日志写入单元,用于将所述二进制日志中的事件写入到备份数据库中的中继日志内。
此外,本申请还提供了一种电子设备,包括:
显示器;
处理器;
存储器,用于存储数据库数据备份程序,所述程序在被所述处理器读取执行时,执行如下操作:从中继日志中读取事件;根据读取到的所述事件对备份数据库执行对应的数据库操作;基于所述数据库操作,更新所述中继日志中读取的所述事件的内容;将更新后的所述事件写入到二进制日志中。
与现有技术相比,本申请具有以下优点:
本申请提供的一种数据库数据备份的方法、一种数据库数据备份的装置以及电子设备,通过从中继日志中读取事件;根据读取到的所述事件对备份数据库执行对应的数据库操作;基于所述数据库操作,更新所述中继日志中读取的所述事件的内容;将更新后的所述事件写入到二进制日志中。所述技术方案利用中继日志文件与二进制日志文件内容以及格式相似的特点,在数据更新通过的过程中将中继日志文件转换为二进制日志文件,省去了进行主备模式同步数据时,备份数据库通过中继日志文件更新数据并且在数据更新生成二进制日志文件时需要进行原生构建二进制日志文件的过程,解决了数据同步时过程繁琐,同步效率低的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1示出了根据本申请的实施例提供的数据库数据备份的方法的流程图;
图2示出了根据本申请的实施例提供的二进制日志写入中继日志的流程图;
图3示出了根据本申请的实施例提供的基于所述数据库操作,更新所述中继日志中读取的所述事件中的时间戳、服务进程标识以及该事件的偏移值的流程图;
图4示出了根据本申请的实施例提供的更新所述中继日志中读取的所述事件的事件体中的校验和的流程图;
图5示出了根据本申请的实施例提供的数据库数据备份的装置的示意图;
图6示出了根据本申请的实施例提供的电子设备的示意图。
具体实施方式
为了能够更清楚地理解本申请的上述目的、特征和优点,下面结合附图和具体实施方式对本申请进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。
本申请的实施例提供了一种数据库数据备份的方法以及一种数据库数据备份的装置;本申请的实施例同时提供了一种电子设备。在下面的实施例中逐一进行详细说明。
目前MySQL通常包括一个主数据库和至少一个备份数据库,主数据库用于提供数据管理和数据查询等功能,备份数据库用于备份主数据库中的数据,用以在主数据库发生故障时代替主数据库提供相应的功能。在MySQL数据库中实现主备模式的方案为:备份数据库从主数据库获取二进制日志文件,将该二进制日志文件转换为中继日志文件(relaylog),根据中继日志文件在备份数据库中更新数据并生成备份数据库的二进制日志文件。由此可见,在现有主备模式同步数据的方案下,备份数据库通过应用中继日志文件更新数据来和主数据库进行同步,并且在数据更新生成二进制日志文件时,需要进行原生构建二进制日志文件的过程,数据同步时过程繁琐,同步效率低。针对这一问题,本申请的技术方案利用中继日志文件与二进制日志文件内容以及格式相似的特点,在数据更新通过的过程中将中继日志文件转换为二进制日志文件,省去了进行主备模式同步数据时,备份数据库通过中继日志文件更新数据并且在数据更新生成二进制日志文件时需要进行原生构建二进制日志文件的过程,从而实现了快速数据同步的功能。
在详细描述本实施例的具体步骤之前,先对本技术方案涉及的二进制日志文件以及中继日志文件作简要说明。
binlog又叫二进制日志文件,它会将MySQL中所有修改数据库数据的Query以二进制的形式记录到日志文件中(对数据库每做的一次操作,都会在binlog中有所记录),例如:create,insert,drop,update等,对于select操作则不会被记录到binlog里,因为它并没有修改数据库的数据。MySQL数据库在初始运行时会在数据根目录创建两个名称类似xxx-bin.000001和xxx-bin.index的新文件,若配置文件的相关选项没有给出文件名,MySQL将使用主机名称命名这两个文件,例如MySQL-bin.000001和MySQL-bin.index。MySQL会把所有对数据库内容和结构的修改情况记入MySQL-bin.000001文件,而MySQL-bin.index文件则包含了一份当前使用的所有二进制日志文件的清单。MySQL数据库会在重启时、或者日志文件大小超过***变量指定的上限时,生成一个新的日志文件,其文件扩展名序号依次递增。由此可见,MySQL数据库的二进制日志文件可能是一个,也可能是一组,而本申请所述的二进制日志文件则包含了MySQL数据库当前使用的所有二进制日志文件。
在二进制日志文件中会记录数据库发生的更新事件。所谓的事件,其实就是对数据库的一次操作记录,其中包括MySQL服务器执行的语句、语句的执行时间点、发起执行的客户线程ID、语句执行花费的时间开销等信息。
binlog的格式有三种:基于SQL语句的复制STATEMENT(statement-basedreplication,SBR),每一条修改数据的SQL语句都会被保存到binlog里;基于行的复制ROW(row-based replication,RBR),会记录每一行记录的变化,就是将每一行的修改都记录到binlog里面,但sql语句并没有在binlog里,但是缺点是binlog量比较大,例如:当执行update语句后面不加where条件的时候或alter table的时候,会产生大量日志;混合模式复制MIXED(mixed-based replication,MBR),在默认情况下是STATEMENT,但是在某些情况下会切换到row状态,如当一个DML更新一个引擎表,或者是与时间用户相关的函数等。
中继日志文件(relay log)缺省使用host_name-relay-bin.nnnnnn格式的文件名,n为序列号,从000001开始,备份数据库使用索引文件来跟踪当前哪个文件正在使用,索引文件名称为host_name-relay-bin.index。中继日志文件的格式与二进制日志的格式相同。从服务器获取主数据库的二进制日志之后就可解析并对备份数据库的数据做同样的更新。备份数据库有两个线程,IO线程、SQL线程。I/O线程下载主数据库的二进制日志,每次IO线程启动时在本地创建一个中继日志,SQL线程获取中继日志的数据进行从库更新。SQL线程在读取完全部的更新语句后自动删除relay日志文件。
本申请的实施例提供了一种数据库数据备份的方法,一般性的,本实施例所述的数据库数据备份的方法由备份数据库完成,该方法通过更新所述中继日志中读取的所述事件的内容,并将更新后的所述事件写入到二进制日志中完成数据库数据的备份。所述数据库数据备份的方法实施例如下:
请参考图1,其示出了根据本申请的实施例提供的数据库数据备份的方法的流程图。
所述数据库数据备份的方法包括:
步骤S101,从中继日志中读取事件。
在本实施例中,从所述中继日志中读取到的事件由事件头和数据部分组成,且事件头至少包括:执行所述事件时的时间戳、创建该事件的服务进程标识、该事件的偏移值。
需要说明的是,中继日志文件的格式和内容与二进制日志基本相同,每个二进制日志文件头部都是4个字节的标记,值为0xfe0x620x690x6e,文件头之后就是一系列的日志事件(EVENT),事件是二进制日志文件中的基本单位,事件的类型有很多种,其中用于记录数据库更改操作的事件为查询事件。下面对日志事件的结构做进一步的详细说明。
每个事件都有一个长度为19字节的事件头,其中包含执行所述事件时的时间戳、事件类型、创建该事件的服务进程标识、事件长度以及该事件的偏移值。
为了便于理解,下面举一个例子说明事件的事件头,事件的事件头如下表所示:
具体详见表一:(单位:字节)
timestamp | type_code | server_id | event_length | next_position |
通过表一可见,事件的事件头包括:timestamp(时间戳)、type_code(事件类型)、server_id(服务进程标识)、event_length(时间长度)、next_position(偏移值)五个字段。下面对每个字段做详细说明。
timestamp字段是执行该事件时的主机时间,即本申请所述的时间戳,也就是当前事件的更新时间,timestamp字段为事件头中第0-3字节。
type_code字段是事件类型,包括FORMAT_DESCRIPTION_EVENT、QUERY、LOAD_EVENT等,其中每个二进制日志文件的第一条事件的类型都是FORMAT_DESCRIPTION_EVENT,它记录了该二进制日志文件的相关信息,如版本,这些信息对于后序分析二进制日志文件的事件是有用的,所以对于要读取二进制日志文件的内容的工具都必须先读取第一条记录。QUERY包括我们经常操作的如:create,drop,update,insert等,type_code字段为事件头中的第4字节。
server_id字段是服务进程标识,即创建该事件的数据库的服务进程ID,server_id字段为事件头中的第5-8字节。
event_length字段是事件长度,该字段记录了这条事件的长度(包括该记录的事件头和数据部分的长度),event_length字段为事件头中的第9-12字节。
next_position字段是该事件的偏移值,该偏移值是表示该事件在二进制日志文件中的位置,即:该条事件后的下一条事件的开始位置,也是此条事件结束位置的上一个字节的位置,next_position字段为事件头中的第13-16字节。
在事件头之后就是根据事件类型确定的事件体(BODY),在事件体中包含事件的具体数据和检验和。
由于在本实施例中所述的数据库数据备份的方法是由备份数据库完成的,所以在步骤S101从中继日志中读取事件之前,该备份数据库还需与主数据库之间进行连接,具体包括如下步骤:
将当前数据库作为备份数据库,与主数据库之间建立数据连接。
需要说明的是,在本步骤所述的与主数据库之间建立数据连接,采用了相对宽泛的表述方式,在具体实施中,本步骤的备份数据库与主数据库建立连接时,还需要进行鉴权,例如:获取主数据库所在服务器的IP地址和主数据库提供数据库服务的服务进程标识,然后创建一个socket(套接字)与主数据库建立数据连接,并按照主备数据库之间的交互协议执行握手和验证等交互过程等验证身份后,所述数据连接才算建立成功。
在本实施例中,涉及的主数据库和备份数据库均为MySQL数据库。
在备份数据库与主数据库之间建立数据连接之后,所述备份数据库需要从主数据库中获取二进制日志文件,并将所述二进制日志文件转换为中继日志文件,具体包括步骤S100-1至S100-2,下面结合图2作进一步说明。
请参考图2,其示出了根据本申请的实施例提供的二进制日志写入中继日志的流程图。
步骤S100-1,接收主数据库发送的所述主数据库中的二进制日志。
在本实施例中,所述接收主数据库发送的所述主数据库中的二进制日志,可以采用如下方式实现:在与主数据库建立连接后,MySQL主备数据库共使用3个线程来执行数据同步的功能,当备份数据库发出start slave时,在本地创建一个I/O线程,使主数据库发送二进制日志文件,备份数据库接收主数据库发送的所述主数据库中的二进制日志。
需要说明的是,备份数据库的I/O线程每次启动时,会在备份数据库中创建一个中继日志文件。
在具体实施时,备份数据库可以通过cli_advanced_command发送COM_BINLOG_DUMP命令到主数据库来获取二进制日志,该条协议里面需要指定二进制日志名以及偏移地址,在接收到命令后主数据库为每个备份数据库创建一个Binlog Dump线程用于发送二进制日志内容。
需要说明的是,在向主数据库发送命令时,还需要发送备份数据库的服务进程标识,该服务进程标识不能与主数据库中建立连接的现有备份数据库服务进程标识重复,不然命令会被拒绝,且服务进程标识不能为0。
步骤S100-2,将所述二进制日志中的事件写入到备份数据库中的中继日志内。
在本实施例中,所述将所述二进制日志中的事件写入到备份数据库中的中继日志内,可以采用如下方式实现:备份数据库的I/O线程读取主数据库的Binlog Dump线程发送的二进制日志文件,并将所述二进制日志文件中的数据拷贝到备份数据库在启动I/O线程时创建的中继日志文件中。
需要说明的是,备份数据库在本地的data目录中会创建2个文件,这些状态文件的默认名称为主数据库master.info和relay-log.info,由于这些状态文件保存在硬盘中,所以备份数据库关闭时不会丢失,且在下次备份数据库启动时,通过读取这些状态文件可以确定备份数据库已经从主数据库中的二进制日志文件中读取了多少数据,以及备份数据库中处理了的中继日志的程度。
在本实施例中,步骤S101从中继日志中读取事件,可以采用如下方式实现:在备份数据库中创建SQL线程,读取存储在备份数据库在启动I/O线程时创建的中继日志文件中的事件信息。
需要说明的是,在备份数据库中创建的SQL线程,能够读取备份数据库中的中继日志文件,并且能够根据中继日志文件中的事件信息对具体事件根据更新语句执行更新,SQL线程读取和执行更新语句被分为两个独立的任务,在此步骤中,只执行其中的读取中继日志文件中的事件信息的任务。
步骤S103,根据读取到的所述事件对备份数据库执行对应的数据库操作。
在本实施例中,所述根据读取到的所述事件对备份数据库执行对应的数据库操作,可以采用如下方式实现:将从所述中继日志中读取到的所述事件解析为执行语句,并对当前数据库执行对应于所述执行语句的数据库操作;所述执行语句至少包括:修改操作语句、***操作语句或者删除操作语句。
在具体实施时,是通过在备份数据库中创建SQL线程,将从所述中继日志中读取到的所述事件解析为执行语句,并对当前数据库执行对应于所述执行语句的数据库操作。SQL线程读取和执行更新语句被分为两个独立的任务,在此步骤中,只执行其中的执行更新语句的任务。
由于用户是以向数据库发送结构化查询语言(Structured Query Language,SQL)语句的方式,对该数据库中存储的数据进行修改操作的,因此,数据库中存储在本地的二进制日志文件中的每条事件所记录的每条操作记录都可包含有一条对应的SQL语句,例如:这些SQL语句可以是UPDATE、INSERT、DELETE等语句,所以在本实施例中,所述将从所述中继日志中读取到的所述事件解析为执行语句中,解析成的执行语句中包括更新操作(update)语句、***操作(insert)语句、删除操作(delete)语句,update语句是对数据的更新操作,insert语句是对数据的***操作,delete语句是对数据的删除操作。而选择操作(select)语句是对数据的选择操作,实质上就是将相应的数据读取到缓存中的操作,所以在二进制日志中并不会记录SELECT语句和没有对数据进行实际更新的UPDATE语句。
在SQL线程将从所述中继日志中读取到的所述事件解析为执行语句后,根据每条事件中解析出的执行语句,在备份数据库中执行对应执行语句的数据库操作。例如:在事件中解析出的执行语句为:UPDATE Person SET Cash=Cash-1000 WHERE LastName='Wilson',则从名称为Persons的数据库表中,提取LastName字段为Wilson的记录,并对该条记录执行将Cash字段的数值减少1000的操作。
需要说明的是,在步骤S103根据读取到的所述事件对备份数据库执行对应的数据库操作中,在SQL线程将从所述中继日志中读取到的所述事件解析为执行语句并在数据库中执行完对应执行语句的数据库操作后,在备份数据库中跳过根据本次数据库操作生成相应的事件并写入存储在备份数据库中的二进制日志文件中的操作。
步骤S105,基于所述数据库操作,更新所述中继日志中读取的所述事件的内容。
在本实施例中,所述基于所述数据库操作,更新所述中继日志中读取的所述事件的内容,包括:更新所述中继日志中读取的所述事件中的时间戳、服务进程标识、该事件的偏移值。
需要说明的是,在二进制日志文件或者中继日志文件中记录的事件是对数据库的一次操作记录,所以在本步骤中更新的事件时间戳、服务进程标识、该事件的偏移值是在备份数据库中执行完对应于从事件中解析出的执行语句的数据库操作时的时间戳、该备份数据库的服务进程标识以及该条事件的偏移值。
在本实施例中,所述基于所述数据库操作,更新所述中继日志中读取的所述事件中的时间戳、服务进程标识以及该事件的偏移值,具体包括步骤S105-1至S105-6,下面结合图3作进一步说明。
请参考图3,其示出了根据本申请的实施例提供的基于所述数据库操作,更新所述中继日志中读取的所述事件中的时间戳、服务进程标识以及该事件的偏移值的流程图。
步骤S105-1,获取对该数据库执行对应的数据库操作时的当前***时间。
在本实施例中,所述获取对该数据库执行对应的数据库操作时的当前***时间是指:在备份数据库中执行完对应于从事件中解析出的执行语句的数据库操作时,获取备份数据库的当前***时间。
在具体实施时,获取备份数据库的当前***时间,可以利用***提供的接口实现上述获取被监控方的时间信息的功能,例如,可以使用***提供的Calendar类实现上述获取被监控方的时间信息的功能。
步骤S105-2,将所述中继日志中读取的所述事件的时间戳更新为已获取的当前***时间。
在本实施例中,所述将所述中继日志中读取的所述事件的时间戳更新为已获取的当前***时间,可以采用如下方式实现:将所述中继日志中读取的所述事件的数据提取到缓存中,将所述事件的事件头中的第0-3字节的取值修改为在步骤S105-1中,获取到的备份数据库的当前***时间。
步骤S105-3,获取该数据库的服务进程标识。
在本实施例中,所述获取该数据库的服务进程标识,可以采用如下方式实现:在备份数据库中的my.cnf文件中获取该数据库的服务进程标识。例如:在该数据库的my.cnf文件中server_id=11,则获取到的服务进程标识为11.
步骤S105-4,将所述中继日志中读取的所述事件携带的创建该事件的服务进程标识更新为该数据库的服务进程标识。
在本实施例中,所述将所述中继日志中读取的所述事件携带的创建该事件的服务进程标识更新为该数据库的服务进程标识,可以采用如下方式实现:将存储在缓存中的所述事件的事件头中的第5-8字节的取值修改为在步骤S105-3中,获取到的备份数据库的服务进程标识。
例如:主数据库的服务进程标识1,则将所述中继日志中读取的所述事件携带的创建该事件的服务进程标识1更新为该数据库的服务进程标识11。
步骤S105-5,获取存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度。
在本实施例中,所述获取存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度,可以采用如下方式实现:读取备份数据库中的二进制日志文件,获取在备份数据库中的二进制日志文件中最后一条事件的偏移值和该事件的长度。例如:最后一条事件的偏移值为4且长度为10。
在具体实施时,可以读取在备份数据库中的二进制日志文件中最后一条事件的事件头中第9-12字节和第13-16字节的取值获取该事件的的偏移值和该事件的长度。
需要说明的是,事件的偏移值表示该事件在二进制日志文件中的位置,例如:第一个事件的偏移值就是4,因为文件头有一个字节的长度。可以理解的,对于存储在二进制日志文件中的事件n和事件n+1来说,具有如下关系:
next_position(n+1)=next_position(n)+event_length(n)。
步骤S105-6,根据所述存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度,为从所述中继日志中读取的所述事件计算并更新偏移值。
在本实施例中,所述根据所述存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度,为从所述中继日志中读取的所述事件计算并更新偏移值,可以采用如下方式实现:根据在步骤S105-5中获取到的备份数据库的二进制日志文件中最后一条事件的偏移值和该事件的长度,将获取的偏移值和长度相加,计算出所述中继日志中读取的所述事件的新偏移值,并将存储在缓存中的所述事件的事件头中的第13-16字节的取值修改为计算出的新偏移值。
MySQL主备模式在同步速度快,简单易用,但是在检测到主备数据不一致时,却很难判断出问题所在。例如:软硬件或者网络传输出错,导致主数据库上运行的SQL语句与备份数据库上运行的SQL语句不一致(称为event corrupt)。为了解决这个问题,确保在主备模式下数据同步时的正确性,在5.6Milestone Development Release版本中加入了replication event checksum(主备模式事件校验)功能。
需要说明的是,Checksum校验和,是在数据处理和数据通信领域中,用于校验目的的一组数据项的和,尤其是远距离通信中保证数据的完整性和准确性。这些数据项可以是数字或在计算检验总和过程中看作数字的其它字符串。它通常是以十六进制为数制表示的形式,例如:十六进制串:0102030405060708的校验和是:24(十六进制)。如果校验和的数值超过十六进制的FF,也就是255,就要求其补码作为校验和。当一个事件被写入二进制日志的时候,校验和也同时写入二进制日志,然后在事件通过网络传输到备份数据库之后,再在备份数据库中对其进行验证并写入备份数据库的中继日志文件中。由于每一步都记录了事件和校验和,所以我们可以很快地找出问题所在。校验和使用zlib中的CRC-32算法,更具体地讲,是ISO-3309 CRC-32算法。
所以在本实施例中,在二进制日志文件或中继日志文件中的事件的事件体中还包括校验和,相应的,在步骤S103基于所述数据库操作,更新所述中继日志中读取的所述事件的内容时,还需要更新所述中继日志中读取的所述事件的事件体中的校验和。
所述更新所述中继日志中读取的所述事件的事件体中的校验和,具体包括步骤S105-7至S105-8,下面结合图4作进一步说明。
请参考图4,其示出了根据本申请的实施例提供的更新所述中继日志中读取的所述事件的事件体中的校验和的流程图。
步骤S105-7,获取将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和。
在本实施例中,所述获取将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和,可以采用如下方式实现:在将所述二进制日志中的每条事件写入到备份数据库中的中继日志时,使用zlib中的ISO-3309 CRC-32算法,为每条事件生成校验和。
需要说明的是,在MySQL主备模式下,在主数据库中,每条事件从session线程中写入到二进制日志文件时会生成一个该条事件的校验和,并且在主数据库通过为每个备份数据库创建的Binlog Dump线程发送二进制日志内容时,会验证每条事件在session线程中写入到二进制日志文件时生成的校验和;在备份数据库的I/O线程读取主数据库的BinlogDump线程发送的二进制日志文件,并将二进制日志文件中的每条事件拷贝到备份数据库在启动I/O线程时创建的中继日志文件时会为每条事件生成另一个校验和,该校验和会在备份数据库创建SQL线程读取存储在备份数据库在启动I/O线程时创建的中继日志文件中的事件信息时进行验证。
步骤S105-8,将所述中继日志中读取的所述事件携带的校验和更新为将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和。
在本实施例中,所述将所述中继日志中读取的所述事件携带的校验和更新为将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和,可以采用如下方式实现:将存储在缓存中的所述事件的事件体中的校验和的取值修改为在步骤S105-7中,获取到的将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和。
步骤S107,将更新后的所述事件写入到二进制日志中。
在本实施例中,所述将更新后的所述事件写入到二进制日志中,可以采用如下方式实现:对时间戳、服务进程标识、该事件的偏移值以及校验和更新后的所述事件执行写操作,将在缓存中的所述事件写入到二进制日志中。
本申请实施例提供的一种数据库数据备份的方法,通过从中继日志中读取事件;根据读取到的所述事件对备份数据库执行对应的数据库操作;基于所述数据库操作,更新所述中继日志中读取的所述事件的内容;将更新后的所述事件写入到二进制日志中,利用中继日志文件与二进制日志文件内容以及格式相似的特点,在数据更新通过的过程中将中继日志文件转换为二进制日志文件,省去了进行主备模式同步数据时,备份数据库通过中继日志文件更新数据并且在数据更新生成二进制日志文件时需要进行原生构建二进制日志文件的过程,解决了数据同步时过程繁琐,同步效率低的问题。
在上述的实施例中,提供了一种数据库数据备份的方法,与上述数据库数据备份的方法相对应的,本申请还提供了一种数据库数据备份的装置。由于装置的实施例基本相似于方法的实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。所述数据库数据备份的装置实施例如下:
请参考图5,其示出了根据本申请的实施例提供的数据库数据备份的装置的示意图。
所述数据库数据备份的装置,包括:事件读取单元501、数据库操作执行单元503、事件更新单元505以及日志写入单元507;
所述事件读取单元501,用于从中继日志中读取事件;
所述数据库操作执行单元503,用于根据读取到的所述事件对备份数据库执行对应的数据库操作;
所述事件更新单元505,用于基于所述数据库操作,更新所述中继日志中读取的所述事件的内容;
所述日志写入单元507,用于将更新后的所述事件写入到二进制日志中。
可选的,所述数据库操作执行单元503,具体用于将从所述中继日志中读取到的所述事件解析为执行语句,并对当前数据库执行对应于所述执行语句的数据库操作;所述执行语句至少包括:修改操作语句、***操作语句或者删除操作语句。
可选的,所述事件读取单元501,从中继日志中读取的事件至少包括:
执行所述事件时的时间戳、创建该事件的服务进程标识、该事件的偏移值。
可选的,所述事件更新单元505,具体用于基于所述数据库操作,更新所述中继日志中读取的所述事件中的时间戳、服务进程标识以及该事件的偏移值。
可选的,所述事件更新单元505,包括:***时间获取子单元、时间更新子单元、服务进程标识获取子单元、服务进程标识更新子单元、偏移值获取子单元以及偏移值更新子单元;
所述***时间获取子单元,用于获取对该数据库执行对应的数据库操作时的当前***时间;
所述时间更新子单元,用于将所述中继日志中读取的所述事件的时间戳更新为已获取的当前***时间;
所述服务进程标识获取子单元,用于获取该数据库的服务进程标识;
所述服务进程标识更新子单元,用于将所述中继日志中读取的所述事件携带的创建该事件的服务进程标识更新为该数据库的服务进程标识;
所述偏移值获取子单元,用于获取存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度;
所述偏移值更新子单元,用于根据所述存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度,为从所述中继日志中读取的所述事件计算并更新偏移值。
可选的,所述事件读取单元501,从中继日志中读取的事件还包括:校验和;
所述事件更新单元505,还用于基于所述数据库操作,更新所述中继日志中读取的所述事件的校验和。
可选的,所述事件更新单元505,还包括:校验和获取子单元以及校验和更新子单元;
所述校验和获取子单元,用于获取将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和;
所述校验和更新子单元,用于将所述中继日志中读取的所述事件携带的校验和更新为将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和。
可选的,所述数据库数据备份的装置,还包括:连接建立单元;
所述连接建立单元,用于从中继日志中读取事件之前,将当前数据库作为备份数据库,与主数据库之间建立数据连接。
可选的,所述连接建立单元,用于将当前数据库作为备份数据库,与主数据库之间建立数据连接的主数据库和备份数据库为MySQL数据库。
可选的,所述数据库数据备份的装置,还包括:二进制日志接收单元以及中继日志写入单元;
所述二进制日志接收单元,用于在所述与主数据库之间建立数据连接之后,接收主数据库发送的所述主数据库中的二进制日志;
所述中继日志写入单元,用于将所述二进制日志中的事件写入到备份数据库中的中继日志内。
在上述的实施例中,提供了一种数据库数据备份的方法以及一种数据库数据备份的装置,此外,本申请还提供了一种电子设备;所述电子设备实施例如下:
请参考图6,其示出了根据本申请的实施例提供的电子设备的示意图。
所述电子设备,包括:显示器601;处理器603;存储器605;
所述存储器605,用于存储数据库数据备份程序,所述程序在被所述处理器读取执行时,执行如下操作:从中继日志中读取事件;根据读取到的所述事件对备份数据库执行对应的数据库操作;基于所述数据库操作,更新所述中继日志中读取的所述事件的内容;将更新后的所述事件写入到二进制日志中。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和缓存。
缓存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性缓存等形式,如只读存储器(ROM)或闪存(flash RAM)。缓存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变缓存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他缓存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (17)
1.一种数据库数据备份的方法,其特征在于,包括:
从中继日志中读取事件;
根据读取到的所述事件对备份数据库执行对应的数据库操作;
基于所述数据库操作,更新所述中继日志中读取的所述事件的内容,包括:更新所述中继日志中读取的所述事件中的时间戳、服务进程标识、该事件的偏移值;
将更新后的所述事件写入到二进制日志中;
其中,从中继日志中读取事件之前执行如下步骤:接收主数据库发送的所述主数据库中的二进制日志;将二进制日志中的事件写入到备份数据库中的中继日志内。
2.根据权利要求1所述的数据库数据备份的方法,其特征在于,所述根据读取到的所述事件对备份数据库执行对应的数据库操作,包括:
将从所述中继日志中读取到的所述事件解析为执行语句,并对当前数据库执行对应于所述执行语句的数据库操作;所述执行语句至少包括:修改操作语句、***操作语句或者删除操作语句。
3.根据权利要求1所述的数据库数据备份的方法,其特征在于,所述基于所述数据库操作,更新所述中继日志中读取的所述事件的内容,包括:
基于所述数据库操作,更新所述中继日志中读取的所述事件中的时间戳、服务进程标识以及该事件的偏移值。
4.根据权利要求3所述的数据库数据备份的方法,其特征在于,所述基于所述数据库操作,更新所述中继日志中读取的所述事件中的时间戳、服务进程标识以及该事件的偏移值,包括:
获取对该数据库执行对应的数据库操作时的当前***时间;
将所述中继日志中读取的所述事件的时间戳更新为已获取的当前***时间;
获取该数据库的服务进程标识;
将所述中继日志中读取的所述事件携带的创建该事件的服务进程标识更新为该数据库的服务进程标识;
获取存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度;
根据所述存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度,为从所述中继日志中读取的所述事件计算并更新偏移值。
5.根据权利要求1所述的数据库数据备份的方法,其特征在于,所述事件还包括:校验和;
在所述基于所述数据库操作,更新所述中继日志中读取的所述事件的内容的步骤中,还包括:
更新所述中继日志中读取的所述事件的校验和。
6.根据权利要求5所述的数据库数据备份的方法,其特征在于,所述更新所述中继日志中读取的所述事件的校验和,包括:
获取将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和;
将所述中继日志中读取的所述事件携带的校验和更新为将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和。
7.根据权利要求1所述的数据库数据备份的方法,其特征在于,在所述从中继日志中读取事件的步骤之前,包括:
将当前数据库作为备份数据库,与主数据库之间建立数据连接。
8.根据权利要求7所述的数据库数据备份的方法,其特征在于,所述主数据库和备份数据库为MySQL数据库。
9.一种数据库数据备份的装置,其特征在于,包括:
事件读取单元,用于从中继日志中读取事件;
数据库操作执行单元,用于根据读取到的所述事件对备份数据库执行对应的数据库操作;
事件更新单元,用于基于所述数据库操作,更新所述中继日志中读取的所述事件的内容,包括:更新所述中继日志中读取的所述事件中的时间戳、服务进程标识、该事件的偏移值;
日志写入单元,用于将更新后的所述事件写入到二进制日志中;
其中,从中继日志中读取事件之前执行如下步骤:接收主数据库发送的所述主数据库中的二进制日志;将二进制日志中的事件写入到备份数据库中的中继日志内。
10.根据权利要求9所述的数据库数据备份的装置,其特征在于,所述数据库操作执行单元,具体用于将从所述中继日志中读取到的所述事件解析为执行语句,并对当前数据库执行对应于所述执行语句的数据库操作;所述执行语句至少包括:修改操作语句、***操作语句或者删除操作语句。
11.根据权利要求9所述的数据库数据备份的装置,其特征在于,所述事件更新单元,具体用于基于所述数据库操作,更新所述中继日志中读取的所述事件中的时间戳、服务进程标识以及该事件的偏移值。
12.根据权利要求11所述的数据库数据备份的装置,其特征在于,所述事件更新单元,包括:
***时间获取子单元,用于获取对该数据库执行对应的数据库操作时的当前***时间;
时间更新子单元,用于将所述中继日志中读取的所述事件的时间戳更新为已获取的当前***时间;
服务进程标识获取子单元,用于获取该数据库的服务进程标识;
服务进程标识更新子单元,用于将所述中继日志中读取的所述事件携带的创建该事件的服务进程标识更新为该数据库的服务进程标识;
偏移值获取子单元,用于获取存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度;
偏移值更新子单元,用于根据所述存储在该数据库中的二进制日志中最后一条事件的偏移值和该事件的长度,为从所述中继日志中读取的所述事件计算并更新偏移值。
13.根据权利要求9所述的数据库数据备份的装置,其特征在于,所述事件读取单元,从中继日志中读取的事件还包括:校验和;
所述事件更新单元,还用于基于所述数据库操作,更新所述中继日志中读取的所述事件的校验和。
14.根据权利要求13所述的数据库数据备份的装置,其特征在于,所述事件更新单元,还包括:
校验和获取子单元,用于获取将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和;
校验和更新子单元,用于将所述中继日志中读取的所述事件携带的校验和更新为将所述二进制日志中的事件写入到备份数据库中的中继日志时生成的校验和。
15.根据权利要求9所述的数据库数据备份的装置,其特征在于,还包括:
连接建立单元,用于从中继日志中读取事件之前,将当前数据库作为备份数据库,与主数据库之间建立数据连接。
16.根据权利要求15所述的数据库数据备份的装置,其特征在于,所述连接建立单元,将当前数据库作为备份数据库,与主数据库之间建立数据连接的主数据库和备份数据库为MySQL数据库。
17.一种电子设备,其特征在于,所述电子设备包括:
显示器;
处理器;
存储器,用于存储数据库数据备份程序,所述程序在被所述处理器读取执行时,执行如下操作:从中继日志中读取事件;根据读取到的所述事件对备份数据库执行对应的数据库操作;基于所述数据库操作,更新所述中继日志中读取的所述事件的内容,包括:更新所述中继日志中读取的所述事件中的时间戳、服务进程标识、该事件的偏移值;将更新后的所述事件写入到二进制日志中,其中,从中继日志中读取事件之前执行如下步骤:接收主数据库发送的所述主数据库中的二进制日志;将二进制日志中的事件写入到备份数据库中的中继日志内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511027020.9A CN106933703B (zh) | 2015-12-30 | 2015-12-30 | 一种数据库数据备份的方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511027020.9A CN106933703B (zh) | 2015-12-30 | 2015-12-30 | 一种数据库数据备份的方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106933703A CN106933703A (zh) | 2017-07-07 |
CN106933703B true CN106933703B (zh) | 2021-04-02 |
Family
ID=59441118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511027020.9A Active CN106933703B (zh) | 2015-12-30 | 2015-12-30 | 一种数据库数据备份的方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106933703B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368390B (zh) * | 2017-07-14 | 2019-03-15 | 北京三快在线科技有限公司 | 数据库日志的备份方法、装置及服务器 |
CN107741963A (zh) * | 2017-09-30 | 2018-02-27 | 北京奇虎科技有限公司 | 跨集群数据合并方法及装置、电子设备、计算机存储介质 |
CN111382024B (zh) * | 2018-12-28 | 2023-07-14 | 金篆信科有限责任公司 | 一种数据库主备复制延迟监控方法、装置和*** |
CN111625396B (zh) * | 2019-02-27 | 2023-05-26 | 阿里云计算有限公司 | 备份数据的校验方法、服务器及存储介质 |
CN110275893A (zh) * | 2019-06-11 | 2019-09-24 | 上海上湖信息技术有限公司 | 一种数据操作方法及装置 |
CN113032408B (zh) * | 2019-12-24 | 2024-05-07 | 阿里巴巴集团控股有限公司 | 数据处理方法、***及设备 |
CN111382012B (zh) * | 2020-03-03 | 2020-12-29 | 广州鼎甲计算机科技有限公司 | MySQL云数据库的备份方法、装置、计算机设备和存储介质 |
CN111367893A (zh) * | 2020-03-31 | 2020-07-03 | 中国建设银行股份有限公司 | 数据库版本迭代的方法及装置 |
CN111858171B (zh) * | 2020-07-10 | 2024-03-12 | 上海达梦数据库有限公司 | 一种数据备份方法、装置、设备及存储介质 |
CN112084161B (zh) * | 2020-09-16 | 2024-06-25 | 腾讯科技(深圳)有限公司 | 基于数据库的数据处理方法、装置以及可读存储介质 |
CN112559247A (zh) * | 2020-12-18 | 2021-03-26 | 创意信息技术股份有限公司 | 一种基于第三方辅助的数据库数据备份方法及*** |
CN112732492A (zh) * | 2021-01-22 | 2021-04-30 | 安徽仝心电子科技有限公司 | 一种基于云数据库的提取备份方法和*** |
CN113467996B (zh) * | 2021-07-08 | 2024-04-19 | 咪咕音乐有限公司 | 数据库备份方法、装置、计算机设备及存储介质 |
CN113868022A (zh) * | 2021-09-18 | 2021-12-31 | 聚好看科技股份有限公司 | 一种数据库的主从切换方法及装置 |
CN113987078B (zh) * | 2021-12-24 | 2022-04-19 | 中兴通讯股份有限公司 | 数据同步方法、设备及计算机可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719149B (zh) * | 2009-12-03 | 2012-02-08 | 联动优势科技有限公司 | 数据同步方法及装置 |
CN103544076B (zh) * | 2012-07-13 | 2016-04-06 | 阿里巴巴集团控股有限公司 | 一种数据备份方法及装置 |
CN103593257B (zh) * | 2012-08-15 | 2016-12-21 | 阿里巴巴集团控股有限公司 | 一种数据备份方法及装置 |
CN104657382B (zh) * | 2013-11-21 | 2018-09-14 | 阿里巴巴集团控股有限公司 | 用于MySQL主从服务器数据一致性检测的方法和装置 |
CN103929472A (zh) * | 2014-03-21 | 2014-07-16 | 珠海多玩信息技术有限公司 | 数据处理方法、装置及*** |
-
2015
- 2015-12-30 CN CN201511027020.9A patent/CN106933703B/zh active Active
Non-Patent Citations (2)
Title |
---|
MySQL主从复制的原理及配置方法(比较详细);脚本之家;《httpswww.jb51.netarticle50053.htm》;20140513;第1-18页 * |
MySQL备份和恢复策略 使用主从复制机制;Linux;《httpswww.linuxidc.comLinux2011-0840598p4.htm》;20110813;第1-5页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106933703A (zh) | 2017-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106933703B (zh) | 一种数据库数据备份的方法、装置及电子设备 | |
CN110147411B (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
CN107391628B (zh) | 数据同步方法及装置 | |
US20230325287A1 (en) | Data backup method and apparatus, data recovery method and apparatus, and storage medium | |
US8856080B2 (en) | Backup using metadata virtual hard drive and differential virtual hard drive | |
CN109189852B (zh) | 一种数据同步的方法及用于数据同步的装置 | |
WO2017059798A1 (zh) | 序列化与反序列化的方法、装置、***以及电子设备 | |
CN108255647B (zh) | 一种samba服务器集群下的高速数据备份方法 | |
CN111444196B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
EP3495961A1 (en) | System and methods for migrating database data by using an image copy | |
US10585762B2 (en) | Maintaining files in a retained file system | |
US8874519B1 (en) | Method and apparatus for restoring a table in a database | |
JP2014526748A (ja) | 効率的なデータ回復 | |
US20070156778A1 (en) | File indexer | |
CN109710185A (zh) | 数据处理方法及装置 | |
US20160335288A1 (en) | Partitioned Data Replication | |
CN107357920B (zh) | 一种增量式的多副本数据同步方法及*** | |
CN104965835B (zh) | 一种分布式文件***的文件读写方法及装置 | |
CN111930850A (zh) | 数据校验方法、装置、计算机设备和存储介质 | |
KR102392880B1 (ko) | 계층화 문서를 관리하는 방법 및 이를 이용한 장치 | |
CN113515303B (zh) | 一种项目转型方法、装置和设备 | |
CN114116691A (zh) | 数据导入校验方法、***、装置及计算机可读介质 | |
CN109462661A (zh) | 数据同步方法、装置、计算机设备和存储介质 | |
CN116501700B (zh) | 一种app格式化文件离线存储方法、装置、设备及存储介质 | |
CN113419897A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |