数据库同步方法、装置及可读介质与流程

文档序号:14714494发布日期:2018-06-16 01:04阅读:193来源:国知局
数据库同步方法、装置及可读介质与流程

本申请实施例涉及数据库领域,特别涉及一种数据库同步方法、装置及可读介质。



背景技术:

在数据库领域中,将数据库中的数据由主机同步至备机是一种灾备的主要方式。备机和主机的数据库数据保持一致,在主机数据被破坏或者主机崩溃时,可以直接通过备机上的数据库继续进行工作。

通常,客户端通过数据库事务对主机上的数据库进行数据修改。在主机接收到客户端提交的若干个数据库事务后,在根据该数据库事务对该数据库中的数据进行修改之前,首先将该数据库事务写入二进制日志(英文:binlog)文件中,并将该二进制日志文件发送至备机,备机会通过对该二进制日志文件进行解析,得到对应的数据库事务,并在备机上执行该数据库事务,以保证主机的数据库与备机的数据库保持一致。

然而,受限于二进制日志文件的文件写入速度较慢,主机将数据库事务写入二进制日志文件的效率比较低,从而会导致主机与备机在数据库的同步之间延时较大。当数据库较为庞大且对时效性要求较高时,无法满足实际处理需求。



技术实现要素:

本申请实施例提供了一种数据库同步方法、装置及可读介质,可以解决主机将数据库事务写入二进制日志文件的效率比较低,从而会导致主机与备机在数据库的同步之间延时较大的问题。所述技术方案如下:

根据本申请实施例的一方面,提供了一种数据库同步方法,所述方法包括:

获取数据库事务;

根据所述数据库事务生成二进制日志数据;

将所述二进制日志数据写入临时内存文件系统,所述临时内存文件系统是通过写内存的方式进行写入的文件系统;

将存储在所述临时内存文件系统中的所述二进制日志数据同步至备机,所述备机用于根据所述二进制日志数据对所述数据库进行同步。

根据本申请实施例的另一方面,提供了一种数据库同步装置,所述装置包括:

获取模块,用于获取数据库事务;

生成模块,用于根据所述数据库事务生成二进制日志数据;

写入模块,用于将所述二进制日志数据写入临时内存文件系统,所述临时内存文件系统是通过写内存的方式进行写入的文件系统;

同步模块,用于将存储在所述临时内存文件系统中的所述二进制日志数据同步至备机,所述备机用于根据所述二进制日志数据对所述数据库进行同步。

根据本申请实施例的另一方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如本申请实施例的第一方面及其可选实施例中任一所述的数据库同步方法。

根据本申请实施例的另一方面,提供了一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如本申请实施例的第一方面及其可选实施例中任一所述的数据库同步方法。

根据本申请实施例的另一方面,提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如上述本申请第一方面及其可选的实施例中任一所述的数据库同步方法。

本申请实施例提供的技术方案带来的有益效果至少包括:

通过将二进制日志数据以写内存的方式写入临时内存文件系统,避免了由于二进制日志文件的文件写入速度较慢,主机将二进制日志数据写入二进制日志文件的效率比较低的问题,提高了二进制日志数据的写入效率,以及提高了从临时内存文件系统读取二进制日志数据的读取效率,从而提高了数据库的写入以及读取效率,在一个典型的实施例中,该二进制日志数据的写入效率提升了五倍,数据库的每秒查询库(英文:Query Per Second)提升了10%。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一个示例性的实施例提供的数据库同步方法的实施环境示意图;

图2是本申请一个示例性的实施例提供的数据库同步方法的流程图;

图3是本申请另一个示例性的实施例提供的数据库同步方法的流程图;

图4A是本申请另一个示例性的实施例提供的数据库同步方法的实施环境示意图;

图4B是本申请另一个示例性的实施例提供的数据库同步方法的实施环境示意图;

图5是本申请另一个示例性的实施例提供的数据库同步方法的流程图;

图6是本申请一个示例性的实施例提供的数据库同步装置的结构框图;

图7是本申请一个示例性的实施例提供的终端的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

首先,对本申请实施例中涉及的以下名词进行解释:

主机:用于根据接收到的数据库事务对数据库进行调整,可选地,该主机中包括数据库以及二进制服务器。可选地,该主机可以是物理主机,也可以是虚拟主机,当其为虚拟主机时,该主机又可以称为主实例。

备机:用于对主机中的数据库进行备份,通常,备机对接收到的二进制日志数据进行解析,得到数据库事务,并在备机上执行该数据库事务,以保证主机的数据库与备机的数据库保持一致。可选地,该备机可以是物理主机,也可以是虚拟机,当其为虚拟机时,该备机又可以称为备实例。

数据库事务:数据库事务是数据库运行中的逻辑工作单位,通常,一个数据库事务可以对数据库进行一次操作,如:增加操作、修改操作、删除操作等,可选地,一个数据库事务为一条或一组结构化查询语言(Structured Query Language,SQL)语句。

二进制服务器:二进制服务器(英文:binlog server)用于根据数据库事务生成二进制日志数据(英文:binlog),并写入临时内存文件系统,以及将临时内存文件系统中的binlog同步至备机。

二进制日志数据:二进制日志数据是二进制形式的数据库事务。

临时内存文件系统:临时内存文件系统是一种通过写内存的方式进行写入的文件系统,示意性的,该临时内存文件系统为临时文件系统(temporary file storage,tmpfs)。

下面,结合上述本申请实施例中涉及的名词对本申请实施例进行说明,首先,请参考图1,图1是本申请一个示例性的实施例提供的数据库同步方法的实施环境示意图,如图1所示,该数据库同步方法运行环境包括:主机11、备机12以及通信网络13;

主机11中包括数据库110以及binlog服务器111,该数据库110根据接收到的数据库事务进行调整,binlog服务器111获取数据库110接收到的数据库事务,并将根据该数据库事务生成的二进制日志数据写入临时内存文件系统,以及将该二进制日志数据同步至备机12。

值得注意的是,本申请实施例中以主机11中包括数据库110为例进行说明,在实际操作中,主机11中还可以包括更多数据库,可选地,每个数据库与一个binlog服务器对应,即每个binlog服务器对一个数据库的数据库事务进行处理。

主机11通过通信网络13将二进制日志数据同步至备机12,该通信网络13可以是局域网、城域网或者广域网中的至少一个。

备机12包括数据库120,备机12对接收到的二进制日志数据进行解析,得到数据库事务,并在备机上执行该数据库事务,以保证主机11的数据库110与备机12的数据库120保持一致。

结合上述本申请实施例中涉及的名词以及本申请实施例的实施环境,对本申请实施例进行说明,如图2所示,图2是本申请一个示例性的实施例提供的数据库同步方法的流程图,以该数据库同步方法应用在如图1所示的二进制服务器111中为例进行说明,该数据库同步方法包括:

步骤201,获取数据库事务。

可选地,该数据库事务是数据库运行中的逻辑工作单位,通常,一个数据库事务可以对数据库进行一次操作,如:增加操作、修改操作、删除操作等,可选地,一个数据库事务为一条或一组SQL语句。

步骤202,根据数据库事务生成二进制日志数据。

可选地,binlog服务器根据该数据库事务,生成以二进制形式进行存储的二进制日志数据。

步骤203,将二进制日志数据写入临时内存文件系统。

该临时内存文件系统是通过写内存的方式进行写入的文件系统。

通常,以写内存的方式进行写入,比以写文件的方式进行写入的速率要高。

步骤204,将存储在临时内存文件系统中的二进制日志数据同步至备机。

该备机用于根据二进制日志数据对数据库进行同步,即,使备机中与该数据库事务对应的数据库与主机中与该数据库事务对应的数据库保持一致。

综上所述,本实施例提供的数据库同步方法,通过将二进制日志数据以写内存的方式写入临时内存文件系统,避免了由于二进制日志文件的文件写入速度较慢,主机将二进制日志数据写入二进制日志文件的效率比较低的问题,提高了二进制日志数据的写入效率,以及提高了从临时内存文件系统读取二进制日志数据的读取效率,从而提高了数据库的写入以及读取效率。

在一个可选的实施例中,binlog服务器接收到的数据库事务是由数据库引擎按照预先配置的地址发送的,首先,主机接收对写binlog的地址的配置,即对数据库引擎发送的数据库事务的接收地址进行配置,该接收地址为本地binlog服务器的地址,数据库引擎通过进程间通信套接字(英文:Unix socket)将数据库事务发送至binlog服务器。可选地,主机还可以通过共享内存,或者消息队列的方式将数据库事务发送至binlog服务器。

图3是本申请另一个示例性的实施例提供的数据库同步方法的流程图,以该数据库同步方法应用在如图1所示的二进制服务器111中为例进行说明,该数据库同步方法包括:

步骤301,接收数据库引擎发送的数据库事务。

该数据库事务是数据库引擎按照预先配置的本地binlog服务器地址发送的。

可选地,该数据库事务是数据库运行中的逻辑工作单位,通常,一个数据库事务可以对数据库进行一次操作,如:增加操作、修改操作、删除操作等,可选地,一个数据库事务为一条SQL语句。

可选地,数据库中包括数据库引擎,该数据库引擎是用于存储、处理和保护数据库中的数据的核心服务。可选地,本地binlog服务器的地址可以由开发人员或者用户进行配置,也可以是系统默认配置的,数据库引擎根据该本地binlog服务器的地址将数据库事务发送至该本地binlog服务器,即binlog服务器接收到数据库引擎发送的数据库事务。

步骤302,根据数据库事务生成二进制日志数据。

可选地,根据该数据库事务,生成以二进制形式进行存储的二进制日志数据。

步骤303,读取数据库配置参数。

可选地,该数据库配置参数包括:文件命名方式、文件切割方式、文件循环写入方式以及二进制日志数据的格式中的至少一种。

步骤304,根据数据库配置参数,将二进制日志数据写入临时内存文件系统。

可选地,将二进制日志数据写入临时内存文件系统时,首先在临时内存文件系统中创建文件,并将该二进制日志数据写入创建的文件中,其中,根据上述数据库配置参数创建文件。

其中,文件命名方式即该二进制日志数据写入临时内存文件系统的文件时,该文件的命名方式,示意性的,该文件的命名方式形如:mysql-bin.000070,一个文件中写有若干个二进制日志数据。

文件切割方式用于指示每个临时内存文件系统中的文件中存储的二进制日志数据的大小,如,当二进制日志数据的大小达到1吉字节(Gigabyte,GB)时,从当前存储的二进制日志数据开始,将二进制日志数据存储到下一个文件中,示意性的,将二进制日志数据x存储到文件mysql-bin.000070后,文件mysql-bin.000070中的二进制日志数据的大小达到了1GB,则创建文件mysql-bin.000071,并将下一个二进制日志数据y开始的二进制日志数据存储到文件mysql-bin.000071中,直至文件mysql-bin.000071中的二进制日志数据达到1GB。

文件循环写入方式用于指示二进制日志数据写入临时内存文件系统中的文件的方式,可以将一个二进制日志数据对应写入一个文件的方式进行循环写入,也可以是固定数量的二进制日志数据对应写入一个文件的方式进行循环写入,如:共有10个二进制日志数据,预先创建三个文件,可以将第一个二进制日志数据写入第一个文件,第二个二进制日志数据写入第二个文件,第三个二进制日志数据写入第三个文件,第四个二进制日志数据写入第一个文件,并以此类推;也可以前三个二进制日志数据写入第一个文件,第四到第六个二进制日志数据写入第二个文件,并以此类推,上述举例仅为示意性的举例,在实际操作中,文件的循环写入方式根据实际的数据库配置参数确定。

二进制日志数据的格式,binlog通常包括三种格式:语句模式(英文:Statement)、记录模式(英文:Row)以及混合模式(英文:Mixed),其中,Statement指基于SQL语句的复制,将每一条SQL语句记录在binlog中,Row指基于行的复制,即,将被修改的数据记录在binlog中,以及Mixed是指混合模式的复制,指在binlog的记录中混合使用Statement格式以及Row格式,在数据库配置参数中设置该binlog的格式后,将binlog写入临时内存文件系统。

步骤305,将存储在临时内存文件系统中的二进制日志数据同步至备机。

该备机用于根据二进制日志数据对数据库进行同步,即,使备机中与该数据库事务对应的数据库与主机中与该数据库事务对应的数据库保持一致。

综上所述,本实施例提供的数据库同步方法,通过将二进制日志数据以写内存的方式写入临时内存文件系统,避免了由于二进制日志文件的文件写入速度较慢,主机将二进制日志数据写入二进制日志文件的效率比较低的问题,提高了二进制日志数据的写入效率,以及提高了从临时内存文件系统读取二进制日志数据的读取效率,从而提高了数据库的写入以及读取效率。

本实施例提供的数据库同步方法,通过数据库配置参数将二进制日志数据写入临时内存文件系统,每个文件的命名方式遵循一定的规则,便于对临时内存文件系统中的二进制日志数据进行管理;将文件根据一定的大小进行切割,避免了文件过大或者文件过小导致的临时内存文件系统中文件的数据大小不均,不便于管理;通过对二进制日志数据的格式的配置,针对不同的情况使用不同的二进制日志数据的格式,避免造成临时内存文件系统中的内存浪费。

在一个可选的实施例中,本申请中还设置有冷备系统,示意性的,请参考图4A,图4A是本申请另一个示意性的实施例提供的数据库同步方法的实施环境示意图,如图4A所示,主机40中包括数据库41、binlog服务器42以及线程转储(英文名:Thread Dump)43,备机44中包括数据库45,该实施环境中还包括冷备系统46。

主机40中的数据库41,还包括网络接口411、引擎接口412以及数据库引擎413,其中,网络接口411用于接收网络请求,如:与数据库41对应的客户端进行连接。

引擎接口412用于与不同的引擎进行对接,如:与数据库引擎413进行对接。

数据库引擎413用于存储、处理和保护数据库中的数据,可选地,该数据库引擎413可以是InnoDB引擎。

值得注意的是,上述图4A中仅对数据库41中的部分进行示出,在实际操作中,数据库41中还包括如解析器、优化器、高速缓存区、缓存池等多个部分,在本实施例中未示出。

binlog服务器42中包括:接入层421、写内存模块422、异步模块423以及异常模块424;

接入层421用于接收数据库引擎413发送的数据库事务;写内存模块422用于根据接入层421接收到的数据库事务生成二进制日志数据,并将该二进制日志数据以写内存的方式写入临时内存文件系统,可选地,该写内存模块为tmpfs模块,可选地,写内存模块422将二进制日志数据写入临时内存文件系统后,通过线程转储43将二进制日志数据同步至备机44;写内存模块422将二进制日志数据以写内存的方式写入临时内存文件系统后,将写好的二进制日志数据发送至异步模块423,异步模块423用于将二进制日志数据发送至冷备系统46,可选地,异步模块423在有空余线程时,将二进制日志数据以异步消息的形式通过线程转储43发送至冷备系统46;异常模块424用于当备机44接收到的主机40发送的二进制日志数据的事务标识不连续,且冷备系统46中也没有备机44缺失的二进制日志数据时,从本地获取重做日志文件中与缺失的二进制日志数据对应的重做日志数据,并将该重做日志数据发送至备机。

线程转储43用于对二进制日志数据或重做日志数据进行转发。

备机44中包括数据库45,该数据库45即为需要与主机40中的数据库41保持一致的数据库。数据库45中包括网络接口451、视图触发器452、解析器453、优化器454、高速缓存和缓存池(英文:cache&buffer)455、引擎接口456、数据库引擎457以及存储引擎458;

网络接口451用于接收网络请求,如:该网络接口451用于接收线程转储43发送的二进制日志数据以及接收异常模块424通过线程转储43发送的重做日志数据;视图触发器452为存储在数据库45的视图、触发器等;解析器453用于解析接收到的数据库事务,可选地,该解析器453还用于将接收到的二进制日志数据解析为数据库事务;优化器454将数据库事务进行重组以及执行顺序的优化;高速缓存和缓存池455用于存储数据库在执行数据库事务后的结果集;引擎接口456用于与不同的引擎进行对接,如:与数据库引擎457进行对接;数据库引擎457用于存储、处理和保护数据库中的数据,可选地,该数据库引擎457可以是InnoDB引擎;存储引擎458用于数据归档。

值得注意的是,上述图4A中仅对数据库45中的部分模块进行示出,在实际操作中,数据库45中还包括未示出的多个模块。

冷备系统46用于对数据库41以及binlog服务器42写入临时内存文件系统的二进制日志数据进行存储。

结合图4A所述的实施环境,图5是本申请另一个示例性的实施例提供的数据库同步方法流程图,以该数据库同步方法应用在如图4A所示的binlog服务器42中为例,该数据库同步方法包括:

步骤501,获取数据库事务。

可选地,结合图4A,binlog服务器42通过接入层421从数据库引擎413获取数据库事务,或,数据库引擎413通过预设的binlog服务器的地址,将数据库事务发送至接入层421。

步骤502,根据数据库事务生成二进制日志数据。

可选地,binlog服务器根据该数据库事务,生成以二进制形式进行存储的二进制日志数据。

步骤503,将二进制日志数据写入临时内存文件系统。

该临时内存文件系统是通过写内存的方式进行写入的文件系统。

可选地,binlog服务器42通过写内存模块422将二进制日志数据写入临时内存文件系统。

通常,以写内存的方式进行写入,比以写文件的方式进行写入的速率要高。

步骤504,将临时内存文件系统中的二进制日志数据通过异步消息发送至冷备系统。

该冷备系统用于每隔预设时长对数据库和二进制日志数据进行冷备份。

冷备份是指在关闭数据库并且数据库不能更新的状况下进行的备份。

可选地,写内存模块422将二进制日志数据写入临时内存文件系统后,将二进制日志数据发送至异步模块423,该异步模块423用于通过异步消息将二进制日志数据发送至冷备系统46,可选地,该异步模块423首先将二进制日志数据发送至线程转储43,并通过该线程转储43将二进制日志数据发送至冷备系统46。

步骤505,将存储在临时内存文件系统中的二进制日志数据同步至备机。

该备机用于根据二进制日志数据对数据库进行同步,即对主机的数据库和备机的数据库进行同步。

可选地,binlog服务器将二进制日志数据写入临时内存文件系统后,将临时内存文件系统中的二进制日志数据同步至备机。

示意性的,结合图4B,binlog服务器42将二进制日志数据发送至线程转储43,该线程转储将接收到的二进制日志数据发送至备机44中的数据库45的网络接口451,然后备机44在数据库45中将二进制日志数据写入中继日志(英文:relay log)4520中,SQL线程4530从中继日志4520中获取该二进制日志,并通过表格存储4540将二进制日志应用在数据库的表中。

步骤506,接收备机发送的异常信号。

该异常信号是备机在同步到的二进制日志数据的事务标识不连续时产生的,该异常信号包括备机缺失的二进制日志数据的事务标识。

可选地,备机同步到的二进制日志数据包括事务标识,事务标识通常是连续的,以“xid=0001”的形式进行表示,如:备机同步到的二进制日志数据的事务标识依次为:xid=0001,xid=0010,xid=0011,xid=0100,则该四个二进制日志数据为4个连续的二进制日志数据。当备机同步到的二进制日志数据的事务标识不连续,即同步到的二进制日志数据有缺失时,则备机会向主机发送异常信号,如:备机同步到的二进制日志数据的事务标识依次为:xid=0001,xid=0010,xid=0101,xid=0110,则该四个二进制日志数据中的第二个和第三个中间缺失了部分二进制日志数据。

可选地,备机向主机发送的异常信号中包括备机缺失的二进制日志数据的事务标识,如:上述备机同步到二进制日志数据的事务标识依次为:xid=0001,xid=0010,xid=0101,xid=0110,备机通过对事务标识进行判断,得到缺失的事务标识为xid=0011,xid=0100,则备机向主机发送的异常信号中包括“xid=0011,xid=0100”。

步骤507,根据异常信号中的事务标识,从冷备系统获取备机缺失的二进制日志数据。

可选地,由于二进制日志数据的事务标识对于整个数据库而言是唯一的,即该事务标识可以在数据库中唯一标识该数据库事务以及对应的二进制日志数据,可选地,主机中的数据库与备机中对应的数据库中的同一条数据库事务的事务标识是相同的,冷备系统中存储的二进制日志数据也包括该事务标识,故binlog服务器接收到异常信号后,根据异常信号中的事务标识,从冷备系统中获取备机缺失的二进制日志数据。

步骤508,将备机缺失的二进制日志数据发送至备机。

可选地,主机通过线程转储从冷备系统获取到该备机缺失的二进制日志数据后,将该二进制日志数据发送至备机,可选地,主机将该二进制日志数据发送至备机的网络接口。

步骤509,接收备机发送的异常信号。

可选地,该异常信号在步骤506中已作解释,此处不再赘述。

步骤510,当冷备系统中没有备机缺失的二进制日志数据时,获取重做日志文件中与异常信号中的事务标识对应的重做日志数据。

可选地,主机的数据库中还存储有重做日志文件(英文:redo log),该重做日志文件中存储有根据最新执行的数据库事务生成的重做日志数据,该重做日志数据中包括数据库事务对应的事务标识。

当冷备系统中也没有备机缺失的二进制日志数据,即在冷备系统中查找不到备机缺失的事务标识时,binlog服务器从重做日志文件中获取与备机缺失的事务标识对应的重做日志数据。

步骤511,将重做日志数据发送至备机。

可选地,binlog服务器从重做日志文件中获取重做日志数据后,将该重做团日志数据通过线程转储发送至备机。

可选地,binlog服务器中的异常模块从重做日志文件中获取重做日志数据后,将该重做团日志数据通过线程转储发送至备机。

值得注意的是,上述步骤505可以执行在步骤506以及步骤509之前,在同步过程中备机发现异常时,暂停步骤505并执行步骤506或者步骤509,其中,步骤506至步骤508以及步骤509至步骤511为两个并列的方案。

综上所述,本实施例提供的数据库同步方法,通过将二进制日志数据以写内存的方式写入临时内存文件系统,避免了由于二进制日志文件的文件写入速度较慢,主机将二进制日志数据写入二进制日志文件的效率比较低的问题,提高了二进制日志数据的写入效率,以及提高了从临时内存文件系统读取二进制日志数据的读取效率,从而提高了数据库的写入以及读取效率。

本实施例提供的数据库同步方法,通过将二进制日志数据以及数据库在冷备系统中进行冷备份,使得主机中的数据库的回档时间更长,即用户可以将更久之前的数据库进行回档,在一个典型的实施例中,该数据库的回档时间由1天提升至了1个月甚至更长。

本实施例提供的数据库同步方法,通过将二进制日志数据同步至冷备系统,当备机接收到的二进制日志数据的事务标识不连续时,从备机中获取事务标识对应的二进制日志数据,确保了备机接收到的二进制日志数据的完整性。

本实施例提供的数据库同步方法,当备机中缺失的二进制日志数据冷备中也未进行保存时,通过从重做日志文件中获取事务标识对应的重做日志数据,进一步确保了备机接收到的二进制日志数据的完整性。

图6是本申请一个示例性的实施例提供的数据库同步装置的结构框图,如图6所示,该数据库同步装置包括:获取模块61、生成模块62、写入模块63以及同步模块64;

获取模块61,用于获取数据库事务;

生成模块62,用于根据数据库事务生成二进制日志数据;

写入模块63,用于将二进制日志数据写入临时内存文件系统,临时内存文件系统是通过写内存的方式进行写入的文件系统;

同步模块64,用于将存储在临时内存文件系统中的二进制日志数据同步至备机,备机用于根据二进制日志数据对数据库进行同步。

在一个可选的实施例中,获取模块61,还用于接收数据库引擎发送的数据库事务,数据库事务是数据库引擎按照预先配置的本地二进制服务器地址发送的。

在一个可选的实施例中,写入模块63,还包括:

读取单元,用于读取数据库配置参数,数据库配置参数包括:文件命名方式、文件切割方式、文件循环写入方式以及二进制日志数据的格式中的至少一种;

写入单元,用于根据数据库配置参数,将二进制日志数据写入临时内存文件系统。

在一个可选的实施例中,该装置,还包括:

发送模块,用于将临时内存文件系统中的二进制日志数据通过异步消息发送至冷备系统,冷备系统用于每隔预设时长对数据库和二进制日志数据进行冷备份。

在一个可选的实施例中,该装置,还包括:

第一接收模块,用于接收备机发送的异常信号,异常信号是备机在同步到的二进制日志数据的事务标识不连续时产生的,异常信号包括备机缺失的二进制日志数据的事务标识;

获取模块61,还用于根据异常信号中的事务标识,从冷备系统获取备机缺失的二进制日志数据;

发送模块,还用于将备机缺失的二进制日志数据发送至备机。

在一个可选的实施例中,该装置,还包括:

第二接收模块,用于接收备机发送的异常信号,异常信号是备机在同步到的二进制日志数据的事务标识不连续时产生的,异常信号包括备机缺失的二进制日志数据的事务标识;

获取模块61,还用于当冷备系统中没有备机缺失的二进制日志数据时,获取重做日志文件中与异常信号中的事务标识对应的重做日志数据;

发送模块,还用于将重做日志数据发送至备机。

综上所述,本实施例提供的数据库同步装置,通过将二进制日志数据以写内存的方式写入临时内存文件系统,避免了由于二进制日志文件的文件写入速度较慢,主机将二进制日志数据写入二进制日志文件的效率比较低的问题,提高了二进制日志数据的写入效率,以及提高了从临时内存文件系统读取二进制日志数据的读取效率,从而提高了数据库的写入以及读取效率。

图7示出了本发明另一个示例性实施例提供的数据库同步方法的实施环境示意图。如图7所示,该实施环境包括硬件资源71、虚拟化层72以及虚拟资源73,其中,硬件资源71中包括计算硬件711、存储硬件712以及网络硬件713。

计算硬件711可以是处理器,或者多个级联的处理器阵列,该计算硬件711用于对存储硬件712中存储的指令、程序或者代码集进行加载以及处理。

存储硬件712用于提供存储容量。可选地,该存储硬件712是一个或者多个存储器,如:磁盘阵列。

网络硬件713时执行交换功能的交换机、路由器和/或任意其他网络设备,不同网络硬件713之间可以通过有线网或者无线链路互联。

虚拟化层72用于通过硬件资源71提供虚拟资源73。虚拟资源73中包括主实例731和备实例732,可选地,该主实例731和备实例732皆为虚拟机,主实例731中包括数据库以及binlog服务器700,binlog服务器700获取数据库接收到的数据库事务,并将根据该数据库事务生成的二进制日志数据写入临时内存文件系统,以及将该二进制日志数据同步至备实例732。

备实例732包括数据库,备实例732对接收到的二进制日志数据进行解析,得到数据库事务,并在备实例上执行该数据库事务,以保证主实例731的数据库与备实例732的数据库保持一致。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入计算机设备中的计算机可读存储介质。该计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如图1至图5任一所述的数据库同步方法。

本申请实施例还提供一种计算机设备,该计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如图1至图5任一所述的数据库同步方法。

本申请实施例还提供一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如图1至图5任一所述的数据库同步方法。

可选地,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、固态硬盘(SSD,Solid State Drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance Random Access Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1