本说明书一个或多个实施例涉及数据库,尤其涉及一种基于快速同步机制的数据管理方法及装置。
背景技术:
1、在互联网和信息化高速发展的今天,数据的产生呈爆炸式增长,因此对数据库及其管理的要求越来越高。目前的分布式数据库往往通过设置主、备库的方式来面对临时故障,即主库故障时可以由备库切换为主库继续提供服务,从而避免了数据库故障时服务停止而影响服务质量、效率。
2、一般来说,分布式数据库的主库对外提供写入服务,备库用于备份数据。相关技术中,在包含主库、备库的分布式数据库中写入数据的效率较低,导致数据库的服务质量较差。
技术实现思路
1、有鉴于此,本说明书一个或多个实施例提供一种基于快速同步机制的数据管理方法及装置。
2、为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
3、根据本说明书一个或多个实施例的第一方面,提出了一种基于快速同步机制的数据管理方法,所述方法应用于数据系统中的主库,所述数据系统还包括备库,所述方法包括:
4、响应于接收到客户端发送的数据写入请求,在所述主库的leader副本中写入所述数据写入请求指示的目标数据,并生成数据写入日志;
5、将所述数据写入日志分别发送至所述主库的其他副本和所述备库,以使所述主库的其他副本和所述备库分别回放所述数据写入日志,以写入所述目标数据。
6、在本说明书的一个实施例中,所述将所述数据写入日志分别发送至所述主库的其他副本和所述备库,以使所述主库的其他副本和所述备库分别回放所述数据写入日志,以写入所述目标数据,包括:
7、将所述数据写入日志分别发送至所述主库的其他副本和所述备库的多个副本,以使所述主库的其他副本和所述备库的多个副本分别回放所述数据写入日志,以写入所述目标数据。
8、在本说明书的一个实施例中,所述方法还包括:
9、响应于在预设时长内接收到所述主库的其他副本中第一预设数量的副本返回的写入确认消息,确定所述目标数据在所述主库内写入成功;
10、响应于在预设时长内接收到所述备库的多个副本中第二预设数量的副本返回的写入确认消息,确定所述目标数据在所述备库内写入成功;
11、响应于所述目标数据在所述主库内写入成功,且所述目标数据在所述备库内写入成功,向所述客户端返回写入成功消息。
12、在本说明书的一个实施例中,所述方法还包括:
13、根据调整指令对所述第一预设数量和/或所述第二预设数量进行调整。
14、在本说明书的一个实施例中,所述方法还包括:
15、所述主库的至少一个副本向其他副本发送leader选举请求;
16、所述主库的每个副本向接收到的至少一个leader选举请求所属的副本中编号最大的副本返回leader响应消息;
17、所述主库的任一副本接收到leader响应消息的数量满足leader选举条件的数量或比例,确定该副本为leader副本。
18、根据本说明书一个或多个实施例的第二方面,提出了一种基于快速同步机制的数据管理方法,应用于数据系统中备库,所述数据系统还包括主库,所述方法包括:
19、接收所述主库的leader发送的数据写入日志,并回放所述数据写入日志,以将所述数据写入日志所指示的目标数据写入所述备库;
20、其中,所述数据写入日志由所述主库在所述主库的leader副本中写入客户端发送的数据写入请求指示的目标数据后生成,并发送至所述主库的其他副本和所述备库。
21、在本说明书的一个实施例中,所述接收所述主库的leader发送的数据写入日志,并回放所述数据写入日志,以将所述数据写入日志所指示的目标数据写入所述备库,包括:
22、所述备库的每个副本接收所述主库的leader发送的数据写入日志,并回放所述数据写入日志,以将所述数据写入日志所指示的目标数据写入副本;
23、其中,所述数据写入日志由所述主库在所述主库的leader副本中写入客户端发送的数据写入请求指示的目标数据后生成,并发送至所述主库的其他副本和所述备库的每个副本。
24、在本说明书的一个实施例中,所述方法还包括:
25、所述备库的每个副本在成功写入目标数据时向所述主库的leader副本返回写入确认消息,以使所述主库的leader副本响应于在预设时长内接收到所述备库的多个副本中第二预设数量的副本返回的写入确认消息,确定所述目标数据在所述备库内写入成功。
26、在本说明书的一个实施例中,所述方法还包括:
27、所述备库的至少一个副本向其他副本发送leader选举请求;
28、所述备库的每个副本向接收到的至少一个leader选举请求所属的副本中编号最大的副本返回leader响应消息;
29、所述备库的任一副本接收到leader响应消息的数量满足leader选举条件的数量或比例,确定该副本为leader副本。
30、根据本说明书一个或多个实施例的第三方面,提出了一种基于快速同步机制的数据管理装置,应用于数据系统中的主库,所述数据系统还包括备库,所述装置包括:
31、写入模块,用于响应于接收到客户端发送的数据写入请求,在所述主库的leader副本中写入所述数据写入请求指示的目标数据,并生成数据写入日志;
32、同步模块,用于将所述数据写入日志分别发送至所述主库的其他副本和所述备库,以使所述主库的其他副本和所述备库分别回放所述数据写入日志,以写入所述目标数据。
33、在本说明书的一个实施例中,所述同步模块,用于:
34、将所述数据写入日志分别发送至所述主库的其他副本和所述备库的多个副本,以使所述主库的其他副本和所述备库的多个副本分别回放所述数据写入日志,以写入所述目标数据。
35、在本说明书的一个实施例中,所述装置还包括响应模块,用于:
36、响应于在预设时长内接收到所述主库的其他副本中第一预设数量的副本返回的写入确认消息,确定所述目标数据在所述主库内写入成功;
37、响应于在预设时长内接收到所述备库的多个副本中第二预设数量的副本返回的写入确认消息,确定所述目标数据在所述备库内写入成功;
38、响应于所述目标数据在所述主库内写入成功,且所述目标数据在所述备库内写入成功,向所述客户端返回写入成功消息。
39、在本说明书的一个实施例中,所述装置还包括调整模块,用于:
40、根据调整指令对所述第一预设数量和/或所述第二预设数量进行调整。
41、在本说明书的一个实施例中,所述装置还包括主库选举模块,用于:
42、所述主库的至少一个副本向其他副本发送leader选举请求;
43、所述主库的每个副本向接收到的至少一个leader选举请求所属的副本中编号最大的副本返回leader响应消息;
44、所述主库的任一副本接收到leader响应消息的数量满足leader选举条件的数量或比例,确定该副本为leader副本。
45、根据本说明书一个或多个实施例的第三方面,提出了一种基于快速同步机制的数据管理装置,应用于数据系统中备库,所述数据系统还包括主库,所述装置包括:
46、接收模块,用于接收所述主库的leader发送的数据写入日志,并回放所述数据写入日志,以将所述数据写入日志所指示的目标数据写入所述备库;
47、其中,所述数据写入日志由所述主库在所述主库的leader副本中写入客户端发送的数据写入请求指示的目标数据后生成,并发送至所述主库的其他副本和所述备库。
48、在本说明书的一个实施例中,所述接收模块用于:
49、所述备库的每个副本接收所述主库的leader发送的数据写入日志,并回放所述数据写入日志,以将所述数据写入日志所指示的目标数据写入副本;
50、其中,所述数据写入日志由所述主库在所述主库的leader副本中写入客户端发送的数据写入请求指示的目标数据后生成,并发送至所述主库的其他副本和所述备库的每个副本。
51、在本说明书的一个实施例中,所述装置还包括返回模块,用于:
52、所述备库的每个副本在成功写入目标数据时向所述主库的leader副本返回写入确认消息,以使所述主库的leader副本响应于在预设时长内接收到所述备库的多个副本中第二预设数量的副本返回的写入确认消息,确定所述目标数据在所述备库内写入成功。
53、在本说明书的一个实施例中,所述装置还包括备库选举模块,用于:
54、所述备库的至少一个副本向其他副本发送leader选举请求;
55、所述备库的每个副本向接收到的至少一个leader选举请求所属的副本中编号最大的副本返回leader响应消息;
56、所述备库的任一副本接收到leader响应消息的数量满足leader选举条件的数量或比例,确定该副本为leader副本。
57、根据本说明书一个或多个实施例的第五方面,提出了一种计算机程序产品,包括计算机程序/指令,该计算程序/指令被处理器执行时实现第一方面或第二方面所述方法的步骤。
58、根据本说明书一个或多个实施例的第六方面,提出了一种电子设备,包括:
59、处理器;
60、用于存储处理器可执行指令的存储器;
61、其中,所述处理器通过运行所述可执行指令以实现如第一方面或第二方面所述的方法。
62、根据本说明书一个或多个实施例的第七方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面或第二方面所述方法的步骤。
63、本说明书的实施例提供的技术方案可以包括以下有益效果:
64、本说明书实施例所提供的数据管理方法,数据系统的主库可以接收客户端发送的数据写入请求,并在所述主库的leader副本中写入所述数据写入请求所指示的目标数据;然后将写入目标数据所生成的数据写入日志分别发送至所述主库的其他副本和备库,以使所述主库的其他副本和备库分别回放所述数据写入日志,以写入所述目标数据。由于主库的leader副本在完成目标数据的写入并生成数据写入日志后,同时将数据写入日志同步至主库的其他副本和备库,相对于相关技术中leader副本通过数据写入日志将目标数据同步至主库的其他副本后再向备库同步的方式,可以提高目标数据同步至备库的效率,降低主、备库之间数据同步的延迟时间,提高数据在包含主库、备库的分布式数据库中的写入效率。