一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据处理的方法、设备及系统与流程

2022-02-24 16:16:07 来源:中国专利 TAG:


1.本技术涉及计算机领域,尤其涉及一种数据处理的方法、设备及系统。


背景技术:

2.为了保证数据库的吞吐性能,现今的数据库中,数据的修改并非直接作用于内存页 (datafile),而是在缓冲池(bufferpool)对数据进行修改后,将修改过程生成日志并将该日志存储至日志盘,在缓冲池已满或者其他预设条件下再将缓冲池中的内存页写入文件盘。
3.由于缓冲池中存在一部分文件盘还未来得及存储的数据,在备机备份数据和主机损坏恢复数据的场景下,备机或者主机可以从文件盘中获取历史版本的内存页,再结合日志盘中存储的日志的顺序依次回放日志,才能获得最新版本的数据。这样,如果缓冲池中存在了大量还未写入文件盘中的数据,日志回放将耗费大量的时间,不仅影响备机备份效率,还影响主机损坏之后的恢复效率,使得整个数据备份和故障恢复过程耗时较长。


技术实现要素:

4.本发明提供了一种数据处理的方法、设备及系统,用于解决数据备份和故障恢复过程耗时长的问题。
5.第一方面,提供了一种数据处理方法,该方法包括以下步骤:备机获取共享服务器记录的数据版本关系,并根据该数据版本关系获取第一版本数据和第一日志,其中,第一日志用于标识第二版本相对第一版本变更的操作过程,数据版本关系记录了不同版本的数据的恢复依赖关系,备机按照该恢复依赖关系,根据第一版本数据和第一日志在备机中恢复第二版本数据,恢复依赖关系可以是指日志回放的顺序,比如先根据v1版本的内存页和日志logv2 通过日志回放得到v2版本,再根据v2版本的内存页和日志logv3通过日志回放得到v3 版本。
6.由于主机通过网络将内存页写入共享服务器所消耗的系统资源低,使得主机将内存页进行持久化存储的频率可以得到提升,进而使得备机进行数据恢复时,可从共享服务器中获取内存页,该内存页的版本与日志盘中存储的最新日志之间的版本差距小,恢复最新版本的数据时所需的日志回放次数降低,个别场景甚至不需要进行日志回放操作,从共享服务器即可获取到最新版本的内存页,使得备机进行数据备份的效率提升,主机故障后备机进行故障转移的效率也可得到提升。
7.在一种可能的实现方式中,第一版本数据指的是第一版本的内存页,第二版本数据指的是该内存页的第二版本,上述第一版本早于第二版本。
8.可选地,第一版本早于第二版本指的是第一版本是与第二版本相邻的版本,换句话说,第一版本与第二版本之间不存在其他版本数据。此时备机可根据第一版本数据和第一日志进行一次日志回放,恢复出第二版本数据。
9.可选地,第一版本早于第二版本还可以是指的是第二版本与第一版本之间存在其
他版本数据,比如第二版本与第三版本相邻,第三版本与第一版本相邻,此时第一日志可包括第二日志和第三日志,其中,第二日志用于标识第三版本相对于第一版本变更的操作过程,第三日志用于标识第二版本相对于第三版本变更的操作过程。该种情况下备机根据第一版本数据和第一日志在备机中恢复第二版本数据时,可先根据第一版本数据和第二日志在备机中恢复第三版本数据,再根据第三版本数据和第三日志在备机中恢复第二版本数据。
10.可选地,第一版本还可以与第二版本是同一个版本,换句话说,共享服务器中存储的第一版本数据即为主机当前最新版本的数据,那么备机可以不需要日志回放,从共享服务器中获取第一版本数据,完成本次数据恢复,使得备机进行数据备份的效率提升,主机故障后备机进行故障转移的效率也可得到提升。
11.在一种可能的实现方式中,备机在根据数据版本关系获取第一版本数据和第一日志时,可先确定备机存储的数据版本早于该第一版本之后,再向共享服务器获取第一版本数据,如果备机存储的数据版本与第一版本相同,备机可从本地获取该第一版本数据。
12.备机先确定本机不存在该第一版本数据后,再向共享服务器获取该数据,可以避免本地已存在第一版本数据的情况下,再次向共享服务器获取数据,提高备机进行数据备份和数据恢复的效率。
13.第二方面,提供了一种数据处理方法,该方法包括以下步骤:主机向共享服务器发送第一版本数据和当前最新版本的信息,向备机发送第一日志,其中,第二版本数据为当前时刻主机中最新的数据,当前最新版本的信息包括第二版本的信息,共享服务器与主机和备机相连,主机用于接收对数据库系统的读写请求,备机为数据库系统中用于备份数据的设备,第一日志用于标识第二版本相对于第一版本变更的操作过程。
14.具体实现中,主机可按时间周期将内存页写入共享服务器,比如每隔1分钟将最新版本的内存页写入共享服务器;还可按修改次数将内存页写入共享服务器,比如内存页每修改5 次,将最新版本的内存页写入共享服务器;还可按修改量将内存页写入共享服务器,比如有 50g的内存页被修改时,将最新版本的内存页写入共享服务器,具体可根据经验确定内存页写入共享服务器的频率,本技术不作具体限定。
15.由于主机通过网络将内存页写入共享服务器所消耗的系统资源低,使得主机将内存页进行持久化存储的频率可以得到提升,进而使得主机或者备机进行数据恢复时,可从共享服务器中获取内存页,该内存页的版本与日志盘中存储的日志之间的版本差距小,恢复最新版本的数据时所需的日志回放次数降低,个别场景甚至不需要进行日志回放操作,从共享服务器即可获取到最新版本的内存页,使得备机进行数据备份的效率提升,主机故障后主机故障恢复或者备机进行故障转移的效率也可得到提升。
16.在一种可能的实现方式中,当主机发生故障进行故障恢复的应用场景中,主机可先向共享服务器获取其记录的数据版本关系,该数据版本关系用于记录不同版本的数据的恢复依赖关系,数据版本关系是共享服务器根据主机发送的第一版本数据和当前最新版本的信息获得的,然后根据数据版本关系获取第一版本数据和第一日志,最后根据第一版本数据和第一日志在主机中恢复第二版本数据。
17.由于主机通过网络将内存页写入共享服务器所消耗的系统资源低,使得主机将内存页进行持久化存储的频率可以得到提升,进而使得主机故障后进行数据恢复时,从共享
服务器中获取的内存页版本与日志盘中存储的最新日志之间的版本差距小,数据恢复时所需的日志回放次数降低,个别场景甚至不需要进行日志回放操作,使得主机故障后进行故障恢复的效率也可得到提升。
18.在一种可能的实现方式中,主机可通过远程直接内存访问(remote direct memory access, rdma)方法将第一版本数据写入共享服务器,向共享服务器发送当前最新版本的信息。
19.rdma是一种直接内存访问的技术,可由智能网卡(intelligent network interface card,inic) 将内存页从主机的内存传输到远端的共享服务器的内存,并且传输过程中无需双方cpu的介入,从而消除远端的共享服务器在接收数据时所需的复制和上下文切换的开销,达到低时延、低开销、高带宽传输数据的目的。进而使得主机通过共享服务器将内存页进行持久化存储的频率得到提升,使得主机故障后进行数据恢复时,从共享服务器中获取的内存页版本与日志盘中存储的日志之间的版本差距小,数据恢复时所需的日志回放次数降低,主机故障后进行故障恢复的效率也可得到提升。
20.在一种可能的实现方式中,第一版本数据指的是第一版本的内存页,第二版本数据指的是该内存页的第二版本,上述第一版本早于第二版本。
21.可选地,第一版本早于第二版本指的是第一版本是与第二版本相邻的版本,换句话说,第一版本与第二版本之间不存在其他版本数据。此时备机可根据第一版本数据和第一日志进行一次日志回放,恢复出第二版本数据。
22.可选地,第一版本早于第二版本还可以是指的是第二版本与第一版本之间存在其他版本数据,比如第二版本与第三版本相邻,第三版本与第一版本相邻,此时第一日志可包括第二日志和第三日志,其中,第二日志用于标识第三版本相对于第一版本变更的操作过程,第三日志用于标识第二版本相对于第三版本变更的操作过程。该种情况下主机根据第一版本数据和第一日志在主机中恢复第二版本数据时,可先根据第一版本数据和第二日志在主机中恢复第三版本数据,再根据第三版本数据和第三日志在主机中恢复第二版本数据。
23.可选地,第一版本还可以与第二版本是同一个版本,换句话说,共享服务器中存储的第一版本数据即为主机当前最新版本的数据,那么主机可以不需要日志回放,从共享服务器中获取第一版本数据,完成本次数据恢复,使得主机进行数据备份的效率提升,主机故障后主机进行故障转移的效率也可得到提升。
24.第三方面,提供了一种数据处理方法,该方法包括以下步骤:共享服务器接收主机发送的第一版本数据和当前最新版本的信息,其中,第二版本数据为当前时刻主机中最新的数据,当前最新版本的信息包括第二版本的信息,然后根据第一版本数据和当前最新版本的信息生成数据版本关系,再将该数据版本关系发送至备机,其中,数据版本关系用于记录不同版本的数据的恢复依赖关系。
25.由于主机通过网络将内存页写入共享服务器所消耗的系统资源低,使得主机将内存页进行持久化存储的频率可以得到提升,进而使得备机进行数据恢复时,可从共享服务器中获取内存页,该内存页的版本与日志盘中存储的最新日志之间的版本差距小,恢复最新版本的数据时所需的日志回放次数降低,个别场景甚至不需要进行日志回放操作,从共享服务器即可获取到最新版本的内存页,使得备机进行数据备份的效率提升,主机故障后
备机进行故障转移的效率也可得到提升。
26.具体实现中,共享服务器中的共享缓冲池可通过记录每个内存页的起始点、恢复点和终点来实现记录数据版本关系的功能,其中,起始点是该内存页在共享缓冲池中最早出现的版本,恢复点是共享服务器接收到的由主机发送的第一版本数据对应的版本,也就是第一版本,终点是共享服务器接收到的由主机发送的当前最新版本的信息对应的版本,也就是第二版本,举例来说,共享缓冲池第一次接收到内存页1的版本为v0,那么共享缓冲池可以记录内存页1在共享缓池冲中的起始点为v0,当共享缓冲池接收到主机发送的v2版本的内存页1,以及内存页1的最新版本为v3的信息时,共享缓冲池可记录内存页1的恢复点为v2,终点为 v3。这样,每当共享缓冲池接收到主机发送的第一版本数据和当前最新版本的信息时,可以基于此更新该第一版本数据对应内存页的恢复点和终点,从而实现记录不同版本数据的恢复依赖关系的目的。
27.在一种可能的实现方式中,备机可根据接收到的数据版本关系,向共享服务器发送第一版本数据的获取请求,共享服务器接收备机发送的第一版本数据的获取请求,并向备机返回该第一版本数据,其中,第一版本数据的获取请求时备机根据数据版本关系,确定备机存储的数据版本早于第一版本后生成的。如果备机需要恢复内存页1的最新版本,那么该获取请求中可携带内存页1的标识,共享服务器响应于该获取请求,通过rdma的方式将数据版本关系写入备机中,如果共享服务器与备机是同一台服务器,那么共享服务器还可通过dma 的方式将数据版本关系写入备机的。
28.备机先确定本机不存在该第一版本数据后,再向共享服务器获取该数据,可以避免本地已存在第一版本数据的情况下,再次向共享服务器获取数据,提高备机进行数据备份和数据恢复的效率。
29.在一种可能的实现方式中,共享服务器向备机发送第一版本数据时,可以在第一版本数据的末尾添加校验码,校验码用于供备机确定接收到的第一版本数据是完整数据。
30.备机确定其缓冲池中存在第一版本数据时,可再通过校验码进一步确认该第一版本数据是否完整,如果数据不完整,备机可向共享服务器发送获取请求,从而避免由于第一版本数据不完整导致日志回放失败情况的发生;如果数据完整,备机再向共享服务器发送第一版本数据的获取请求。当然,共享服务器和备机之间还可通过除了校验码以外的其他方式确保数据通信的完整,比如通过完成队列实现,该完成队列包含了工作队列中已完成的工作请求,根据队列中的完成情况确定第一版本数据是否完整。
31.在一种可能的实现方式中,共享服务器可存储第一版本数据,并删除数据版本早于第一版本的数据。具体地,共享缓冲池可以对接收到的内存页进行管理,每接收到一个新的内存页,将其历史版本删除,从而提高内存利用率的目的,如果长时间未进行修改的内存页,还可将其删除,从而达到节省内存占用的目的,同时提高修改频繁的内存页(即热页)的恢复效率。
32.具体实现中,共享服务器可通过链表实现对共享缓冲池的管理,该链表可遵循先进先出的原则,每接收到主机发送的第一版本数据时,首先确认该第一版本数据对应的内存页在链表中是否存在历史版本,若存在,则删除该历史版本的内存页,并将该第一版本数据置于链表末尾,若不存在,则直接将该第一版本数据置于链表末尾。其中,上述链表可通过最近最少使用(least recently used,lru)算法实现,lru算法可通过赋予共享缓冲池中
的每个内存页一个访问字段,来记录一个内存页自上次被访问所经历的时间t,而选择现有页面中其t值最大的,将最近最久未使用的页面予以淘汰,应理解,该链表还可通过其他算法来实现,本技术也不对此进行限定。
33.共享服务器删除数据版本早于第一版本的数据,可使得每个内存页都有且只有一个版本存储于该共享服务器中,极大程度减少了共享缓冲池占用,提高内存利用率。
34.在一种可能的实现方式中,共享服务器存储的数据达到阈值的情况下,可将最早接收到的数据删除。具体实现中,上述链表可设置为固定长度,页面存入链表之后,如果链表长度已满,那么头部的内存页(即长时间未被修改过的内存页)将会从链表中删除,从而达到节省内存占用的目的,同时使得更多的热页可以被存储进共享缓冲池,提高热页的数据恢复效率。
35.共享缓冲池每次接收到的新页面都将置于链表尾部,因此头部的页面是长时间未被修改过的页面(又称为冷页),该页面有极大可能性已被主机写入磁盘进行持久化存储,该类页面可以从共享缓冲池中删除,从而达到节省内存的目的,使得共享缓冲池可以存储更多修改频率较高的热页,提高主机故障恢复、备机故障转移和备机备份数据的效率。
36.第四方面,提供了一种数据处理系统,包括主机、备机和共享服务器,其中,备机实现如第一方面或第一方面任意一种可能的实现方式中所描述的方法的操作步骤,主机用于实现如第二方面或第二方面任意一种可能的实现方式中描述的方法的操作步骤,共享服务器用于实现如第三方面或第三方面任意一种可能的实现方式中描述的方法的操作步骤。
37.第五方面,提供了一种备机,该备机包括获取单元以及恢复单元。其中,获取单元用于获取共享服务器记录的数据版本关系,数据版本关系用于记录不同版本的数据的恢复依赖关系,备机为数据库系统中用于备份数据的设备,共享服务器与备机和主机相连,主机用于接收对数据库系统的读写请求;获取单元用于根据数据版本关系获取第一版本数据和第一日志,其中,第二版本数据为当前时刻主机中最新的数据,第一日志用于标识第二版本相对于第一版本变更的操作过程,第一版本早于第二版本;恢复单元用于根据第一版本数据和第一日志在备机中恢复第二版本数据。
38.可选地,第一版本早于第二版本包括:第一版本是与第二版本相邻的版本。
39.可选地,第一版本早于第二版本包括:第二版本与第三版本相邻,第三版本与第一版本相邻;第一日志包括第二日志和第三日志,其中,第二日志用于标识第三版本相对于第一版本变更的操作过程,第三日志用于标识第二版本相对于第三版本变更的操作过程;恢复单元用于根据第一版本数据和第二日志在备机中恢复第三版本数据;恢复单元用于根据第三版本数据和第三日志在备机中恢复第二版本数据。
40.可选地,获取单元用于根据数据版本关系,确定备机存储的数据版本早于第一版本;获取单元用于向共享服务器获取第一版本数据,备机接收共享服务器发送的第一日志。
41.第六方面,提供了一种主机,该主机包括发送单元、获取单元以及恢复单元。其中,发送单元用于主机向共享服务器发送第一版本数据和当前最新版本的信息,其中,第二版本数据为当前时刻主机中最新的数据,当前最新版本的信息包括第二版本的信息,共享服务器与主机和备机相连,主机用于接收对数据库系统的读写请求,备机为数据库系统中用于备份数据的设备。发送单元还用于向备机发送第一日志,第一日志用于标识第二版本相对于第一版本变更的操作过程,第一版本早于第二版本。
42.可选地,主机还包括获取单元和恢复单元,其中,获取单元用于获取共享服务器记录的数据版本关系,数据版本关系用于记录不同版本的数据的恢复依赖关系,数据版本关系是共享服务器根据主机发送的第一版本数据和当前最新版本的信息获得的;获取单元用于根据数据版本关系获取第一版本数据和第一日志;恢复单元用于根据第一版本数据和第一日志在主机中恢复第二版本数据。
43.可选地,发送单元用于通过远程直接内存访问rdma方法将第一版本数据写入共享服务器,向共享服务器发送当前最新版本的信息。
44.可选地,第一版本早于第二版本包括:第一版本是与第二版本相邻的版本。
45.可选地,第一版本早于第二版本包括:第二版本与第三版本相邻,第三版本与第一版本相邻;第一日志包括第二日志和第三日志,其中,第二日志用于标识第三版本相对于第一版本变更的操作过程,第三日志用于标识第二版本相对于第三版本变更的操作过程;恢复单元用于根据第一版本数据和第二日志在主机中恢复第三版本数据;恢复单元用于根据第三版本数据和第三日志在主机中恢复第二版本数据。
46.第七方面,提供了一种共享服务器,该共享服务器接收单元、生成单元以及发送单元。接收单元用于接收主机发送的第一版本数据和当前最新版本的信息,其中,第二版本数据为当前时刻主机中最新的数据,当前最新版本的信息包括第二版本的信息,共享服务器与主机和备机相连,主机用于接收对数据库系统的读写请求,备机为数据库系统中用于备份数据的设备。生成单元,用于根据第一版本数据和当前最新版本的信息生成数据版本关系,数据版本关系用于记录不同版本的数据的恢复依赖关系。发送单元,用于向备机发送数据版本关系。
47.可选地,接收单元还用于接收备机发送的第一版本数据的获取请求,其中,第一版本数据的获取请求时备机根据数据版本关系,确定备机存储的数据版本早于第一版本后生成的;发送单元还用于向备机发送第一版本数据。
48.可选地,发送单元用于向备机发送第一版本数据和校验码,校验码位于第一版本数据的末尾,校验码用于供备机确定接收到的第一版本数据是完整数据。
49.可选地,共享服务器300还包括删除单元840,删除单元840用于存储第一版本数据,并删除数据版本早于第一版本的数据。
50.可选地,删除单元840还用于在存储的数据量达到阈值的情况下,将最早接收到的数据删除。
51.第八方面,提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
52.第九方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
53.第十方面,提供了一种数据处理的设备,该设备包括处理器,该处理器用于执行上述各方面描述的方法。
54.本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
55.图1是本实施例提供的一种数据库系统的结构示意图;
56.图2是本实施例提供的一种数据库系统的部署示意图;
57.图3是本实施例提供的一种数据处理方法的步骤流程示意图;
58.图4是本实施例提供的一种共享缓冲池中内存页1的起始点、恢复点和终点示例图;
59.图5是本实施例提供的一种共享缓冲池的结构示意图;
60.图6是本实施例提供的一种数据处理方法在一应用场景下的步骤流程示意图;
61.图7是本实施例提供的一种主机的结构示意图;
62.图8是本实施例提供的一种共享服务器的结构示意图;
63.图9是本实施例提供的一种备机的结构示意图;
64.图10是本实施例提供的一种数据处理的设备的结构示意图。
具体实施方式
65.为了便于理解本发明的技术方案,首先,对本发明涉及的部分术语进行解释说明。
66.备份(backup):数据备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从主机的硬盘或阵列复制到其他存储介质的过程。
67.远程直接内存访问(remote direct memory access,rdma):rdma是一种直接内存访问技术,可将数据从一台服务器的内存传输到另一台服务器的内存,而无需双方操作系统的介入。
68.链表(linked list):链表是一种物理存储单元上非连续、非顺序的存储结构,存储单元的逻辑顺序是通过链表中的指针链接次序实现的,链表可借助指针实现灵活的内存动态管。
69.主机(master):又称为主节点,在主备模式中承担主的角色,对外提供读写服务。
70.备机(standby):又称为备节点,在主备模式中承担备的角色,不对外提供读写服务,而是通过日志回放的方式实现与主机的数据同步。
71.值得说明的是,本实施方式使用的术语仅用于对具体实施例进行解释,而非旨在限定本发明的技术方案。
72.接下来,对本发明涉及的“日志回放”的应用场景进行解释说明。
73.数据库是一种可视为电子化的文件柜,是一个长期存储在计算机内的有组织、可共享、统一管理的大量数据的集合。用户可对数据库中的文件进行新增、查询、更新和删除等操作,而主机接收到用户的操作请求后,通常在内存中对文件所在的内存页进行修改(例如,在具体地址写入新的数据或更新已有地址页的数据),并生成相应的日志。其中,日志记录了数据库在对旧版本的内存页v1进行修改获得新版本的内存页v2时的操作信息,而日志回放则是对旧版本的内存页v1重新执行一遍日志所记录的操作,进而获得新版本的内存页v2,因此,如果新版本的内存页v2丢失,可以使用日志对旧版本的内存页v1进行日志回放,即可重新获得新版本的内存页v2。
74.值得注意的是,日志是按修改顺序写入磁盘的,一次修改生成一个对应的日志。举
例来说,内存页x的原始版本为v1,在进行第一次修改获得v2版本的内存页x,对应的日志为logv2,进行第二次修改后获得v3版本的内存页x,对应的日志为logv3,那么,根据 v1版本的内存页x和日志logv2可恢复出v2版本的内存页x,根据v2版本的内存页x 和日志logv3可恢复出v3版本的内存页x。
75.应理解,最新版本的内存页是主机中距离当前时刻最近一次修改获得的内存页,上述例子中,v3版本的内存页是最新版本的内存页,v2版本的内存页和v1版本的内存页都是旧版本的内存页。为了本技术能够被更好地理解,下文将统一以当前主机当前最新版本的内存页的版本号大于旧版本内存页为例进行说明,比如v4版本的内存页是最新版本的内存页,那么v1~v3版本的内存页是旧版本的内存页。
76.通常情况下,日志回放可出现在以下应用场景中。
77.第一种应用场景是部署有数据库的主机故障后,主机故障恢复的场景。应理解,为了在服务器崩溃时保证数据安全并提升系统性能,现今的数据库中,数据的修改往往先是在缓冲池中对内存页进行修改,在缓冲池中生成相应的日志后,先将每个日志进行持久化存储,写入用于存放日志的日志盘中,再将修改后的内存页进行持久化存储,写入用于存放数据文件的文件盘中。其中,日志盘和文件盘可以是硬盘中的两段存储空间。但是,由于内存页在磁盘进行持久化存储需要消耗大量的资源,内存页并不是每个版本都写入文件盘,通常是在某种条件下才会将最新版本的内存页写入文件盘进行持久化存储,比如以半小时为周期定时将缓冲池中最新版本的内存页写入文件盘,或者缓冲池已占用70%时将当前最新版本的内存页写入文件盘,或者每当内存页的修改量达到1g时将缓冲池中最新版本的内存页写入文件盘等等。因此,当用户提交事务对内存页进行修改时,每个版本的写内存页是异步存储,而每个版本的日志文件则是同步存储。这样,就可能导致数据库崩溃时,缓冲池中存在一部分还未来得及写入文件盘的内存页将会丢失,数据库在恢复重启之后,需要恢复缓冲池中丢失的内存页。此时可将文件盘中已进行持久化存储的数据页的版本与日志盘中最新的日志版本进行比对,确定参与故障恢复的日志,然后将日志依次进行回放,恢复出缓冲池中的数据。
78.第二种应用场景是部署有数据库的主机故障后,主机无法重启,备机恢复主机中的数据并提升为主机的场景,该过程又称为备机故障转移(failover)或者角色转换(switchover)。应理解,数据库为了保证海量数据的可靠性,一般通过备份的方式来防止数据丢失,部署有数据库的主机通常与多个备机相连,每个备机都对主机文件盘中的数据页和日志盘中的日志进行备份。因此在数据库故障恢复时,不仅主机可通过上述日志回放的方式进行数据恢复,如果主机故障后出现无法重启的情况,备机也可通过上述日志回放的方式恢复出主机故障时的数据状态,实现故障转移。
79.第三种应用场景是备机对主机内的数据进行备份的应用场景中,该场景又称为主备复制 (replication)场景。在该场景中,主机可在缓冲池对内存页进行修改并生成相应的日志后,向备机发送该日志,以供备机通过回放日志获得最新版本的数据,主机上对数据页的修改即可同步到备机,从而达到备机复制主机内内存页的目的,由于日志大小远小于内存页的大小,通过上述备机回放日志的方式进行主备复制可以减少通信量。
80.当然,本技术提供的数据处理方法还适用于其他通过日志回放恢复数据的应用场景,这里不再一一举例,本技术不对此进行限定。
81.为了解决传统技术中日志回放效率低导致主机100故障恢复、故障转移以及主备复制效率低的问题,本技术提供了一种数据库系统10,如图1所示,该系统10包括主机100、备机 200以及共享服务器300,其中,主机100和共享服务器300之间、备机200和共享服务器 300之间均通过网络传输,比如以太网(ethernet),具体可以是有线网络也可以是无线网络,本身很强不作具体限定。主机100和备机200之间可通过上述网络连接,也可通过总线连接,比如高速串行计算机扩展总线标准(peripheral component interconnect-express,pcie)总线,本技术不作具体限定。
82.主机100、备机200以及共享服务器300可以是物理服务器,比如x86服务器、arm服务器等等;也可以是基于通用的物理服务器结合网络功能虚拟化(network functionsvirtualization,nfv)技术实现的虚拟机(virtual machine,vm),虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离的环境中的完整计算机系统,比如云数据中心内的虚拟机,本技术不作具体限定。主机100、备机200和共享服务器300还可以是由多个上述物理服务器或者多个上述虚拟机组成的服务器集群,还可以是其他具有存储功能的存储设备,如存储阵列,本技术不作具体限定。
83.其中,主机100和备机200分别包括缓冲池、文件盘和日志盘。共享服务器300包括共享服务器310。图1以主机1包括缓冲池1、文件盘1和日志盘1,备机1包括缓冲池2、文件盘2和日志盘2,备机2包括缓冲池3、文件盘3和日志盘3为例进行了说明,应理解,主机100、备机200以及共享服务器300的单元模块可以有多种划分,比如主机100、备机200 和共享服务器300还可包括处理器、通信模块等等,图1仅为一种示例性的划分方式,且各个模块可以是软件模块,也可以是硬件模块,也可以部分是软件模块部分是硬件模块,本技术不对其进行限制。并且,图1中所示设备和模块之间的位置关系不构成任何限制,例如,在图1中的文件盘1和日志盘1置于主机中,文件盘2和日志盘2置于备机1中,文件盘3 和日志盘3置于备机2中,共享缓冲池310置于共享服务器300中,在其他情况下,文件盘和/或日志盘也可以是主机和/或备机的外部存储器,共享缓冲池310也可以是共享服务器300 的外部存储器,本技术不作具体限定。
84.文件盘和日志盘是能够将数据进行持久化存储的磁盘或者存储阵列,可以是主机或者备机的当主机或者备机故障后,主机或者备机上的文件盘和日志盘中的数据不会丢失,其中,文件盘用于存储数据页,该数据页可以是对缓冲池中内存页进行持久化存储后得到的,日志盘用于存储日志。具体地,文件盘和日志盘可以是硬盘(hard disk drive,hdd)、固态硬盘(solidstate drive,ssd)、混合硬盘(hybrid hard drive,hdd)、独立冗余磁盘阵列(redundant arraysindependent disks,raid)等等。
85.缓冲池和共享缓冲池310是可以进行高速数据交换的存储器,其中,主机、备机中的缓冲池可以分别包括主机或备机的内存或缓存的一段连续或者不连续的存储空间,共享缓冲池 310可以是共享服务器300的内存或缓存的一段连续或者不连续的存储空间。在主机100、备机200和共享服务器300是由多个服务器组成的服务器集群的情况下,缓冲池和共享缓冲池 310还可以是多个服务器的内存或缓存中的部分存储空间的集合。应理解,缓冲池的读写速率很快,内存页的修改和日志生成是在缓冲池中进行的,但是当主机或者备机发生故障后,主机或者备机上的缓冲池中的数据将会丢失。
86.具体地,缓冲池和共享缓冲池310可以是易失性存储器(volatile memory)、随机
存取存储器(random access memory,ram)、动态随机存储器(dynamic ram,dram)、静态随机存储器 (static ram,sram)、同步动态随机存储器(synchronous dynamicram,sdram)、双倍速率同步动态随机存储器(double data rate ram,ddr)、只读存储器(read-only memory,rom)、高速缓存(cache)等等,本技术不作具体限定。
87.在本实施例中,主机100对内存页进行修改后,可将修改后的内存页(具体可以是内存页中存储的数据或指示内存页中数据或数据结构的指示信息,其中,数据是指数据库中存储的有效数据)发送至共享服务器300,这样,备机200或者主机100都可根据需要从共享服务器300中获取内存页。参考前述内容可知,主机100将内存页写入磁盘需要消耗大量的系统资源,因此,图1所示的主机100将内存页进行持久化存储的频率很低,导致日志回放时,文件盘中数据页格式与最新日志的格式差距较大,参与日志回放的有效日志数量很大,日志回放所需的时间很长。而主机100可通过网络将内存页发送至共享服务器300,由共享服务器300对内存页进行持久化存储。可以理解的,相比于主机100将内存页写入磁盘进行持久化存储,直接将内存页发送至共享服务器300所消耗的系统资源很少,因此本技术提供的方案中,主机100可以通过共享服务器300持久化存储内存页,使得内存页持久化的频率可以大大提高,进而在通过日志回放获得最新版本的内存页时,持久化存储的内存页与最新版本内存页之间的版本差距大大减小,所需的日志回放次数大大降低,甚至可以不进行日志回放,直接从共享服务器300中获取到最新版本的内存页,提高数据恢复的效率。
88.具体实现中,主机100可按时间周期将内存页写入共享服务器300,比如每隔1分钟将最新版本的内存页写入共享服务器300;还可按修改次数将内存页写入共享服务器300,比如内存页每修改5次,将最新版本的内存页写入共享服务器300;还可按修改量将内存页写入共享服务器300,比如有50g的内存页被修改时,将最新版本的内存页写入共享服务器300,具体可根据经验确定内存页写入共享服务器300的频率,本技术不作具体限定。
89.值得注意的是,本技术提供的数据库系统10部署灵活,可部署在包括单个主机100、多个备机200的、单个共享服务器300的数据库系统中,比如图1所示的数据库系统;还可部署在包括多个主机100、多个备机200以及多个共享服务器300的数据库系统中,比如图3 所示的数据库系统,该数据库系统包括两台主机100,分别为主机1001和主机1002,其中,备机2001、备机2002以及备机2003对主机1001中的数据进行备份,主机1001可按预设频率,向共享服务器3001的共享缓冲池3101写入最新版本的内存页进行持久化存储,备机2004、备机2005和备机2006对主机1002中的数据进行备份,主机1002可按预设频率,向共享服务器3002的共享缓冲池3102写入最新版本的内存页进行持久化存储。应理解,图2仅用于举例说明,本技术提供的数据库系统不对主机100、备机200以及共享服务器300的数量进行限定,并且,每个主机100可对应一个共享服务器300,还可对应多个共享服务器300,本技术对此不做限定。
90.在一些可能的实施方式中,共享服务器300可以是独立于主机100和备机200存在的其他服务器,还可以与备机200是同一个服务器,即共享缓冲池310是备机200上缓存的一部分,备机200可以通过dma的形式从共享缓冲池310中读取内存页,本技术不作具体限定。
91.综上可知,本技术提供的数据库系统,主机100可通过网络将修改后的内存页写入共享服务器300的共享缓冲池310中,使得主机100将内存页进行持久化存储的频率可以极大提高,进而在使用日志对内存页进行日志回放来恢复最新版本的内存页时,由于内存页
持久化存储的频率提高,持久化存储的内存页与最新版本的内存页之间的版本差距降低,数据恢复时的日志回放次数大大降低,个别场景甚至不需要进行日志回放操作,直接从共享服务器300 中获取最新版本的内存页,使得日志回放和数据恢复的效率得到提升,进而使得数据库系统故障恢复、故障转移以及主备复制的效率得到提升。
92.下面结合附图,对上述图1所示的数据库系统10如何进行日志回放的具体步骤过程进行详细介绍。
93.如图3所示,本技术提供了一种数据处理方法,该方法应用于图1所示的数据库系统中,该系统包括主机100、备机200以及共享服务器300,其中,主机100、备机200以及共享服务器300之间相互连接,该方法包括以下步骤:
94.s410:主机100向共享服务器300发送第一版本数据和当前最新版本的信息。
95.具体实现中,第一版本数据可以是某一版本的内存页,比如图1所示的v1版本的内存页。其中,参考前述内容可知,主机100可按照预设频率,将内存页写入共享服务器300,预设频率可包括时间周期、修改次数以及修改量等等,这里不重复赘述。当前最新版本的信息指的是主机100在步骤s410时该内存页的最新版本,假设当前第二版本数据为该内存页的最新版本,那么当前最新版本的信息可包括该第二版本的信息。
96.在一种可能的实施例中,主机100可通过远程直接内存访问(remote direct memory access, rdma)的方式将第一版本数据写入共享服务器300。rdma是一种直接内存访问的技术,可由智能网卡(intelligent network interface card,inic)将内存页从主机100的内存传输到远端的共享服务器300的内存,并且传输过程中无需双方cpu的介入,从而消除远端的共享服务器300在接收数据时所需的复制和上下文切换的开销,达到低时延、低开销、高带宽传输数据的目的。
97.在一种可能的实施例中,如果主机中的第一版本数据对应的内存页的最新版本是第二版本,那么当前最新版本的信息即为第二版本的信息。应理解,主机100通过rdma的方式将第一版本数据写入共享缓冲池时,通常先将第一版本数据拷贝入一段用于rdma的缓存中,然后再进行rdma,而在数据拷贝的过程当中,可能主机100正在将第一版本数据修改为第二版本数据,使得主机100进行rdma时,内存页的最新版本不再是第一版本数据,而变成了第二版本数据,因此主机100将第一版本数据拷贝入缓存后,开始进行rdma时,可同时将第一版本数据对应内存页的当前最新版本的信息发送给共享缓冲池,比如写入内存页的版本为v1,最新版本为v3。这样,共享缓冲池可记录接收到的第一版本数据的版本和最新版本的信息,并基于此生成数据版本关系,该数据版本关系用于记录不同版本的数据的恢复依赖关系,当备机进行主备复制、主机进行故障恢复或者备机进行故障转移的情况下,主机或者备机可向共享缓冲池获取该数据版本关系,并以此进行日志回放。
98.可以理解的,相比于将数据写入主机100的文件盘进行持久化存储,主机100通过rdma 的方式将第一版本数据写入共享服务器300,由共享服务器300对第一版本数据进行持久化存储,可以使得主机100持久化存储消耗的系统资源降低,从而使得主机100对内存页进行持久化存储的频率得到提升,使得日志回放时,文件盘中进行持久化存储的内存页格式与最新内存页的格式之间的差距大大减小,参与日志回放的有效日志数量很少,甚至可以不进行日志回放,直接从共享服务器300中获取到最新版本的内存页,提高数据恢复的效率。
99.s420:主机100向备机200发送第一日志。其中,第一日志记录了第一版本数据修改为第二版本数据的操作过程,第一日志用于标识第二版本相对于第一版本变更的操作过程,第一版本早于第二版本。
100.可以理解的,第一日志用于日志回放,而根据第一版本数据,对第一日志进行回放,可获得第二版本数据。其中,主机100对第一版本数据进行修改并生成第二版本数据和第一日志的过程以及日志的描述可以参考图1~图2实施例,这里不重复赘述。
101.值得注意的是,第一版本早于第二版本可以是指第一版本与第二版本是相邻的版本,其中第二版本是新版本,第一版本是旧版本,以图1所示的应用场景为例,v1版本即为第一版本,v2版本是第二版本。第一版本早于第二版本还可以是指第一版本与第二版本之间存在一个或者多个版本,比如第一版本与第二版本之间存在第三版本,其中第二版本与第三版本相邻,而第三版本与第一版本相邻,其中,对第一版本进行修改可获得第三版本,对第三版本进行修改可获得第二版本,那么第一日志可包括第二日志和第三日志,第二日志用于标识第三版本相对于第一版本变更的操作过程,第三日志用于标识所述第二版本相对于所述第三版本变更的操作过程,仍以图1所示的应用场景为例,v1版本即为第一版本,v2版本即为第三版本,v3即为第二版本,logv2即为第二日志,logv3即为第三日志,应理解,上述例子是以第一版本和第二版本之间在一个版本,即第三版本为例进行的说明,具体实现中,本技术不对第一版本和第二版本之间的版本数量进行限定。
102.在一种可能的实施例中,主机100可通过直接存储器访问(direct memory access,dma)的方式向备机200发送第一日志。主机100每生成一个新的日志,会将该日志传输至备机200,以供备机200根据日志和共享缓冲池中的内存页进行日志回放,实现主备复制的目的;当主机100发生故障需要备机200进行故障转移时,备机200也可先从共享缓冲池获取数据版本关系,并基于此向共享缓冲池获取第一版本数据,然后根据主机100发送的第一日志和共享缓冲池中的第一版本数据,按照数据版本关系记录的恢复依赖关系对第一版本数据进行日志回放,完成故障转移。该过程的详细描述将在下文的步骤s450~步骤s460进行描述。
103.在一种可能的实施例中,主机100每生成一个新的日志,会将该日志存储至日志盘进行持久化存储,这样,即使主机100故障导致缓存中的内存页丢失,主机100也可以先从共享缓冲池中获取数据版本关系,并基于此向共享缓冲池获取第一版本数据,从日志盘获取第一日志,然后按照数据版本关系记录的恢复依赖关系对第一版本数据进行日志回放,实现主机 100的故障恢复。该过程的详细描述将在下文的步骤s470~步骤s480进行描述。
104.s430:共享服务器300根据第一版本数据和当前最新版本的信息生成数据版本关系。其中,该数据版本关系用于记录不同版本的数据的恢复依赖关系,恢复依赖关系可以是指日志回放的顺序,比如先根据v1版本的内存页和日志logv2通过日志回放得到v2版本,再根据v2版本的内存页和日志logv3通过日志回放得到v3版本。
105.具体实现中,共享服务器300中的共享缓冲池310可通过记录每个内存页的起始点、恢复点和终点来实现记录数据版本关系的功能,其中,起始点是该内存页在共享缓冲池中最早出现的版本,恢复点是共享服务器300接收到的由主机发送的第一版本数据对应的版本,也就是第一版本,终点是共享服务器300接收到的由主机发送的当前最新版本的信息对应的版本,也就是第二版本,举例来说,共享缓冲池第一次接收到内存页1的版本为v0,那
么共享缓冲池可以记录内存页1在共享缓池冲中的起始点为v0,当共享缓冲池接收到主机发送的 v2版本的内存页1,以及内存页1的最新版本为v3的信息时,共享缓冲池可记录内存页1 的恢复点为v2,终点为v3。这样,每当共享缓冲池接收到主机发送的第一版本数据和当前最新版本的信息时,可以基于此更新该第一版本数据对应内存页的恢复点和终点,从而实现记录不同版本数据的恢复依赖关系的目的。
106.示例性地,图4是一种应用场景下共享缓冲池记录的数据版本关系。该数据版本关系是内存页1的数据版本关系,假设共享缓冲池在t0时刻第一次接收到内存页1时,其数据版本为v0,因此内存页1的起始点1与版本v0对应。当共享缓冲池在t1时刻接收到v3版本的内存页1之后,同时接收到了内存页1的当前最新版本信息为v5,共享缓冲池可随之更新恢复点对应至v3,终点对应至v5。这样,当主机100或者备机200需要进行数据恢复时,可以向共享服务器300获取该数据版本关系,确定本次的恢复依赖关系为:先根据v3版本恢复得到v4版本,再根据v4版本恢复得到v5版本,基于此可向共享服务器300获取v3版本的内存页1,然后按照恢复依赖关系依次进行日志回放。应理解,上述举例仅用于说明,并不能构成具体限定。
107.在一种可能的实施例中,共享缓冲池310可以对接收到的内存页进行管理,每接收到一个新的内存页,将已存储至备机的内存页的历史版本删除,从而提高内存利用率的目的,如果长时间未进行修改的内存页,还可将其删除,从而达到节省内存占用的目的,同时提高修改频繁的内存页(即热页)的恢复效率。
108.具体实现中,共享服务器300可通过链表实现对共享缓冲池的管理,该链表可遵循先进先出的原则,每接收到主机100发送的第一版本数据时,首先确认该第一版本数据对应的内存页在链表中是否存在历史版本,若存在,则删除该历史版本的内存页,并将该第一版本数据置于链表末尾,若不存在,则直接将该第一版本数据置于链表末尾,使得每个内存页都有且只有一个版本存储于该共享服务器300中,极大程度减少了共享缓冲池占用,提高内存利用率。进一步地,链表可设置为固定长度,页面存入链表之后,如果链表长度已满,那么头部的内存页(即长时间未被修改过的内存页)将会从链表中删除,从而达到节省内存占用的目的,同时使得更多的热页可以被存储进共享缓冲池,提高热页的数据恢复效率。
109.举例来说,如图5所示,假设t0时刻链表s1中存储了多个内存页,包括页0~页n,其中,页0的版本为v6,页1的版本为v1,页2的版本为v10,页3的版本为v55,

,页n 的版本为v32。假设t1时刻,主机100通过rdma的方式将新页面(即图5所示的v3版本的页1)写入共享缓冲池后,共享服务器300先确定链表s1中已存在页1的历史版本,即 v1版本,然后将新页面放入链表s1的末尾,并将历史版本的页1从链表s1中删除,获得更新后的链表s2。同理,假设t2时刻,主机100再通过rdma的方式将页n 1写入该共享缓冲池,共享服务器300先确定链表s2中没有页n 1的历史版本,然后将新页面放入链表s1 的末尾,如果链表长度达到阈值,此时将头部的v6版本的页0删除。应理解,上述举例仅用于说明,本技术不作具体限定。
110.可以理解的,共享缓冲池310每次接收到的新页面都将置于链表尾部,因此头部的页面是长时间未被修改过的页面(又称为冷页),该页面有极大可能性已被主机100写入磁盘进行持久化存储,该类页面可以从共享缓冲池中删除,从而达到节省内存的目的,使得共享缓冲池可以存储更多修改频率较高的热页,提高故障恢复、故障转移和主备复制的效率。应理解,图4仅用于举例说明,本技术不作具体限定。
111.具体实现中,链表可通过最近最少使用(least recently used,lru)算法实现,lru算法可通过赋予共享缓冲池中的每个内存页一个访问字段,来记录一个内存页自上次被访问所经历的时间t,而选择现有页面中其t值最大的,将最近最久未使用的页面予以淘汰,应理解,该链表还可通过其他算法来实现,本技术也不对此进行限定。
112.值得注意的是,如果数据库系统由多个主机、多个备机以及多个共享服务器构成,那么每个共享服务器可对不同主机进行服务,分别存储不同主机发送的不同内存页。比如图2所示的结构中,共享服务器1接收并存储主机1发送的内存页,并记录该内存页对应的数据版本关系,共享服务器2接收并存储主机2发送的内存页,并记录该内存页对应的数据版本关系。但是,如果一个共享服务器向多个主机提供服务,那么共享服务器在存储和记录数据版本关系时,还会额外记录每个内存页所属的主机和备机的信息,比如共享服务器3为主机3 和主机4服务,那么共享服务器3记录的内存页1的数据版本关系对应主机1,内存页2的数据版本关系对应主机2,具体实现中,还可根据主机数量对共享缓冲池进行存储空间的划分,比如存储空间1用于存储主机1的内存页,存储空间2用于存储主机2的内存页,本技术不作具体限定。
113.s440:备机200向共享服务器300获取数据版本关系。
114.应理解,步骤s440~步骤s450可发生在主备复制或者备机故障转移的场景下。具体实现中,备机200可向共享服务器300发送数据版本关系的获取请求,如果备机200需要恢复内存页1的最新版本,那么该获取请求中可携带内存页1的标识。共享缓冲池310响应于该获取请求,通过rdma的方式将数据版本关系写入备机200中,如果共享缓冲池310部署于备机200上,即共享服务器300与备机200是同一台服务器,那么共享缓冲池310还可通过dma 的方式将数据版本关系写入备机200的缓冲池中。
115.s450:备机根据数据版本关系获取第一版本数据和第一日志。
116.在一种可能的实施例中,备机可先根据数据版本关系,先确定备机的文件盘或者缓冲池中是否已存在第一版本数据和第一日志,如果备机的文件盘或者缓冲池中已存在该第一版本数据,且缓冲池或者日志盘中已存在该第一日志,备机可执行步骤s460进行日志回放;如果备机的文件盘或者缓冲池中已存在该第一版本数据,但是缓冲池或者日志盘中不存在该第一日志,备机可向主机100发送日志获取请求或者等待主机100传输第一日志,然后再进行日志回放,进一步提高日志回放的准确性。
117.在一种可能的实施例中,备机确定备机的文件盘或者缓冲池中没有第一版本数据的情况下,备机200可向共享缓冲池310发送获取请求,共享缓冲池310响应于该获取请求,通过 rdma的方式将第一版本数据写入备机200中,如果共享缓冲池310部署于备机200上,即共享服务器300与备机200是同一台服务器,那么共享缓冲池310还可通过dma的方式将第一版本数据写入备机200的缓冲池中。
118.在一种可能的实施例中,共享服务器向备机发送第一版本数据时,可将校验码添加于第一版本数据的末尾,该校验码用于供备机确定接收到的第一版本数据是否完整。应理解,在主备复制的场景中,备机不断从共享服务器中获取内存页,结合主机发送的日志进行日志回放,实现主备复制,如果共享服务器将第一版本数据写入备机的过程中,主机发生了故障,备机在进行故障恢复时,如果备机确定其缓冲池中存在第一版本数据,可再通过校验码进一步确认该第一版本数据是否完整,如果数据不完整,备机200可向共享服务器300
发送获取请求,从而避免由于第一版本数据不完整导致日志回放失败情况的发生;如果数据完整,备机200可执行步骤s460。应理解,上述校验码用于举例说明,共享服务器和备机之间还可通过其他方式确保数据通信的完整,比如通过完成队列实现,该完成队列包含了工作队列中已完成的工作请求,根据队列中的完成情况确定第一版本数据是否完整。
119.s460:备机根据第一版本数据和第一日志恢复出第二版本数据。
120.具体实现中,如果第一版本数据和第二版本数据是相邻版本的数据,备机可根据第一版本数据和第一日志恢复出第二版本数据。
121.如果第一版本数据和第二版本数据之间存在一个或者多个版本的数据,比如第一版本和第二版本之间还存在第三版本,第一版本和第三版本相邻,第三版本和第二版本相邻,第二日志用于标识第三版本相对于第一版本变更的操作过程,第三日志用于标识第二版本相对于第三版本变更的操作过程,那么根据数据版本关系,可先根据第一版本数据和第二日志在备机中恢复出第三版本数据,再根据第三版本数据和第三日志在备机中恢复第二版本数据。
122.如果第一版本数据和第二版本数据之间没有版本差距,即第一版本数据就是第二版本数据,共享缓冲池中存储的第一版本数据就是该内存页在主机中的最新版本,那么备机进行主备复制或者故障转移,以及主机进行故障恢复时,可以无需日志回放,从共享服务器300获取第一版本数据后即可完成本次数据恢复,使得故障转移效率、故障恢复效率以及主备复制效率得到极大提升。
123.以图1所示的应用场景为例,假设主机100对内存页1的v1版本进行修改后获得了日志logv2和内存页1的v2版本,对内存页1的v2版本进行修改后获得了日志logv3和内存页1的v3版本,那么使用本技术提供的数据处理方法,主机100可将日志logv2和日志logv3发送给备机200,并将内存页1的v3版本写入共享缓冲池310,如果此时主机100 发生故障,需要备机200进行故障转移时,备机200可先从共享缓冲池310获取得到内存页 1的数据版本关系,获得内存页1的恢复点为v3版本,且终点也为v3版本,二者之间的版本差距为0,表示本次故障转移无需日志回放,接下来备机200可先确定本机上没有v3版本的内存页1之后,从共享缓冲池310获取该v3版本的内存页1,完成本次故障转移,使得故障转移的效率大大提升,同理,也可提高主备复制的效率。应理解,上述举例仅用于说明,并不能构成具体限定。
124.s470:主机100从共享服务器300获取数据版本关系,并根据数据版本关系获取第一版本数据和第一日志。应理解,步骤s470~步骤s480发生在主机100故障恢复的场景下,主机 100从共享服务器300获取数据版本关系以及第一版本数据的过程可参考步骤s440及其可选步骤,这里不重复赘述。
125.可以理解的,主机100发生故障后,缓存中的内存页将会丢失,而已经写入文件盘和日志盘的数据仍将保留,因此,主机100故障恢复的场景下,主机100可先确定主机的文件盘中是否存储有第一版本数据,如果不存在,可从共享服务器300中获取该第一版本数据,然后再从日志盘中获取第一日志。
126.s480:主机100根据第一版本数据和第一日志恢复出第二版本数据。该步骤可参考前述步骤s450及其可选步骤,这里不重复赘述。
127.下面结合具体的应用场景,对本技术提供的数据处理方法进行解释说明。
128.假设在一应用场景中,本技术提供的数据库系统如图6所示,该数据库系统包括主机1、备机1以及共享服务器1,其中,主机1包括缓冲池1、日志盘1和文件盘1,备机1包括缓冲池2、日志盘2和文件盘2,共享服务器包括共享缓冲池1。备机1先对主机1进行主备复制,主机1生成v5版本的内存页1之后发生了故障,并且暂时无法重启,备机1进行故障转移之后,主机1重启成功开始数据恢复。
129.在该应用场景中,本技术提供的数据处理方法包括以下步骤1~步骤11,其中,步骤1~步骤4是主备复制的场景,步骤5~步骤8是备机故障转移的场景,步骤9~步骤11是主机故障恢复的场景,下面结合图6,对上述各个步骤进行详细解释。
130.步骤1、主机1将v1版本的内存页1修改为v2版本的内存页1,并将内存页1的v2 版本写入共享缓冲池1,并将当前内存页1的最新版本的信息写入共享缓冲池1。该步骤可参考前述内容的步骤s410~步骤s420,这里不重复赘述。
131.应理解,图6以在步骤1时,最新版本的信息为v3为例进行了说明,简单来说,主机1 将内存页1的v2版本拷贝至用于rdma的缓存之后,主机1已将内存页1修改为v3版本,因此主机1执行rdma步骤将v2版本的内存页1写入共享缓冲池1的同时,将内存页1的最新版本为v3的信息也一同发送至共享缓冲池。
132.步骤2、共享服务器1根据接收到的v2版本的内存页1以及最新版本为v3的信息,基于此记录或者更新内存页1的数据版本关系,具体可通过链表对共享缓冲池中的内存页进行更新,将历史版本的内存页1从共享缓冲池中删除,然后对内存页1的恢复点和终点进行更新。该步骤未描述的内容可参考前述步骤s430,这里不重复赘述。
133.具体实现中,共享服务器1可先判断共享缓冲池1中是否存在内存页1的历史版本,若存在,则先将该内存页1的历史版本删除,再将v2版本的内存页1放入共享缓冲池中链表的末尾;若不存在,则将v2版本的内存页1放入共享缓冲池中链表的末尾。然后再将内存页1的恢复点指向版本v2,获得恢复点1,将内存页1的终点指向版本v3,获得终点1。
134.步骤3、备机1向共享缓冲池1获取内存页1的数据版本关系,根据该数据版本关系获取v2版本的内存页1和日志logv2,该步骤可参考前述内容中的步骤s440~步骤s450,这里不重复赘述。
135.具体地,备机1可先确定备机1的文件盘或者缓冲池是否存在该内存页1,如果备机1 的文件盘或者缓冲池不存在内存页1,备机1可向共享缓冲池发送获取该内存页1的获取请求,共享缓冲池1向备机返回v2版本的内存页1;如果备机1的文件盘或者缓冲池存在内存页1的v2版本,备机1可进一步确定该v2版本的内存页1是否完整,具体可通过校验码认证的方式确认,参考前述步骤s450将其可选实施方式,这里不重复赘述,如果不完整,可向共享缓冲池获取该v2版本的内存页1,如果完整,可执行步骤4进行日志回放。应理解,如果备机1还未接收到主机1发送的日志logv2,备机1可向主机发送获取请求,或者等待接收到主机1发送的日志logv2之后再执行步骤4。
136.步骤4、备机1基于数据版本关系,根据步骤3获得的v2版本的内存页1,回放日志logv3 获得当前最新版本的内存页v3,从而达到备机1同步主机1中的内存页的目的,实现主备复制。该步骤未描述的内容可参考前述步骤s460,这里不重复赘述。
137.值得注意的是,主机1生成一个新的日志之后,将会同步传输给备机1,传输步骤可以是在步骤1~步骤4之间任意时刻发生,本技术对此不做限定。
138.步骤5、主机1将v3版本的内存页1修改为v4版本,并将v4版本的内存页1写入共享缓冲池1。该步骤未描述的内容可参考前述步骤s410~步骤s420以及步骤1,这里不重复赘述。
139.应理解,图6以在步骤5时,最新版本的信息为v5为例进行了说明,简单来说,主机1 将内存页1的v4版本拷贝至用于rdma的缓存之后,主机1已将内存页1修改为v5版本,因此主机1执行rdma步骤将v4版本的内存页1写入共享缓冲池1的同时,将内存页1的最新版本为v5的信息也一同发送至共享缓冲池。
140.步骤6、共享服务器1根据接收到的v4版本的内存页1以及最新版本为v5的信息,更新内存页1的数据版本关系,具体可通过链表对共享缓冲池中的内存页进行更新,将历史版本的内存页1从共享缓冲池中删除(删除步骤1接收到的v2版本的内存页1,将新接收到的 v4版本的内存页存储于链表末尾),然后对内存页1的恢复点和终点进行更新。该步骤未描述的内容可参考前述步骤s430和步骤2,这里不重复赘述。
141.具体地,共享服务器1可先判断共享缓冲池1中是否存在内存页1的历史版本,由于步骤1接收到的v2版本的内存页1,因此共享服务器1先将v2版本的内存页1删除,再将,4 版本的内存页1放入共享缓冲池中链表的末尾。然后再将内存页1的恢复点由版本v2指向版本v4,获得恢复点2,将内存页1的终点由版本v3指向版本v5,获得终点2。
142.步骤7、备机1接收到主机1故障且暂时无法恢复的消息,开始故障转移,向共享缓冲池1获取内存页1的数据版本关系,根据该数据版本关系获取v4版本的内存页1和日志 logv4,该步骤可参考前述内容的步骤s440~步骤s450以及步骤3,这里不重复赘述。
143.步骤8、备机1根据内存页1的恢复点2和终点2之间的版本差距,即v4版本和v5版本之间的差距,确定本次日志回放所需的有效日志为logv5,然后根据步骤7获得的v4版本的内存页1,回放有效日志logv5获得当前最新版本的内存页v5,从而达到备机1故障转移的目的。该步骤可参考前述内容的步骤s460及步骤4,这里不重复赘述。
144.步骤9、主机1接收到故障恢复的命令后,向共享缓冲池1获取数据版本关系,并根据该数据版本关系从本地文件盘或者共享服务器1中获取v4版本的内存页1,从本地日志盘获取日志logv5。该步骤可参考前述内容中的步骤s470、步骤3以及步骤7,这里不重复赘述。
145.步骤10、主机1根据数据版本关系中记载的恢复依赖关系,然后根据步骤9获得的v4 版本的内存页1,回放日志logv5获得当前最新版本的内存页v5,从而达到主机故障恢复的目的。该步骤未描述的内容可参考前述步骤s480、步骤4以及步骤8,这里不重复赘述。
146.综上可知,使用本技术提供数据处理方法,主机可通过网络将修改后的内存页写入共享服务器的共享缓冲池中,降低了主机持久化存储内存页所消耗的资源,使得主机将内存页进行持久化存储的频率得到提升,从而降低了数据恢复的过程所需的日志回放次数,个别场景甚至不需要进行日志回放操作,直接从共享服务器中获取最新版本的内存页,提升日志回放和数据恢复的效率,进而使得数据库系统主机故障恢复、备机故障转移以及主备复制的效率均得到提升。
147.值得说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本技术所必须的。
148.本领域的技术人员根据以上描述的内容,能够想到的其他合理的步骤组合,也属于本技术的保护范围内。其次,本领域技术人员也应该熟悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本技术所必须的。
149.上文中结合图1至图6,详细描述了根据本实施例所提供的数据处理的方法,下面将结合图7至图10,描述根据本实施例所提供的数据处理的设备和装置。
150.图7是本技术提供的一种主机100的结构示意图。该主机100包括发送单元710、获取单元720以及恢复单元730。
151.发送单元710用于主机向共享服务器发送第一版本数据和当前最新版本的信息,其中,第二版本数据为当前时刻主机中最新的数据,当前最新版本的信息包括第二版本的信息,共享服务器与主机和备机相连,主机用于接收对数据库系统的读写请求,备机为数据库系统中用于备份数据的设备。
152.发送单元710还用于向备机发送第一日志,第一日志用于标识第二版本相对于第一版本变更的操作过程,第一版本早于第二版本。
153.可选地,主机100还包括获取单元720和恢复单元730,其中,获取单元720用于获取共享服务器记录的数据版本关系,数据版本关系用于记录不同版本的数据的恢复依赖关系,数据版本关系是共享服务器根据主机发送的第一版本数据和当前最新版本的信息获得的;获取单元720用于根据数据版本关系获取第一版本数据和第一日志;恢复单元730用于根据第一版本数据和第一日志在主机中恢复第二版本数据。
154.可选地,发送单元710用于通过远程直接内存访问rdma方法将第一版本数据写入共享服务器,向共享服务器发送当前最新版本的信息。
155.可选地,第一版本早于第二版本包括:第一版本是与第二版本相邻的版本。
156.可选地,第一版本早于第二版本包括:第二版本与第三版本相邻,第三版本与第一版本相邻;第一日志包括第二日志和第三日志,其中,第二日志用于标识第三版本相对于第一版本变更的操作过程,第三日志用于标识第二版本相对于第三版本变更的操作过程;恢复单元用于根据第一版本数据和第二日志在主机中恢复第三版本数据;恢复单元用于根据第三版本数据和第三日志在主机中恢复第二版本数据。
157.综上可知,本技术提供的主机可通过网络将修改后的内存页写入共享服务器的共享缓冲池中,降低了主机持久化存储内存页所消耗的资源,使得主机将内存页进行持久化存储的频率得到提升,从而降低了数据恢复的过程所需的日志回放次数,个别场景甚至不需要进行日志回放操作,直接从共享服务器中获取最新版本的内存页,提升日志回放和数据恢复的效率,进而使得数据库系统主机故障恢复、备机故障转移以及主备复制的效率均得到提升。
158.应理解的是,本实施例的主机可以通过专用集成电路(application-specific integrated circuit,asic)实现,或可编程逻辑器件(programmable logic device,pld)实现,上述pld可以是复杂程序逻辑器件(complex programmable logical device,cpld),现场可编程门阵列 (field-programmable gate array,fpga),通用阵列逻辑(generic array logic,gal)或其任意组合。也可以通过软件实现图3所示的数据处理方法时,主机及其各个模块也可以为软件模块。
159.根据本技术实施例的主机100可对应于执行本实施例中描述的方法,并且主机100
中的各个单元的上述和其它操作和/或功能分别为了实现图2至图6中的各个方法的相应流程,为了简洁,在此不再赘述。
160.图8是本技术提供的一种共享服务器300的结构示意图。该共享服务器300接收单元810、生成单元820以及发送单元830。
161.接收单元810用于接收主机发送的第一版本数据和当前最新版本的信息,其中,第二版本数据为当前时刻主机中最新的数据,当前最新版本的信息包括第二版本的信息,共享服务器与主机和备机相连,主机用于接收对数据库系统的读写请求,备机为数据库系统中用于备份数据的设备。
162.生成单元820,用于根据第一版本数据和当前最新版本的信息生成数据版本关系,数据版本关系用于记录不同版本的数据的恢复依赖关系。
163.发送单元830,用于向备机发送数据版本关系。
164.可选地,接收单元810还用于接收备机发送的第一版本数据的获取请求,其中,第一版本数据的获取请求时备机根据数据版本关系,确定备机存储的数据版本早于第一版本后生成的;发送单元830还用于向备机发送第一版本数据。
165.可选地,发送单元830用于向备机发送第一版本数据和校验码,校验码位于第一版本数据的末尾,校验码用于供备机确定接收到的第一版本数据是完整数据。
166.可选地,共享服务器300还包括删除单元840,删除单元840用于存储第一版本数据,并删除数据版本早于第一版本的数据。
167.可选地,删除单元840还用于在存储的数据量达到阈值的情况下,将最早接收到的数据删除。
168.综上可知,本技术提供的共享服务器可通过网络接收并存储主机发送的内存页,降低了主机持久化存储内存页所消耗的资源,使得主机将内存页进行持久化存储的频率得到提升,从而降低了数据恢复的过程所需的日志回放次数,个别场景甚至不需要进行日志回放操作,直接从共享服务器中获取最新版本的内存页,提升日志回放和数据恢复的效率,进而使得数据库系统主机故障恢复、备机故障转移以及主备复制的效率均得到提升。
169.应理解的是,本实施例的主机可以通过专用集成电路(asic)实现,或可编程逻辑器件 (pld)实现,上述pld可以是复杂程序逻辑器件(cpld),现场可编程门阵列(fpga),通用阵列逻辑(gal)或其任意组合。也可以通过软件实现图3所示的数据处理方法时,主机及其各个模块也可以为软件模块。
170.根据本技术实施例的共享服务器300可对应于执行本实施例中描述的方法,并且共享服务器300中的各个单元的上述和其它操作和/或功能分别为了实现图2至图6中的各个方法的相应流程,为了简洁,在此不再赘述。
171.图9是本技术提供的一种备机200。该备机200包括获取单元910以及恢复单元920。
172.获取单元910用于获取共享服务器记录的数据版本关系,数据版本关系用于记录不同版本的数据的恢复依赖关系,备机为数据库系统中用于备份数据的设备,共享服务器与备机和主机相连,主机用于接收对数据库系统的读写请求;
173.获取单元910用于根据数据版本关系获取第一版本数据和第一日志,其中,第二版本数据为当前时刻主机中最新的数据,第一日志用于标识第二版本相对于第一版本变更的操作过程,第一版本早于第二版本;
174.恢复单元920用于根据第一版本数据和第一日志在备机中恢复第二版本数据。
175.可选地,第一版本早于第二版本包括:第一版本是与第二版本相邻的版本。
176.可选地,第一版本早于第二版本包括:第二版本与第三版本相邻,第三版本与第一版本相邻;第一日志包括第二日志和第三日志,其中,第二日志用于标识第三版本相对于第一版本变更的操作过程,第三日志用于标识第二版本相对于第三版本变更的操作过程;恢复单元 920用于根据第一版本数据和第二日志在备机中恢复第三版本数据;恢复单元920用于根据第三版本数据和第三日志在备机中恢复第二版本数据。
177.可选地,获取单元910用于根据数据版本关系,确定备机存储的数据版本早于第一版本;获取单元910用于向共享服务器获取第一版本数据,备机接收共享服务器发送的第一日志。
178.综上可知,本技术提供的备机可在主机通过网络将内存页写入共享服务器进行持久化存储以后,从共享服务器获取内存页进行日志回放,由于主机通过共享服务器进行持久化存储内存页,使得主机持久化存储内存页所消耗的资源降低,进而使得主机将内存页进行持久化存储的频率得到提升,从而降低了数据恢复的过程所需的日志回放次数,个别场景甚至不需要进行日志回放操作,直接从共享服务器中获取最新版本的内存页,提升日志回放和数据恢复的效率,进而使得数据库系统主机故障恢复、备机故障转移以及主备复制的效率均得到提升。
179.应理解的是,本实施例的主机可以通过专用集成电路(asic)实现,或可编程逻辑器件 (pld)实现,上述pld可以是复杂程序逻辑器件(cpld),现场可编程门阵列(fpga),通用阵列逻辑(gal)或其任意组合。也可以通过软件实现图3所示的数据处理方法时,主机及其各个模块也可以为软件模块。
180.根据本技术实施例的备机200可对应于执行本实施例中描述的方法,并且备机200中的各个单元的上述和其它操作和/或功能分别为了实现图2至图6中的各个方法的相应流程,为了简洁,在此不再赘述。
181.图10为本技术实施例提供的一种数据处理的设备1000的结构示意图。其中,数据处理的设备1000可以是前述内容中的主机、备机或者共享服务器。如图10所示,数据处理的设备1000包括:处理器1010、通信接口1020以及存储器1030。其中,处理器1010、通信接口1020以及存储器1030可以通过内部总线1040相互连接,也可通过无线传输等其他手段实现通信。本技术实施例以通过总线1040连接为例,总线1040可以是外设部件互连标准 (peripheral component interconnect express,pcie)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。总线1040可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
182.需要说明的是,本实施例可以是通用的物理服务器实现的,例如,物理服务器,如x106 服务器等,也可以是基于通用的物理服务器结合网络功能虚拟化(network functionsvirtualization,nfv)技术实现的虚拟机(virtual machine,vm)实现的,虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。还可以是多个上述物理服务器或者多个上述虚拟机组成的服务器集群实现的,本技术不作具体限定。
183.处理器1010可以由至少一个通用处理器构成,例如中央处理器(central processing unit, cpu),或者cpu和硬件芯片的组合。上述硬件芯片可以是专用集成电路(asic)、可编程逻辑器件(pld)或其组合。上述pld可以是复杂可编程逻辑器件(cpld)、现场可编程逻辑门阵列(fpga)、通用阵列逻辑(gal)或其任意组合。处理器1010执行各种类型的数字存储指令,例如存储在存储器1030中的软件或者固件程序,它能使电子设备1000提供较宽的多种服务。
184.在数据处理的设备1000是前述内容中的主机的情况下,存储器1030用于存储程序代码,并由处理器1010来控制执行,以执行上述图1-图6实施例中主机的处理步骤。程序代码中可以包括一个或多个软件模块。这一个或多个软件模块可以为图7所示实施例中提供的软件模块(在该实施例中各软件模块,如发送单元,获取单元以及恢复单元)。例如发送单元可用于主机向共享服务器发送第一版本数据和当前最新版本的信息,获取单元可用于获取共享服务器记录的数据版本关系,并根据数据版本关系获取第一版本数据和第一日志,恢复单元可用于根据第一版本数据和第一日志在主机中恢复第二版本数据。具体可用于执行图3实施例中的步骤s410~步骤s420、步骤s470~步骤s480及其可选步骤,图6实施例的步骤1和步骤4 及其可选步骤,还可以用于执行图1-图6实施例描述的其他步骤,这里不再进行赘述。
185.在数据处理的设备1000是前述内容中的共享服务器的情况下,存储器1030用于存储程序代码,并由处理器1010来控制执行,以执行上述图1-图6实施例中共享服务器的处理步骤。程序代码中可以包括一个或多个软件模块。这一个或多个软件模块可以为图8所示实施例中提供的软件模块(在该实施例中各软件模块,如接收单元,生成单元以及发送单元)。例如接收单元用于接收主机发送的第一版本数据和当前最新版本的信息,生成单元用于根据第一版本数据和当前最新版本的信息生成数据版本关系,发送单元用于向备机发送数据版本关系。具体可用于执行图3实施例中的步骤s430及其可选步骤,图6实施例的步骤2和步骤6及其可选步骤,还可以用于执行图1-图6实施例描述的其他步骤,这里不再进行赘述。
186.在数据处理的设备1000是前述内容中的备机的情况下,存储器1030用于存储程序代码,并由处理器1010来控制执行,以执行上述图1-图6实施例中备机的处理步骤。程序代码中可以包括一个或多个软件模块。这一个或多个软件模块可以为图9所示实施例中提供的软件模块(在该实施例中各软件模块,如获取单元以及恢复单元)。例如获取单元用于获取共享服务器记录的数据版本关系,并根据数据版本关系获取第一版本数据和第一日志,恢复单元用于根据第一版本数据和第一日志在备机中恢复第二版本数据。具体可用于执行图3实施例中的步骤s440~步骤s460及其可选步骤,图6实施例的步骤4~步骤5、步骤7~步骤8及其可选步骤,还可以用于执行图1-图6实施例描述的其他步骤,这里不再进行赘述。
187.存储器1030可以包括易失性存储器(volatile memory),例如随机存取存储器(randomaccess memory,ram);存储器1030也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom)、快闪存储器(flash memory)、硬盘(hard diskdrive,hdd)或固态硬盘(solid-state drive,ssd);存储器1030还可以包括上述种类的组合。存储器1030可以存储有程序代码,具体可以包括用于执行图4或图5实施例描述的其他步骤的程序代码,这里不再进行赘述。其中,在数据处理的设备1000是前述内容中的主机和备机的情况下,存储器1030可包括缓冲池、文件盘以及日志盘,在数据处理的设
备1000是前述内容中的共享服务器的情况下,存储器1030可包括共享缓冲池。
188.通信接口1020可以为有线接口(例如以太网接口),可以为内部接口(例如高速串行计算机扩展总线(peripheral component interconnect express,pcie)总线接口)、有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与与其他设备或模块进行通信。
189.应理解,根据本实施例的数据处理的设备1000可对应于本技术实施例中的主机100、共享服务器300和备机200,并可以对应于执行根据图3所示的方法中的相应主体,并且设备 1000中的各个模块的上述和其它操作和/或功能分别为了实现图2至图6中的各个方法的相应流程,为了简洁,在此不再赘述。
190.需要说明的,图10仅仅是本技术实施例的一种可能的实现方式,实际应用中,数据处理的设备1000还可以包括更多或更少的部件,这里不作限制。关于本技术实施例中未示出或未描述的内容,可参见前述图1-图6实施例中的相关阐述,这里不再赘述。
191.上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括至少一个计算机指令。在计算机上加载或执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl)) 或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含至少一个可用介质集合的服务器、数据中心等数据存储节点。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质,例如,高密度数字视频光盘(digital video disc,dvd)、或者半导体介质。半导体介质可以是ssd。
192.以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献