掌桥专利:专业的专利平台
掌桥专利
首页

数据存储方法以及装置

文献发布时间:2023-06-19 12:19:35


数据存储方法以及装置

技术领域

本说明书实施例涉及计算机技术领域,特别涉及一种数据存储方法。本说明书一个或者多个实施例同时涉及一种数据存储装置,一种计算设备,以及一种计算机可读存储介质。

背景技术

随着运营商用户规模不断扩大、企业平台的不断扩容、电子商务平台和云平台的兴起,其数据库每秒产生的查询、更新等操作数量也越来越大。业界一般通过搭建多副本的主备复制集群来实现数据库的高可用,由于单机物理硬件的性能存在上限,也会采用基于外部中间件进行分库分表提升数据库的可扩展性,但对于数据的查询与更新,除非发生主库故障,备库的资源会长期处于空置状态,使得备库资源使用率极低,也无法保证节点容灾后的数据一致性。

因此,亟需一种可以解决上述问题的数据存储方法。

发明内容

有鉴于此,本说明书施例提供了一种数据存储方法。本说明书一个或者多个实施例同时涉及一种数据存储装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。

根据本说明书实施例的第一方面,提供了一种数据存储方法,包括:

接收用户发送的数据存储请求,并基于所述数据存储请求创建第一类型的数据库集群以及第二类型的数据库集群,

其中,所述第一类型的数据库集群中包括多个存储数据库,所述第二类型的数据库集群中包括至少两个存储数据库和至少一个日志数据库;

将所述数据存储请求中携带的存储数据存储至所述第一类型的数据库集群中的多个存储数据库,或者将所述存储数据存储至所述第二类型的数据库集群中的至少两个存储数据库和至少一个日志数据库。

可选的,所述将所述存储数据存储至所述第一类型的数据库集群中的多个存储数据库之前,还包括:

根据所述第一类型的数据库集群中的所述存储数据库的数量,为所述存储数据库划分为一个第一数据分区和至少一个第二数据分区,

其中,所述第一数据分区与所述第二数据分区的数量与所述第一类型的数据库集群中的所述存储数据库的数量相同。

可选的,所述将所述存储数据存储至所述第二类型的数据库集群中的至少两个存储数据库和至少一个日志数据库之前,还包括:

根据所述第二类型的数据库集群中的所述存储数据库的数量,为所述存储数据库以及所述日志数据库划分为一个第一数据分区和至少一个第二数据分区,

其中,所述第一数据分区与所述第二数据分区的数量与所述第二类型的数据库集群中的所述存储数据库的数量相同。

可选的,所述将所述存储数据存储至所述第一类型的数据库集群中的多个存储数据库,包括:

将所述存储数据存储至所述第一类型的数据库集群中所述存储数据库的第一数据分区;以及

将所述存储数据备份存储至与存储所述第一数据分区的存储数据库不同的所述存储数据库的第二数据分区。

可选的,所述将所述存储数据存储至所述第二类型的数据库集群中的至少两个存储数据库和至少一个日志数据库,包括:

将所述存储数据存放至所述第二类型数据库集群中的所述存储数据库的第一数据分区;以及

将所述存储数据备份存储至与存储所述第一数据分区的存储数据库不同的所述存储数据库的第二数据分区以及所述日志数据库的第二数据分区。

可选的,所述将所述存储数据存储至所述第一类型的数据库集群中的所述存储数据库的第一数据分区,包括:

将所述存储数据按照预设提交方式提交存储至所述存储数据库的第一数据分区的第一日志文件。

可选的,所述将所述存储数据按照预设提交方式提交存储至所述存储数据库的第一数据分区的第一日志文件之后,还包括:

将所述存储数据通过分区通道存储至与存储所述第一数据分区的存储数据库不同的所述存储数据库的第二日志文件。

可选的,所述将所述存储数据按照预设提交方式提交存储至所述存储数据库的第一数据分区的第一日志文件之前,还包括:

将所述存储数据进行投票处理,基于处理结果将存储数据存储至所述存储数据库的所述第一数据分区。

根据本说明书实施例的第二方面,提供了一种数据存储装置,包括:

接收创建模块,被配置为接收用户发送的针对存储数据的数据存储请求,并基于所述数据存储请求创建第一类型的数据库集群以及第二类型的数据库集群,

其中,所述第一类型的数据库集群中包括多个存储数据库,所述第二类型的数据库集群中包括至少两个存储数据库和至少一个日志数据库;

存储模块,被配置为将所述数据存储请求中携带的存储数据存储至所述第一类型的数据库集群中的多个存储数据库,或者将所述存储数据存储至所述第二类型的数据库集群中的至少两个存储数据库和至少一个日志数据库。

根据本说明书实施例的第三方面,提供了一种数据库,包括:

客户端,存储节点;

所述客户端,用于接收用户输入的存储指令;

所述存储节点,用于基于所述存储指令确定数据存储请求,并基于所述数据存储请求创建第一类型的数据库集群以及第二类型的数据库集群,其中,所述第一类型的数据库集群中包括多个存储数据库,所述第二类型的数据库集群中包括至少两个存储数据库和至少一个日志数据库;将所述数据存储请求中携带的存储数据存储至所述第一类型的数据库集群中的多个存储数据库,或者将所述存储数据存储至所述第二类型的数据库集群中的至少两个存储数据库和至少一个日志数据库;将存储结果返回所述客户端。

根据本说明书实施例的第四方面,提供了一种计算设备,包括:

存储器和处理器;

所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,其中,所述处理器执行所述计算机可执行指令时实现所述数据存储方法的步骤。

根据本说明书实施例的第五方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现任意一项所述数据存储方法的步骤。

本说明书一个实施例实现了数据存储方法及装置,其中,所述数据存储方法包括接收用户发送的数据存储请求,并基于所述数据存储请求创建第一类型的数据库集群以及第二类型的数据库集群,其中,所述第一类型的数据库集群中包括多个存储数据库,所述第二类型的数据库集群中包括至少两个存储数据库和至少一个日志数据库;将所述数据存储请求中携带的存储数据存储至所述第一类型的数据库集群中的多个存储数据库,或者将所述存储数据存储至所述第二类型的数据库集群中的至少两个存储数据库和至少一个日志数据库。

所述数据存储方法通过创建数据库集群,在多个数据库集群的存储数据库中实现多点写入数据,使得所有的数据库均可承担数据读写任务,以达到资源利用率的最大化,并且通过将存储数据备份存储至其他存储数据库和日志数据库中,可保证节点容灾后的数据一致性。

附图说明

图1是本说明书一个实施例提供的一种数据存储方法应用于数据库存储数据的架构图;

图2是本说明书一个实施例提供的一种数据存储方法的流程图;

图3是本说明书一个实施例提供的一种数据存储方法的事务提交流程示意图;

图4是本说明书一个实施例提供的一种数据存储方法在存储数据库之间存储数据的流程示意图;

图5是本说明是一个实施例提供的一种数据存储方法在存储数据库与日志数据库之间存储数据的流程示意图;

图6是本说明书一个实施例提供的一种数据存储装置的结构示意图;

图7是本说明书一个实施例提供的一种计算设备的结构框图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。

在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本说明书一个或多个实施例涉及的名词术语进行解释。

MySQL:是流行的关系型数据库管理系统之一。

Paxos协议(即分布式一致性协议):是莱斯利˙兰伯特提出的一种基于消息传递的一致性算法,解决的问题是一个分布式系统如何就某个值(决议)达成一致。

Quorum(即多数派认定):分布式一致性系统服务端的服务器集合,其服务器的个数通常为奇数;每个服务器都维护着分布式一致性系统的内存数据库以及持久化存储的事务日志与快照数据。

主库:在一个多数派认定中只有一个且为该多数派认定中至少一半以上的服务器选举出来的主服务器,负责所有写等改变一致性系统状态的事务操作的提议以及应其请求,同步数据给其它服务器。

备库:在一个多数派认定中的从服务器,直接响应用户的读等非事务操作,将用户的写等事务操作转发给主库处理,接收来自主库的提议,相应更新本地事务日志与快照,以及修改内存数据库状态。

需要说明的是,MySQL关系型数据库原有的数据同步是IO线程、SQL线程、Worker线程的组合,而本说明书实施例提供的方法是基于MySQL关系型数据库的原有框架下,采用Paxos一致性协议替代了IO线程,并对接到SQL线程、Worker线程的体系中,进而创建的一体化数据库集群保证存储数据的多点写入,以解决存储节点容灾切换后可能存在数据不一致的问题,不仅能够兼容原有MySQL关系型数据库的语法和特性,还最大化地兼容原有的运维体系。

在本说明书中,提供了一种数据存储方法,本说明书同时涉及一种数据存储装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。

图1示出了根据本说明书一个实施例提供的一种数据存储方法应用于数据库存储数据的架构图。

具体的,图1中的a表示第一类型的数据库集群,其中,包括多个存储数据库,如图1中的a所示包括三个存储数据库服务器,分别为存储数据库服务器1、存储数据库服务器2、存储数据库服务器3,根据集群中存储数据库服务器的数量,将三个存储数据库服务器分为三个分区,在整个数据库集群中,每个分区中均具有一个主库和两个备库,每个存储数据库服务器均具有一个主库和两个备库,并且每个存储数据库服务器均可在主库所在的分区中进行写入操作;图1中的b表示第二类型的数据库集群,其中,包括至少两个存储数据库以及至少一个日志数据库,如图1中的b所示包括两个存储数据库和一个日志数据库,分别为存储数据库服务器1、存储数据库服务器2、日志数据库服务器3,根据集群中存储数据库服务器的数量,将每个数据库服务器分为两个分区,每个分区中均具有一个主库和一个备库,且在存储数据库服务器1、存储数据库服务器2中可进行写入操作,在日志数据库服务器3中只能进行备份操作,不能进行直接写入操作。

例如,以图1中的a的第一类型的数据库集群中的三个存储数据库为三家分公司为例,三家分公司分别为分公司1、分公司2、分公司3,在分公司1的存储数据库中基于客户端的读写请求,向分公司1存储数据库的主库分区写入数据,并将写入的存储数据存储至分公司2、分公司3存储数据库的备库分区中,以实现在三家分公司的存储数据库均具有写入的存储数据。

例如,以图1中的b的第二类型的数据库集群中的两个存储数据库以及一个日志数据库为两家分公司为例,分别为分公司1、分公司2,在分公司1的存储数据库中基于客户端的读写请求,向分公司1的存储数据库的主库分区写入数据,并将写入的存储数据存储至分公司2存储数据库的备库分区,以及将存储数据的日志文件存储至日志数据库中备份,以实现在存储数据库中均具有写入的存储数据,且在日志数据库中具有写入存储数据的日志文件数据内容。

需要说明的是,本说明书实施例提供的数据存储方法应用于数据库集群架构中,不仅限于第一类型的数据库集群和第二类型的数据库集群中的三个数据库服务器,可以为多个数据库服务器组成的集群,本说明书实施例将以组成集群的最小单元为三个数据库服务器为例对数据存储方法进行详细介绍。

图2示出了本说明书一个实施例提供的一种数据存储方法的流程图,具体包括以下步骤。

步骤202:接收用户发送的数据存储请求,并基于所述数据存储请求创建第一类型的数据库集群以及第二类型的数据库集群,其中,第一类型的数据库集群中包括多个存储数据库,所述第二类型的数据库集群中包括至少两个存储数据库和至少一个日志数据库。

其中,存储数据可以理解为用户向存储数据库中写入的数据,实际应用中,比如,A公司向数据库中写入员工a的员工信息数据b,则存储数据则为员工a的员工信息数据b;数据存储请求可以理解为向存储数据库中请求写入员工信息数据b的请求。

具体实施时,服务器接收用户发送的针对存储数据的数据存储请求,并基于数据存储请求将数据库集群创建为第一类型的数据库集群以及第二类型的数据库集群,其中,第一类型的数据库集群中包括多个存储数据库。实际应用中,第一类型数据库集群中的所有存储数据库均可承担数据写入功能。

以第一类型数据库集群中具有三个存储数据库为例,总公司A有三个分公司a、b、c,总公司A设立于北京,则分公司分别设立在上海、广州、杭州三个地点,现将三个分公司的数据库均设置为存储数据库,可以分别进行数据写入,则三个分公司的存储数据库组成的为第一类型的数据库集群。

其中,第二类型的数据库集群包括至少两个存储数据库和至少一个日志数据库,第二类型的数据库集群中的存储数据库承担数据写入功能,日志数据库则承担备份存储日志文件的功能,客户端并不能在日志数据库中写入数据进行存储。

例如,总公司A有两个分公司a、b,总公司A设立于北京,则分公司分别设立在上海、广州两个地点,现将两个分公司a和b的数据库设置为存储数据库,承担数据写入的功能,为了实现数据的多点写入,保证数据的一致性设置日志数据库,实现日志数据库则存储分公司a和b执行写入数据的日志文件,则两个分公司的存储数据库以及日志数据库组成的集群为第二类型的数据库集群。

具体实施时,在服务器接收到用户发送的针对存储数据的数据存储请求,根据数据存储请求为用户划分符合用户需求的数据库集群,基于不同的数据库集群实现数据的多点写入,保证在多节点容灾的情况下,数据的一致性。

步骤204:将所述数据存储请求中携带的存储数据存储至所述第一类型的数据库集群中的多个存储数据库,或者将所述存储数据存储至所述第二类型的数据库集群中的至少两个存储数据库和至少一个日志数据库。

具体实施时,在创建好不同类型的数据库集群之后,将每个数据库集群中的数据库进行分区,以便于后续在分区中写入数据,所述将所述存储数据存储至所述第一类型的数据库集群中的至少两个存储数据库之前,还包括:

根据所述第一类型的数据库集群中的所述存储数据库的数量,为所述存储数据库划分为一个第一数据分区和至少一个第二数据分区,

其中,所述第一数据分区与所述第二数据分区的数量与所述第一类型的数据库集群中的所述存储数据库的数量相同。

其中,第一数据分区可以理解为数据库中的主库分区,即在存储数据库中的主库写入数据;第二数据分区可以理解为数据库中的备库分区,即在存储数据库中的第二数据分区备份在第一数据分区写入的数据;需要说明的是,第一数据分区与第二数据分区的数量和与第一类型的数据库集群中存储数据库的数量相同,比如,第一类型的数据库集群中具有三个存储数据库,那么根据存储数据库的数量将每个存储数据库中将划分三个数据分区,一个为主库分区,两个为备库分区,主库分区负责写入数据,备库分区符合备份存储主库中写入的数据。

本说明书实施例中,通过在第一类型的数据库集群中的主库分区存储数据,并在存储数据库的备份分区中备份存储数据,提供了库表级多点可写的特性,通过在每个数据库节点中设置主库分区,能充分利用每个节点的物理资源,以达到多个存储数据库中存储每一个存储数据库中写入的部分数据,使得每个存储数据库中具有所有存储数据库中的全量数据。

在创建好第二类型的数据库集群之前,按照存储数据库的数量需要将数据库分区以承担写入数据或存储数据的功能,实现将存储数据存储在存储数据库以及日志数据库中,保证在任意一个存储数据库节点具有写入数据的全量数据;具体的,所述将所述存储数据存储至所述第二类型的数据库集群中的至少一个存储数据库和至少一个日志数据库之前,还包括:

根据所述第二类型的数据库集群中的所述存储数据库的数量,为所述存储数据库以及所述日志数据库划分为一个第一数据分区和至少一个第二数据分区,

其中,所述第一数据分区与所述第二数据分区的数量与所述第二类型的数据库集群中的所述存储数据库的数量相同。

其中,第一数据分区可以理解为数据库中承担写入功能的主库分区;第二数据分区可以理解为数据库中承担备份数据功能的备份分区。

具体实施时,根据第二类型的数据库集群中存储数据库的数量,确定将存储数据库以及日志数据库中分为第一数据分区以及第二数据分区,第一数据分区以及第二数据分区的数量和与第二类型的数据库集群中的存储数据库数量相同,比如,第二类型的数据库集群中包括两个存储数据库以及一个日志数据库,则将存储数据库以及日志数据库划分为两个分区,存储数据库中包括两个分区,一个为第一数据分区(即主库分区),一个为第二数据分区(即备库分区),而日志数据库中包括两个第二数据分区(即备库分区),需要说明的是,日志数据库中不承担数据写入功能,则日志数据库的所有分区均为第二数据分区。

本说明书实施例中,通过在第二类型的数据库集群中的存储数据库分主库分区以及备库分区,日志数据库中将所有的分区为备库分区,可实现在主库分区中写入的数据,在所有的数据库中均备份存储在备库分区,使得在每一个存储数据库节点中获得全量数据,也进而可以节省资源。

为了将存储数据存储至各个数据库中,以便于后续可以在数据库集群中的任何一个数据库中快速地获取全量数据,将存储数据在不同的数据库中进行备份存储;具体的,所述将所述存储数据存储至所述第一类型的数据库集群中的多个存储数据库,包括:

将所述存储数据存储至所述第一类型的数据库集群中所述存储数据库的第一数据分区;以及

将所述存储数据备份存储至与存储所述第一数据分区的存储数据库不同的所述存储数据库的第二数据分区。

具体实施时,将存储数据在第一类型的数据库集群的存储数据库中的第一数据分区写入,并将存储数据备份存储至第一类型的数据库集群中与写入存储数据库不同的数据库中的第二数据分区。

例如,某总公司具有三个分公司A、B、C,现三个分公司需要分别录入三个新员工的员工信息a、b、c,则在每个分公司的存储数据库A、B、C的主库分区分别写入员工信息a、b、c,将在存储数据库A的主库分区写入的员工信息a在存储数据库B、C的备库分区中备份存储,将在存储数据库B的主库分区写入的员工信息b在存储数据库A、C的备库分区中备份存储,将在存储数据库C的主库分区写入的员工信息c在存储数据库A、B的备库分区中备份存储,使得在存储数据库A、B、C中,均具有三个新员工的员工信息a、b、c,实现在任意一个分公司的节点损坏的情况下,在其他分公司中可以获取三个分公司的全量数据。

本说明书实施例,通过将存储数据写入一个存储数据库,并将存储数据备份存储至集群中的其他存储数据库,以实现在任何一个存储数据库中具有存储数据的全量数据,以便于后续在各个存储数据库同时承担写入数据,并在其他存储数据库中备份时,实现在某一节点容灾的情况下,仍能获取全量数据。

为了将存储数据存储至第一类型的数据库集群中的存储数据库的第一数据分区,所述将所述存储数据存储至所述第一类型的数据库集群中的所述存储数据库的第一数据分区,包括:

将所述存储数据按照预设提交方式提交存储至所述存储数据库的第一数据分区的第一日志文件。

其中,预设提交方式可以理解为将存储数据写入数据库进行的提交方式,需要说明的是,本说明实施例所提供的数据存储方法是基于MySQL原本的事务提交流程的提交方式为例进行说明的,但不限于此,对此本说明书实施例不做任何限制。

其中,第一日志文件可以理解为基于MySQL的写入语句转换的日志文件,比如,在存储数据库中执行写入操作,则将该操作记录在bin log(即日志文件)中,以便于后续根据日志文件的记录即可确定用户针对数据库中的数据所执行的操作,其中,操作可包括数据写入、数据查询、数据读取等等。

需要说明的是,MySQL原本的事务提交流程包括三个阶段,分别为日志写入阶段、日志刷盘阶段以及事务提交阶段,其中,日志写入阶段收集每个事务产生的日志,并写入到日志文件中;日志刷盘阶段对日志文件调用fsync函数,将文件数据同步到硬盘;事务提交阶段在引擎层进行事务提交。

具体实施时,参见图3,图3示出了本说明书实施例提供的数据存储方法的事务提交流程示意图。需要说明的是,本说明书实施例提供的事务提交流程是改造MySQL原本的事务提交流程。

具体的,在日志写入阶段之前,将每个事务涉及到的库表分区进行组分发,确定对应组在当前节点的角色,分为主库分组以及备库分组;在主库分组写入数据的同时,通过一致性协议模块把收集到的日志文件分别归类到各个主库或备库分组中,对于主库分组,一致性协议会自动同步对应的逻辑日志流到各个备库分组中;在日志刷盘阶段结束后,判断当前组的角色,若为备库分组,说明对应的是通过状态机回放的备库更新类型的日志,可以直接进入提交阶段,否则进入多数派判定阶段进行等待,直到当前组日志在三节点中达成多数派,才允许进入提交阶段,其中,备库更新类型的日志可以确保无论是正常写入的事务还是备库回放的事务,集群中各个节点的日志文件都有全量的数据。

具体实施时,如图3所示,客户端通过主库分组写入数据,将写入的数据通过日志写入阶段(a)备份日志,将日志内容通过协议同步阶段(c)进行日志同步处理,并发送至备库接收刷盘阶段(b),同时将日志内容发送至本地日志刷盘阶段(d)进行处理,将日志内容在主库与备库中进行多数派判定阶段(e),基于日志内容达成多数派,将达成多数派的日志内容进入事务提交阶段(f),在提交成功后向客户端返回成功信息;备库分组通过并行回放主库分组的数据内容,将数据内容备份存储至备库分组,仅需通过日志写入阶段(a)、日志刷盘阶段(b)以及事务提交阶段(f)进行事务提交,其中,基于一致性协议需要将日志内容达成多数派,才能确保数据不会丢失。

本说明书实施例中,通过主库分组中写入的数据内容通过一致性协议的日志复制方式,在满足高可用需求的同时,解决了主备复制数据一致性的问题,实现数据的高可用性以及强一致性。

为了将数据内容达到多数派认定,则在存储数据提交至第一日志文件之前进行投票处理;具体的,所述将所述存储数据按照预设提交方式提交存储至所述存储数据库的第一数据分区的第一日志文件之前,还包括:

将所述存储数据进行投票处理,基于处理结果将存储数据存储至所述存储数据库的所述第一数据分区。

其中,投票处理可以理解为将数据内容进行多数派认定阶段的投票处理,需要说明的是,本说明书提供的将存储数据通过Quorum阶段进行多数派认定,但不限于本说明书实施例中提供的多数派认定方法,可包括所有能实现数据强一致性的方案。

具体实施时,将存储数据基于主库分区与备库分区的投票处理,实现对存储数据内容的多数派认定,以保证数据的强一致性,基于投票的处理结果将存储数据存储至存储数据库的第一数据分区。

本说明书实施例中,通过将在主库分区写入的存储数据进行投票处理,适配多组不同角色的事务提交逻辑,以实现存储数据备份至备库分区中实现强一致性,以保证后续在节点容灾后,获取数据的一致性。

在将存储数据存储至存储数据库的第一日志文件的情况下,还需将存储数据通过分区通道存储至其他存储数据库的第二日志文件,以实现数据的备份;具体的,所述将所述存储数据按照预设提交方式提交存储至所述存储数据库的第一数据分区的第一日志文件之后,还包括:

将所述存储数据通过分区通道存储至与存储所述第一数据分区的存储数据库不同的所述存储数据库的第二日志文件。

其中,分区通道可以理解为Paxos通道,该分区通道属于备库分区的模块中,以实现对数据内容的备份存储,需要说明的是,本说明书实施例中不限于利用该Paxos通道,可包括实现对数据内容备份传输至备库分区的任何传输通道。

其中,第二日志文件可以理解为存储数据库中的备库分区中存储日志内容的日志文件,需要说明的是,第二日志文件可以为中继日志文件(即relay log文件),将第一日志文件中的日志内容拷贝至中继日志文件中,中继日志文件不会回放,即不产生实际数据,占用的存储空间较小,以节省数据资源。

具体实施时,数据库中的备库分区中包括中继日志、分发线程、并行回放线程三个模块,利用分区的多组逻辑日志流映射到原有的MySQL关系型数据库中的bin log以及relay log的两套物理日志流中,在bin log中实现多流归并,在relay log中实现各组分流,在bin log可存储有存储数据库中的全量数据,具体可参见图4,图4示出了本说明书实施例提供的数据存储方法在存储数据库之间存储数据的流程示意图。

图4中的上部分为存储数据库服务器1,包括三个分区,从左向右分别为备库分区、主库分区、备库分区,其中,备库分区中包括中继日志、分发线程以及并行回放线程模块,主库分区中包括组提交模块、日志模块,在主库分区与备库分区之间具有相应的分区通道;图4中的下部分为存储数据库服务器2,与存储数据库服务器1中的模块内容相同;实际应用中,图4以存储数据从存储数据库服务器1中写入,并在存储数据库服务器2中备份为例,具体包括以下步骤。

步骤402:存储数据库服务器的主库分区执行客户端发来的存储数据请求。

步骤404:将存储数据提交并生成日志文件进行存储。

步骤406:通过分区1将存储数据备份存储至存储数据库服务器2的备库分区的中继日志。

步骤408:存储数据库服务器2的备库分区通过分发线程读取并解析中继日志文件。

步骤410:分发线程将解析出的中继日志分发给多个并发回放线程。

步骤412:并发回放线程并行解析和执行各自收到的中继日志,并传输至主库分区的组提交模块。

步骤414:通过组提交模块将存储数据提交事务,并写入日志模块。

需要说明的是,图4中以在存储数据库服务器1中写入存储数据在存储数据库服务器2中备份的过程为例,在存储数据库服务器2中写入存储数据且在存储数据库服务器1中备份的过程可参见上述过程,在此不做过多赘述。

本说明书实施例中,通过在主库分区与备库分区设置分区通道,实现将客户端发送的数据存储请求通过分区通道在主库与另一个存储数据库服务器的备库中备份,以便于后续在所有的存储数据库服务器中均可获取在不同的主库分区中写入的全量数据。

基于客户端的数据存储请求创建的第二类型的数据库集群中,在存储数据库中写入数据请求,在日志数据库中备份日志数据;具体的,所述将所述存储数据存储至所述第二类型的数据库集群中的至少两个存储数据库和至少一个日志数据库,包括:

将所述存储数据存放至所述第二类型数据库集群中的所述存储数据库的第一数据分区;以及

将所述存储数据备份存储至与存储所述第一数据分区的存储数据库不同的所述存储数据库的第二数据分区以及所述日志数据库的第二数据分区。

具体实施时,客户端在存储数据库的主库分区执行数据写入操作,并将存储数据备份存储至与写入存储数据不同的存储数据库的备库分区以及日志数据库中,具体可参见图5,图5示出了本说明书实施例提供的数据存储方法在存储数据库与日志数据库之间存储数据的流程示意图。

图5中上部分表示存储数据库服务器1,可执行数据的写入操作,该存储数据库分为一个主库分区以及两个备库分区,其中,第一个备库分区中包括并行回放线程、分发线程、中继日志-1,第二个备库分区中包括并行回放线程、分发线程、中继日志-2;图5中下部分表示日志数据库服务器3,也可看做数据库集群的日志节点服务器,可执行备份日志数据的操作,日志数据库服务器分为一个主库分区以及两个备库分区,其中,第一个备库分区中包括中继日志-1,第二个备库分区中包括中继日志-2;实际应用中将写入存储数据库的主库分区的存储数据存储至日志文件中,并通过分区通道存储至数据库服务器3的备库分区的中继日志中,具体流程可参见上述实施例中存储流程,在此不做过多赘述。需要说明的是,第二类型的数据库集群中具有不承担写入功能的日志数据库,仅执行备份日志数据存储,实际应用中,为了节省数据资源,可以将数据集群中的某一数据库节点设置为日志数据库节点,同样可以实现节点容灾后的数据一致性。

本说明书实施例中,通过在存储数据库的主库分区中写入的数据在日志数据库中的备份分区中备份存储,以实现在数据库集群中任意一个存储数据库均可获取数据库集群中的全量数据。

与上述方法实施例相对应,本说明书还提供了数据存储装置实施例,图6示出了本说明书一个实施例提供的一种数据存储装置的结构示意图。如图6所示,该装置包括:

接收创建模块602,被配置为接收用户发送的数据存储请求,并基于所述数据存储请求创建第一类型的数据库集群以及第二类型的数据库集群,

其中,所述第一类型的数据库集群中包括多个存储数据库,所述第二类型的数据库集群中包括至少两个存储数据库和至少一个日志数据库;

存储模块604,被配置为将所述数据存储请求中携带的存储数据存储至所述第一类型的数据库集群中的多个存储数据库,或者将所述存储数据存储至所述第二类型的数据库集群中的至少两个存储数据库和至少一个日志数据库。

可选的,所述接收创建模块602,进一步被配置为:

根据所述第一类型的数据库集群中的所述存储数据库的数量,为所述存储数据库划分为一个第一数据分区和至少一个第二数据分区,

其中,所述第一数据分区与所述第二数据分区的数量与所述第一类型的数据库集群中的所述存储数据库的数量相同。

可选的,所述接收创建模块602,进一步被配置为:

根据所述第二类型的数据库集群中的所述存储数据库的数量,为所述存储数据库以及所述日志数据库划分为一个第一数据分区和至少一个第二数据分区,

其中,所述第一数据分区与所述第二数据分区的数量与所述第二类型的数据库集群中的所述存储数据库的数量相同。

可选的,所述存储模块604,进一步被配置为:

将所述存储数据存储至所述第一类型的数据库集群中所述存储数据库的第一数据分区;以及

将所述存储数据备份存储至与存储所述第一数据分区的存储数据库不同的所述存储数据库的第二数据分区。

可选的,所述存储模块604,进一步被配置为:

将所述存储数据存放至所述第二类型数据库集群中的所述存储数据库的第一数据分区;以及

将所述存储数据备份存储至与存储所述第一数据分区的存储数据库不同的所述存储数据库的第二数据分区以及所述日志数据库的第二数据分区。

可选的,所述存储模块604,进一步被配置为:

将所述存储数据按照预设提交方式提交存储至所述存储数据库的第一数据分区的第一日志文件。

可选的,所述存储模块604,进一步被配置为:

将所述存储数据通过分区通道存储至与存储所述第一数据分区的存储数据库不同的所述存储数据库的第二日志文件。

可选的,所述存储模块604,进一步被配置为:

将所述存储数据进行投票处理,基于处理结果将存储数据存储至所述存储数据库的所述第一数据分区。

上述为本实施例的一种数据存储装置的示意性方案。需要说明的是,该数据存储装置的技术方案与上述的数据存储方法的技术方案属于同一构思,数据存储装置的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。

本说明书一实施例还提供一种数据库,包括客户端,存储节点,其中,所述数据库执行时实现所述数据存储方法的步骤。

图7示出了根据本说明书一个实施例提供的一种计算设备700的结构框图。该计算设备700的部件包括但不限于存储器710和处理器720。处理器720与存储器710通过总线730相连接,数据库750用于保存数据。

计算设备700还包括接入设备740,接入设备740使得计算设备700能够经由一个或多个网络760通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备740可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。

在本说明书的一个实施例中,计算设备700的上述部件以及图7中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图7所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备700可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备700还可以是移动式或静止式的服务器。

其中,处理器720用于执行如下计算机可执行指令,其中,所述处理器执行所述计算机可执行指令时实现所述数据存储方法的步骤。

上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据存储方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。

本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述数据存储方法的步骤。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据存储方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

相关技术
  • 数据插入系统、数据控制装置、存储装置、数据插入方法、数据控制方法和数据存储方法
  • 图像数据存储方法及控制装置以及程序、帧数据生成方法及装置以及程序、数据获得方法及装置、描绘方法及装置
技术分类

06120113255840