数据复制的方法及装置制造方法

文档序号:7774181阅读:163来源:国知局
数据复制的方法及装置制造方法
【专利摘要】本发明公开了一种数据复制的方法及装置,属于数据处理领域。方法包括:从本地复制组的一至多台服务器中获取记录有更新数据的日志事件;将获取到的日志事件存放到本地复制组的中继日志中;更新本地复制组的中继日志的版本号,并获取其他复制组的中继日志及其他复制组的中继日志的版本号,其他复制组的中继日志中存放有从其他复制组的一至多台服务器中获取的记录有更新数据的日志事件;根据每个中继日志的版本号从本地复制组的中继日志及其他复制组的中继日志中选择中继日志,并根据选择的中继日志更新本地复制组的一至多台服务器的数据。本发明可节省日志事件的传输次数及网络流量,实现数据和服务的高可用性和高容错性。
【专利说明】数据复制的方法及装置
【技术领域】
[0001]本发明涉及数据处理领域,特别涉及一种数据复制的方法及装置。
【背景技术】
[0002]随着互联网技术的不断发展,互联网业务的种类和数量也在不断地增长。为了对互联网业务进行有效地管理,实现互联网业务的服务器一般托管在运营商的IDCdnternetData Center,互联网数据中心)机房中。然而,目前的IDC机房之间的网络连通性不太好,时常会出现大量丢包的问题。为了解决该问题,通过采用将一台服务器的数据复制到其他服务器的方式,从而在该服务器故障后可切换其他服务器继续工作。其中,用于复制数据的服务器称为从服务器,被复制数据的服务器称为主服务器。
[0003]现有技术在实现数据复制时,通常采用MySQL数据库的主主复制技术。主主复制是指参与数据复制的服务器既可以作为主服务器,也可以作为从服务器。在MySQL数据库的主主复制技术中,包含两台服务器,每台服务器既可以作为主服务器,又可以作为从服务器。无论哪台服务器作为主服务器,哪台服务器作为从服务器,从服务器将主服务器的数据复制到从服务器的过程均分为三步:第一步,主服务器将更新数据记录到主服务器的日志事件中。第二步,从服务器将主服务器的日志事件拷贝到从服务器的中继日志(Relay Log)中。第三步,从服务器重放从服务器的中继日志中的事件,根据其中的更新数据更新从服务器的数据,并将更新数据记录到从服务器生成的新的日志事件中,由此完成数据复制过程。
[0004]在实现本发明的过程中,发明人发现上述现有技术至少存在以下缺点:
[0005]现有技术所提供的MySQL数据库的主主复制技术中,当第一台服务器作为主服务器,第二台服务器作为从服务器时,第一台服务器产生的日志事件会被传输到第二台服务器,并由第二台服务器执行数据复制操作后,生成新的日志事件;当第二台服务器作为主服务器,第一台服务器作为从服务器时,第二台服务器生成的新的日志事件又会被传输到第一台服务器,由第一台服务器执行数据复制过程。然而,这两台服务器的日志事件中记录的是相同的更新数据,导致记录相同更新数据的日志事件被多次传输,造成了双倍的网络流量。另外,现有技术提供的MySQL的主主复制技术仅在两台服务器之间实现数据复制,在面对互联网海量数据业务的情况下显得无能为力。

【发明内容】

[0006]为了解决现有技术的问题,本发明实施例提供了一种数据复制的方法及装置。所述技术方案如下:
[0007]—方面,提供了一种数据复制的方法,所述方法包括:
[0008]从本地复制组的一至多台服务器中获取记录有更新数据的日志事件;
[0009]将获取到的日志事件存放到所述本地复制组的中继日志中;
[0010]更新所述本地复制组的中继日志的版本号,并获取其他复制组的中继日志及所述其他复制组的中继日志的版本号,所述其他复制组的中继日志中存放有从所述其他复制组的一至多台服务器中获取的记录有更新数据的日志事件;
[0011]根据每个中继日志的版本号从所述本地复制组的中继日志及所述其他复制组的中继日志中选择中继日志,并根据选择的中继日志更新所述本地复制组的一至多台服务器的数据。
[0012]优选地,所述更新所述本地复制组的中继日志的版本号,包括:
[0013]根据所述本地复制组的中继日志的更新时间戳及所述本地复制组的中继日志所在节点的节点编号更新所述本地复制组的中继日志的版本号。
[0014]优选地,所述获取其他复制组的中继日志之后,还包括:
[0015]根据预设的第一过滤规则对获取到的其他复制组的中继日志进行过滤;
[0016]所述根据每个中继日志的版本号从所述本地复制组的中继日志及所述其他复制组的中继日志中选择中继日志,包括:
[0017]根据每个中继日志的版本号从所述本地复制组的中继日志及过滤后的其他复制组的中继日志中选择中继日志。
[0018]优选地,所述从本地复制组的一至多台服务器中获取记录有更新数据的日志事件之后,还包括:
[0019]记录从所述本地复制组的一至多台服务器中获取日志事件的状态信息,所述状态信息至少包括所述本地复制组的一至多台服务器的节点标识、日志文件名、日志文件偏移量和当前状态信息。
[0020]优选地,所述根据选择的中继日志更新所述本地复制组的一至多台服务器的数据,包括:
[0021 ] 读取选择的中继日志中的日志事件;
[0022]对读取的日志事件进行回放,得到日志事件记录的更新数据;
[0023]将得到的更新数据写入所述本地复制组的一至多台服务器中。
[0024]优选地,所述将读取的日志事件所记录的更新数据写入所述本地复制组的一至多台服务器中之后,还包括:
[0025]记录将得到的更新数据写入所述本地复制组的一至多台服务器中的状态信息,所述状态信息至少包括具有所述更新数据的复制组标识、所述更新数据写入的服务器的节点标识、所述更新数据所在中继日志的文件名、日志事件偏移量和当前状态信息。
[0026]另一方面,还提供了一种数据复制的装置,所述装置包括:
[0027]第一获取模块,用于从本地复制组的一至多台服务器中获取记录有更新数据的日志事件;
[0028]存放模块,用于将获取到的日志事件存放到所述本地复制组的中继日志中;
[0029]第一更新模块,用于更新所述本地复制组的中继日志的版本号;
[0030]第二获取模块,用于获取其他复制组的中继日志及所述其他复制组的中继日志的版本号,所述其他复制组的中继日志中存放有从所述其他复制组的一至多台服务器中获取的记录有更新数据的日志事件;
[0031]选择模块,用于根据每个中继日志的版本号从所述本地复制组的中继日志及所述其他复制组的中继日志中选择中继日志;
[0032]第二更新模块,用于根据选择的中继日志更新所述本地复制组的一至多台服务器的数据。
[0033]优选地,所述第一更新模块,用于根据所述本地复制组的中继日志的更新时间戳及所述本地复制组的中继日志所在节点的节点编号更新所述本地复制组的中继日志的版本号。
[0034]优选地,所述装置,还包括:
[0035]过滤模块,用于根据预设的第一过滤规则对获取到的其他复制组的中继日志进行过滤;
[0036]所述选择模块,用于根据每个中继日志的版本号从所述本地复制组的中继日志及过滤后的其他复制组的中继日志中选择中继日志。
[0037]优选地,所述装置,还包括:
[0038]第一记录模块,用于记录从所述本地复制组的一至多台服务器中获取日志事件的状态信息,所述状态信息至少包括所述本地复制组的一至多台服务器的节点标识、日志文件名、日志文件偏移量和当前状态信息。
[0039]优选地,所述第二更新模块,用于读取选择的中继日志中的日志事件,对读取的日志事件进行回放,得到日志事件记录的更新数据;将得到的更新数据写入所述本地复制组的一至多台服务器中。
[0040]优选地,所述装置,还包括:
[0041]第二记录模块,用于记录将得到的更新数据写入所述本地复制组的一至多台服务器中的状态信息,所述状态信息至少包括具有所述更新数据的复制组标识、所述更新数据写入的服务器的节点标识、所述更新数据所在中继日志的文件名、日志事件偏移量和当前状态信息。
[0042]本发明实施例提供的技术方案带来的有益效果是:
[0043]由于每个复制组的中继日志中存放有从每个复制组的一至多台服务器中获取的记录有更新数据的日志事件,因而通过获取其他复制组的中继日志及其他复制组的中继日志的版本号,并根据每个中继日志的版本号从本地复制组的中继日志及其他复制组的中继日志中选择中继日志后,根据选择的中继日志更新本地复制组的一至多台服务器的数据,节省了日志事件的传输次数及网络流量。另外,由于本发明实施例提供的方法可实现多个服务器之间的数据复制,因而在任一服务器发生故障时,其他服务器能够继续提供服务,从而在面对互联网海量数据业务的情况下可以实现数据和服务的高可用性和高容错性。
【专利附图】

【附图说明】
[0044]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0045]图1是本发明实施例提供的一种数据复制的系统结构示意图;
[0046]图2是本发明实施例一提供的一种数据复制的方法流程图;
[0047]图3是本发明实施例二提供的一种数据复制的方法流程图;
[0048]图4是本发明实施例三提供的第一种数据复制的装置结构示意图;[0049]图5是本发明实施例三提供的第二种数据复制的装置结构示意图;
[0050]图6是本发明实施例三提供的第三种数据复制的装置结构示意图;
[0051]图7是本发明实施例三提供的第四种数据复制的装置结构示意图;
[0052]图8是本发明实施例四提供的一种数据复制的系统结构示意图。
【具体实施方式】
[0053]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进ー步地详细描述。
[0054]本发明实施例以图1所示的方法实施环境示意图为例,提供了一种数据复制的方法。其中,图1所示的实施环境中包括三个复制组,每个复制组包括一个同步节点和一个服务器群,同步节点与服务器群相连,一个服务器群包括三台服务器,每台服务器均具有MySQL数据库。同步节点中的HA(High Availability,高可用性)监管器对外提供I和2两个接ロ,I和两个2接ロ分别可以提供telnet和http(Hyper Text Transfer Protocol,超文本传输协议)两种服务器给系统管理员使用,系统管理员通过这两个接ロ可以实施在线维护和管理监控功能,基本的在线维护功能包括但不限于:添加新的复制组、给ー个复制组中填加新的服务器、调节同步日志的位置信息和调节复制组的同步日志位置等等,基本的管理监控功能包括但不限于获取当前的同步状态信息,如:查询复制组中当前的日志位置信息等。通过这种监控接ロ,系统管理员还可以定时获取相关信息,实现相应的预警功能。
[0055]此外,如图1所示的同步节点的结构中,元数据用于存储同步节点的配置数据和状态数据。其中,配置数据主要描述服务器群中的各台服务器之间的复制关系以及一致性模型等内容,状态数据用于描述数据的读位置和写位置。关于复制关系、一致性模型及读位置和写位置等内容将在后续对应的步骤中进行详细地描述,此处暂不赘述。具体实施时,该同步节点的配置数据和状态数据可通过两个文件来存储,例如,以Master, info和relay-log.1nfo这两个文件来存储配置数据和状态数据。另外,为了使同步节点能够实现多对多的复制和更加复杂的过滤、一致性模型配置,该元数据可以采用一台単独的服务器来存储。优选地,为了避免采用一台単独的服务器来存储元数据时发生单点故障,还可以再采用另一台服务器复制元数据,以实现将元数据进行备份,本实施例不对存储元数据的方式进行限定。
[0056]需要说明的是,图1仅以三个复制组,每个复制组包括一个同步节点和一个服务器群,每个服务器群包括三台服务器为例,对实施环境进行的举例说明。具体实施吋,还可以包括两个复制组或四个复制组,每个复制组可以包括两个同步节点和两个服务器群,每个服务器群包括四个或五个服务器等,本实施例不对实施环境中复制组的个数、每个复制组包括的同步节点和服务器群的个数、每个服务器群中包括的服务器的个数进行限定。
[0057]接下来,结合上述内容以及图1所示的实施环境对数据复制的方法进行详细的解释说明,详见如下实施例一至实施例ニ的内容:
[0058]实施例一
[0059]结合上述内容以及图1所示的实施环境示意图,为了在节省日志事件的传输次数及网络流量的条件下,实现在面对互联网海量数据业务的情况下的数据和服务的高可用性和高容错性,本实施例提供了一种数据复制的方法。參见图2,本实施例提供的方法流程具体如下:
[0060]201:从本地复制组的一至多台服务器中获取记录有更新数据的日志事件;
[0061]作为ー种优选实施例,从本地复制组的一至多台服务器中获取记录有更新数据的日志事件之后,还包括:
[0062]记录从本地复制组的一至多台服务器中获取日志事件的状态信息,状态信息至少包括本地复制组的一至多台服务器的节点标识、日志文件名、日志文件偏移量和当前状态信息。
[0063]202:将获取到的日志事件存放到本地复制组的中继日志中;
[0064]203:更新本地复制组的中继日志的版本号,并获取其他复制组的中继日志及其他复制组的中继日志的版本号,其他复制组的中继日志中存放有从该其他复制组的一至多台服务器中获取的记录有更新数据的日志事件;
[0065]其中,更新本地复制组的中继日志的版本号,包括但不限于:
[0066]根据本地复制组的中继日志的更新时间戳及本地复制组的中继日志所在节点的节点编号更新本地复制组的中继日志的版本号。
[0067]204:根据每个中继日志的版本号从本地复制组的中继日志及其他复制组的中继日志中选择中继日志,井根据选择的中继日志更新本地复制组的一至多台服务器的数据。
[0068]作为ー种优选实施例,获取其他复制组的中继日志之后,还包括:
[0069]根据预设的第一过滤规则对获取到的其他复制组的中继日志进行过滤;
[0070]根据每个中继日志的版本号从本地复制组的中继日志及其他复制组的中继日志中选择中继日志,包括:
[0071]根据每个中继日志的版本号从本地复制组的中继日志及过滤后的其他复制组的中继日志中选择中继日志。
[0072]作为ー种优选实施例,根据选择的中继日志更新本地复制组的一至多台服务器的数据,包括但不限干:
[0073]读取选择的中继日志中的日志事件;
[0074]对读取的日志事件进行回放,得到日志事件记录的更新数据;
[0075]将得到的更新数据写入所述本地复制组的一至多台服务器中。
[0076]作为ー种优选实施例,将读取的日志事件所记录的更新数据写入本地复制组的一至多台服务器中之后,还包括:
[0077]记录将得到的更新数据写入本地复制组的一至多台服务器中的状态信息,状态信息至少包括具有更新数据的复制组标识、更新数据写入的服务器的节点标识、更新数据所在中继日志的文件名、日志事件偏移量和当前状态信息。
[0078]本实施例提供的方法中,由于每个复制组的中继日志中存放有从每个复制组的一至多台服务器中获取的记录有更新数据的日志事件,因而通过获取其他复制组的中继日志及其他复制组的中继日志的版本号,并根据每个中继日志的版本号从本地复制组的中继日志及其他复制组的中继日志中选择中继日志后,根据选择的中继日志更新本地复制组的一至多台服务器的数据,节省了日志事件的传输次数及网络流量。另外,由于本发明实施例提供的方法可实现多个服务器之间的数据复制,因而在任一服务器发生故障时,其他服务器能够继续提供服务,从而在面对互联网海量数据业务的情况下实现数据和服务的高可用性和高容错性。
[0079]实施例二
[0080]本实施例提供了一种数据复制的方法,为了便于说明,本实施例结合上述实施例一的内容,以如图1所示的实施环境为例,对本实施例提供的方法进行详细地说明。參见图3,本实施例提供的方法流程具体如下:
[0081]301:从本地复制组的一至多台服务器中获取记录有更新数据的日志事件;
[0082]针对该步骤,本地复制组为本实施例提供的方法的执行主体所在的复制组。以图1所示的实施环境中的同步节点I执行数据复制的方法为例,本地复制组为同步节点I所在的复制组。每个复制组中的一至多台服务器之间存在复制关系,该复制关系可存储在同步节点的元数据中,且可以通过ー对一的表达方式进行表示。例如,如果存在服务器A到服务器B的复制关系,则A->B的复制即表示服务器A作为主服务器,服务器B作为从服务器,数据从服务器A复制到服务器B ;B->A的复制即表示服务器B作为主服务器,服务器A作为从服务器,数据从服务器B复制到服务器A。如果描述服务器A与服务器B之间的主主复制关系,则需要在元数据中增加两条复制关系,即A->B的复制和B->A的复制。优选地,为了简化复制关系,对于复制组内任意两台服务器之间均为主主复制关系的情况,本实施例定义了复制组中的服务器群概念,从而简化了多台服务器之间的关系描述。例如,复制组中的服务器群表示方式可以为{A,B,C},表示服务器A、B和C中任意两台服务器之间存在主主复制关系。
[0083]当然,除采用上述方式表示复制组内的各台服务器的复制关系外,还可以采用其他方式对复制组内的各台服务器的复制关系进行表示,本实施例对此不作具体限定。该步骤在具体实施时,可由同步节点的I/o线程池中的I/O线程从本地复制组的一至多台服务器获取记录有更新数据的日志事件。其中,I/o线程池中的每个线程可以连接到本地复制组中的一台服务器,从对应的服务器获取日志事件。为了保证信息安全,每台服务器上可以配置一个对应的包含用户名和密码的账户,以使每个I/o线程可以使用对应的用户名和密码来连接到对应的服务器。
[0084]进ー步地,I/O线程通过对应的用户名和密码与服务器进行连接吋,由于用户名和密码将会被保存在元数据中,为了安全起见,可以在每台服务器中创建ー个有权限的用户账户专门用来做数据复制,从而使I/o线程在被授予权限后再访问该服务器。其中,本实施例不对创建该有权限的用户账户的方式进行限定。例如,可以创建一个能够在任何以duowan.com结尾的主机都能够访问的用户账户,仓ll建用户账户的脚本如下所示:
【权利要求】
1.一种数据复制的方法,其特征在于,所述方法包括:从本地复制组的一至多台服务器中获取记录有更新数据的日志事件;将获取到的日志事件存放到所述本地复制组的中继日志中;更新所述本地复制组的中继日志的版本号,并获取其他复制组的中继日志及所述其他复制组的中继日志的版本号,所述其他复制组的中继日志中存放有从所述其他复制组的一至多台服务器中获取的记录有更新数据的日志事件;根据每个中继日志的版本号从所述本地复制组的中继日志及所述其他复制组的中继日志中选择中继日志,并根据选择的中继日志更新所述本地复制组的一至多台服务器的数据。
2.根据权利要求1所述的方法,其特征在于,所述更新所述本地复制组的中继日志的版本号,包括:根据所述本地复制组的中继日志的更新时间戳及所述本地复制组的中继日志所在节点的节点编号更新所述本地复制组的中继日志的版本号。
3.根据权利要求1所述的方法,其特征在于,所述获取其他复制组的中继日志之后,还包括:根据预设的第一过滤规则对获取到的其他复制组的中继日志进行过滤;所述根据每个中继日志的版本号从所述本地复制组的中继日志及所述其他复制组的中继日志中选择中继日志,包括:根据每个中继日志的版本号从`所述本地复制组的中继日志及过滤后的其他复制组的中继日志中选择中继日志。
4.根据权利要求1至3中任一权利要求所述的方法,其特征在于,所述从本地复制组的一至多台服务器中获取记录有更新数据的日志事件之后,还包括:记录从所述本地复制组的一至多台服务器中获取日志事件的状态信息,所述状态信息至少包括所述本地复制组的一至多台服务器的节点标识、日志文件名、日志文件偏移量和当前状态信息。
5.根据权利要求1至3中任一权利要求所述的方法,其特征在于,所述根据选择的中继日志更新所述本地复制组的一至多台服务器的数据,包括:读取选择的中继日志中的日志事件;对读取的日志事件进行回放,得到日志事件记录的更新数据;将得到的更新数据写入所述本地复制组的一至多台服务器中。
6.根据权利要求5所述的方法,其特征在于,所述将得到的更新数据写入所述本地复制组的一至多台服务器中之后,还包括:记录将得到的更新数据写入所述本地复制组的一至多台服务器中的状态信息,所述状态信息至少包括具有所述更新数据的复制组标识、所述更新数据写入的服务器的节点标识、所述更新数据所在中继日志的文件名、日志事件偏移量和当前状态信息。
7.一种数据复制的装置,其特征在于,所述装置包括:第一获取模块,用于从本地复制组的一至多台服务器中获取记录有更新数据的日志事件;存放模块,用于将获取到的日志事件存放到所述本地复制组的中继日志中;第一更新模块,用于更新所述本地复制组的中继日志的版本号;第二获取模块,用于获取其他复制组的中继日志及所述其他复制组的中继日志的版本号,所述其他复制组的中继日志中存放有从所述其他复制组的一至多台服务器中获取的记录有更新数据的日志事件;选择模块,用于根据每个中继日志的版本号从所述本地复制组的中继日志及所述其他复制组的中继日志中选择中继日志;第二更新模块,用于根据选择的中继日志更新所述本地复制组的一至多台服务器的数据。
8.根据权利要求7所述的装置,其特征在于,所述第一更新模块,用于根据所述本地复制组的中继日志的更新时间戳及所述本地复制组的中继日志所在节点的节点编号更新所述本地复制组的中继日志的版本号。
9.根据权利要求7所述的装置,其特征在于,所述装置,还包括:过滤模块,用于根据预设的第一过滤规则对获取到的其他复制组的中继日志进行过滤;所述选择模块,用于根据每个中继日志的版本号从所述本地复制组的中继日志及过滤后的其他复制组的中继日志中选择中继日志。
10.根据权利要求7至9中任一权利要求所述的装置,其特征在于,所述装置,还包括:第一记录模块,用于记录从所述本地复制组的一至多台服务器中获取日志事件的状态信息,所述状态信息至少包括所述本地复制组的一至多台服务器的节点标识、日志文件名、日志文件偏移量和当前状态信息。
11.根据权利要求7至9中任一权利要求所述的装置,其特征在于,所述第二更新模块,用于读取选择的中继日志中的日志事件,对读取的日志事件进行回放,得到日志事件记录的更新数据;将得到的更新数据写入所述本地复制组的一至多台服务器中。
12.根据权利要求11所述的装置,其特征在于,所述装置,还包括:第二记录模块,用于记录将得到的更新数据写入所述本地复制组的一至多台服务器中的状态信息,所述状态信息至少包括具有所述更新数据的复制组标识、所述更新数据写入的服务器的节点标识、所述更新数据所在中继日志的文件名、日志事件偏移量和当前状态信息。
【文档编号】H04L12/24GK103560906SQ201310499683
【公开日】2014年2月5日 申请日期:2013年10月22日 优先权日:2013年10月22日
【发明者】喻先兵 申请人:珠海多玩信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1