本技术涉及大数据,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术:
1、随着大数据时代的到来,数据的规模的不断增长,数据查询的需求越来越频繁。用户对数据查询速度及数据查询服务的不间断的要求越来越强烈,不希望访问查询数据的时候等待时间过长,甚至看到“查询超时”或者“数据库繁忙”的情况。单一的数据库是无法支撑因数据快速增长和查询量快速增长而带来的存储和计算强度的相应快速增大。在这种情况下,势必要对现有数据库进行硬件扩展或者直接更换更高性能的数据库,但是单台数据库服务器的性能无论多强大,也无法满足数据量和查询量不断提升的需求,可用性较差,且每次扩展、更换的不仅造成了硬件资源的浪费还增加了用户的成本。
2、因此,如何实现数据库的高可用性是亟待解决的技术问题。
技术实现思路
1、本技术实施例提供一种数据处理方法、装置、电子设备及存储介质,用以实现数据库的高可用性。
2、第一方面,本技术实施例提供一种数据处理方法,应用于分布式存储系统中的处理节点,所述分布式存储系统包括所述处理节点和数据库服务器集群,所述数据库服务器集群包括互为主从关系的多个服务器,每个服务器均为用户提供读写功能,所述方法包括:
3、分别为每个服务器上发生的数据更改事件设置偏移量,并将每个数据更改事件和每个数据更改事件的偏移量保存至数据表中;
4、按照数据表中记录的偏移量的顺序,分别对每个数据更改事件,执行如下操作:
5、将所述数据更改事件作为待同步数据更改事件,并根据所述待同步数据更改事件的偏移量,以及偏移量表内记录的每个服务器对应的已完成偏移量,向所述多个服务器中的部分或全部服务器发送针对所述待同步数据更改事件的数据同步指令;任一服务器对应的已完成偏移量指所述服务器当前已完成同步的数据更改事件的偏移量;
6、接收所述多个服务器中的部分或全部服务器发送的同步完成消息,并基于所述同步完成消息将对应服务器的已完成偏移量更新为所述待同步数据更改事件的偏移量。
7、在一些实施例中,所述分别为每个服务器上发生的数据更改事件设置偏移量之前,所述方法还包括:
8、分别向每个服务器发送获取日志文件请求;所述日志文件请求用于指示对应的服务器将日志文件发送至所述处理节点,所述日志文件用于记录所述服务器上发生的数据更改事件;
9、基于接收的每个服务器发送的日志文件,获得每个服务器上发生的数据更改事件。
10、在一些实施例中,每个数据更改事件均携带指示所述数据更改事件发生时间的时间戳;
11、所述分别为每个服务器上发生的数据更改事件设置偏移量,并将每个数据更改事件和每个数据更改事件的偏移量保存至数据表中,包括:
12、按照数据更改事件的时间戳由小到大的顺序,对多个服务器上发生的数据更改事件进行排序;
13、根据每个数据更改事件的排列顺序,为每个数据更改事件设置唯一的偏移量;
14、基于每个数据更改事件与服务器的对应关系,为每个数据更改事件标注所属服务器标识;
15、将每个数据更改事件、每个数据更改事件的偏移量以及为每个数据更改事件标注的服务器标识保存至数据表中。
16、在一些实施例中,所述按照数据更改事件的时间戳由小到大的顺序,对多个服务器上发生的数据更改事件进行排序之前,所述方法还包括:
17、判断是否存在至少两个数据更改事件相同且为不同服务器产生;
18、若确定存在,则保留所述至少两个数据更改事件中时间戳最大的数据更改事件,删除所述至少两个数据更改事件中的剩余数据更改事件。
19、在一些实施例中,所述同步完成消息为任一服务器在确定对所述待同步数据更改事件同步完成时发送的,或者为任一服务器在确定所述数据同步指令中指示的待同步数据更改事件所属服务器标识与该服务器的标识一致时发送的。
20、在一些实施例中,所述将每个数据更改事件和每个数据更改事件的偏移量保存至数据表中之后,所述方法还包括:
21、在确定满足预设清理条件时,基于所述偏移量表内记录的每个服务器对应的已完成偏移量,确定最小偏移量;
22、基于所述最小偏移量,对所述数据表内小于或等于所述最小偏移量的偏移量以及对应的数据更改事件进行清理。
23、在一些实施例中,所述接收所述多个服务器中的部分或全部服务器发送的同步完成消息,所述方法包括:
24、在预设时间内接收所述多个服务器中的部分或全部服务器发送的同步完成消息;
25、若确定在所述预设时间内未接收到任一服务器发送的同步完成消息,则根据所述服务器的故障原因执行对应的处理。
26、在一些实施例中,所述根据所述服务器的故障原因执行对应的处理,所述方法包括:
27、若所述服务器的故障原因为所述服务器处于宕机状态,则待检测到所述服务器运行状态正常时,向所述服务器重新发送数据同步指令;
28、若所述服务器的故障原因为所述服务器不存在,则将所述偏移量表中所述服务器及对应的偏移量删除。
29、第二方面,本技术实施例提供一种数据处理装置,应用于分布式存储系统中的处理节点,所述分布式存储系统包括所述处理节点和数据库服务器集群,所述数据库服务器集群包括互为主从关系的多个服务器,每个服务器均为用户提供读写功能,包括:
30、设置模块,用于分别为每个服务器上发生的数据更改事件设置偏移量,并将每个数据更改事件和每个数据更改事件的偏移量保存至数据表中;
31、执行模块,用于按照数据表中记录的偏移量的顺序,分别对每个数据更改事件,执行如下操作:
32、将所述数据更改事件作为待同步数据更改事件,并根据所述待同步数据更改事件的偏移量,以及偏移量表内记录的每个服务器对应的已完成偏移量,向所述多个服务器中的部分或全部服务器发送针对所述待同步数据更改事件的数据同步指令;任一服务器对应的已完成偏移量指所述服务器当前已完成同步的数据更改事件的偏移量;
33、接收模块,用于接收所述多个服务器中的部分或全部服务器发送的同步完成消息,并基于所述同步完成消息将对应服务器的已完成偏移量更新为所述待同步数据更改事件的偏移量。
34、在一些实施例中,还包括:
35、获取模块,用于分别为每个服务器上发生的数据更改事件设置偏移量之前,分别向每个服务器发送获取日志文件请求;所述日志文件请求用于指示对应的服务器将日志文件发送至所述处理节点,所述日志文件用于记录所述服务器上发生的数据更改事件;
36、基于接收的每个服务器发送的日志文件,获得每个服务器上发生的数据更改事件。
37、在一些实施例中,每个数据更改事件均携带指示所述数据更改事件发生时间的时间戳;所述设置模块,具体用于:
38、按照数据更改事件的时间戳由小到大的顺序,对多个服务器上发生的数据更改事件进行排序;
39、根据每个数据更改事件的排列顺序,为每个数据更改事件设置唯一的偏移量;
40、基于每个数据更改事件与服务器的对应关系,为每个数据更改事件标注所属服务器标识;
41、将每个数据更改事件、每个数据更改事件的偏移量以及为每个数据更改事件标注的服务器标识保存至数据表中。
42、在一些实施例中,所述设置模块按照数据更改事件的时间戳由小到大的顺序,对多个服务器上发生的数据更改事件进行排序之前,还包括:
43、判断模块,用于判断是否存在至少两个数据更改事件相同且为不同服务器产生;
44、若确定存在,则保留所述至少两个数据更改事件中时间戳最大的数据更改事件,删除所述至少两个数据更改事件中的剩余数据更改事件。
45、在一些实施例中,所述同步完成消息为任一服务器在确定对所述待同步数据更改事件同步完成时发送的,或者为任一服务器在确定所述数据同步指令中指示的待同步数据更改事件所属服务器标识与该服务器的标识一致时发送的。
46、在一些实施例中,所述设置模块将,将每个数据更改事件和每个数据更改事件的偏移量保存至数据表中之后,还包括:
47、清理模块,用于在确定满足预设清理条件时,基于所述偏移量表内记录的每个服务器对应的已完成偏移量,确定最小偏移量;
48、基于所述最小偏移量,对所述数据表内小于或等于所述最小偏移量的偏移量以及对应的数据更改事件进行清理。
49、在一些实施例中,所述接收模块,具体用于:
50、在预设时间内接收所述多个服务器中的部分或全部服务器发送的同步完成消息;
51、若确定在所述预设时间内未接收到任一服务器发送的同步完成消息,则根据所述服务器的故障原因执行对应的处理。
52、在一些实施例中,所述接收模块,具体用于:
53、若所述服务器的故障原因为所述服务器处于宕机状态,则待检测到所述服务器运行状态正常时,向所述服务器重新发送数据同步指令;
54、若所述服务器的故障原因为所述服务器不存在,则将所述偏移量表中所述服务器及对应的偏移量删除。
55、第三方面,本技术实施例提供一种电子设备,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行上述数据处理方法。
56、第四方面,本技术实施例提供一种计算机可读存储介质,其存储有可由处理器执行的计算机程序,当所述程序在所述处理器上运行时,使得所述处理器执行上述数据处理方法。
57、本技术实施例中,应用于分布式存储系统中的处理节点,分布式存储系统包括处理节点和数据库服务器集群,数据库服务器集群包括互为主从关系的多个服务器,每个服务器均为用户提供读写功能,分别为每个服务器上发生的数据更改事件设置偏移量,并将每个数据更改事件和每个数据更改事件的偏移量保存至数据表中,按照数据表中记录的偏移量的顺序,分别对每个数据更改事件,执行如下操作,将数据更改事件作为待同步数据更改事件,并根据待同步数据更改事件的偏移量,以及偏移量表内记录的每个服务器对应的已完成偏移量,向多个服务器中的部分或全部服务器发送针对待同步数据更改事件的数据同步指令,任一服务器对应的已完成偏移量指服务器当前已完成同步的数据更改事件的偏移量,接收多个服务器中的部分或全部服务器发送的同步完成消息,并基于同步完成消息将对应服务器的已完成偏移量更新为待同步数据更改事件的偏移量,这样,多个服务器互为主从关系,且每个服务器均为用户提供读写功能,可提升数据查询速度,且任一数据库服务器故障,其他互为主从关系的数据库服务器也可正常工作,保证了数据的安全,实现了数据库的高可用性,同时,设置数据表和偏移量表,当任一数据库服务器上发生数据更改事件,就将这一数据更改事件设置偏移量并保存在数据表内,基于数据表内的各数据更改事件对各数据库服务器同步更新,并对任一数据库服务器已经同步完成的数据更改事件进行偏移量更新,保证了各数据库服务器内的数据一致性。