CN106855869A - 一种实现数据库高可用的方法、装置和系统 - Google Patents
一种实现数据库高可用的方法、装置和系统 Download PDFInfo
- Publication number
- CN106855869A CN106855869A CN201510907368.0A CN201510907368A CN106855869A CN 106855869 A CN106855869 A CN 106855869A CN 201510907368 A CN201510907368 A CN 201510907368A CN 106855869 A CN106855869 A CN 106855869A
- Authority
- CN
- China
- Prior art keywords
- main frame
- data
- itself
- modification information
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本发明实施例公开了一种实现数据库高可用的方法,数据库用于使用至少两个主机来存储数据,所述数据库的数据变更请求用于被发送至一个处于空闲状态的主机;所述方法包括:每个主机在接收到数据变更请求时,基于所述数据变更请求,对自身存储的数据进行变更;将自身的数据变更信息发送至其余各个主机;每个主机在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身存储的数据进行变更。本发明实施例还公开了一种实现数据库高可用的方法、装置和系统。
Description
技术领域
本发明涉及数据库领域,尤其涉及一种实现数据库高可用的方法、装置和系统。
背景技术
目前,数据库市场主要分为三大阵营,包括传统关系数据库(OldSQL)、新型数据库(NewSQL)和非关系型数据库(NoSQL)。从技术角度看,OldSQL的典型特征是行存储和关系型。目前,NewSQL和NoSQL获得了极大的发展,但主要应用在互联网领域,在传统领域的核心系统中,仍以传统关系数据库为主。为了实现数据库核心系统的高性能、高可靠和多数据类型的处理要求,需要实现数据库的高可用性。
目前实现数据库高可用的方案主要有以下两种,第一种是主从方式,第二种是分布式集群方式。
主从方式是最常用的提高数据库读取性能的方式,特别是读访问请求远远大于写访问请求的应用环境中,因此提高读的可用性是首当其中的;对于主从方式,主机只有一个,而从机的个数大于等于1;所有的写操作都通过同一台主机实现,然后该主机会把该写操作复制到其他从机上,读操作可以通过访问任意一个从机实现;在主机出现故障之后,从机自动提升为主机,并继续提供服务。
图1为现有技术中利用主从方式实现数据库高可用的架构示意图,如图1所示,该架构包括一个主机和三个从机,该主机记为主机A,这三个从机分别记为从机A、从机B和从机C;示例性地,当从机C出现故障时,数据库的读写操作都不会中断,在从机C恢复正常后,从主机A自动同步丢失的数据,进而可以重新工作;当主机A出现故障时,自动将一个从机提升为主机,之后继续提供服务。
利用主从方式实现数据库高可用的方案中存在以下缺点:在写操作请求比较频繁时,主机接收写操作请求的性能容易出现瓶颈。
在分布式集群方式实现数据库高可用的方案中,多个主机协同工作,每个主机运行一个或几个服务,各个主机运行的服务互不相同,每个主机为运行的每个服务定义一个或多个备用主机,当每个主机出现故障时,运行在其上的服务就可以被对应的备用主机接管。
图2为现有技术中利用分布式集群方式实现数据库高可用的架构示意图,如图2所示,该架构包括三个主机,这三个主机分别记为主机a、主机b和主机c,每个主机各自运行一个服务,主机a是主机b的备用主机,主机b是主机c的备用主机,主机c是主机a的备用主机;当主机a、主机b或主机c出现故障时,可以在相应的备用主机上运行服务,当出现故障的主机恢复运行时,可以从备用主机反向同步相应数据。
利用分布式集群方式实现数据库高可用的方案中存在以下缺点:在接收到写访问请求时,最多只能在两个主机上实现相应的写操作,如此,降低了写操作的可用性。
发明内容
为解决上述技术问题,本发明实施例期望提供一种实现数据库高可用的方法、装置和系统,采用多份数据冗余来提高数据存储的安全性;同时还都能够对外提供读写服务。
本发明的技术方案是这样实现的:
本发明实施例提供了一种实现数据库高可用的方法,数据库用于使用至少两个主机来存储数据,所述数据库的数据变更请求用于被发送至一个处于空闲状态的主机;所述方法包括:
每个主机在接收到数据变更请求时,基于所述数据变更请求,对自身存储的数据进行变更;将自身的数据变更信息发送至其余各个主机;
每个主机在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身存储的数据进行变更。
上述方案中,所述将自身的数据变更信息发送至其余各个主机包括:将自身的数据变更信息通过广播发送至其余各个主机。
上述方案中,每个主机与一个对应的分布式缓存节点形成通信连接;
所述将自身的数据变更信息发送至其余各个主机包括:将自身的数据变更信息上传至与自身形成通信连接的分布式缓存节点中,将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点;与其余每个主机形成通信连接的分布式缓存节点将接收到的数据变更信息发送至对应的主机。
上述方案中,所述将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点,包括:利用消息中间件将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点。
上述方案中,每个主机与一个对应的分布式缓存节点形成通信连接;
在与上传自身的数据变更信息的主机对应的分布式缓存节点接收数据变更信息之后,所述方法还包括:将对应的主机标记为已同步主机,将其余每个主机标记为未同步主机;
在每个主机基于所接收到的数据变更信息,对自身存储的数据进行变更后,所述方法还包括:每个主机向对应的分布式缓存节点发送主机标记通知;每个分布式缓存节点在收到主机标记通知后,将对应的主机标记为已同步主机;
所述方法还包括:每个已同步主机在接收到数据访问请求时,按照所述数据访问请求执行对自身存储的数据的相应访问操作;每个未同步主机在接收到数据访问请求时,先基于从其他主机接收的数据变更信息,对自身存储的数据进行变更,之后,按照所述数据访问请求执行对自身存储的数据的相应访问操作。
上述方案中,在未同步主机按照所述数据访问请求执行对自身存储的数据的相应访问操作之后,所述方法还包括:将对应的未同步主机标记为已同步主机。
本发明实施例还提供了另一种实现数据库高可用的方法,数据库用于使用至少两个主机来存储数据,数据库的数据变更请求用于被发送至一个处于空闲状态的主机;所述方法包括:
设置集群组件,所述集群组件分别连接数据库使用的各个主机;
集群组件在接收到数据变更请求后,将所述数据变更请求发送至一个处于空闲状态的主机;
接收到数据变更请求的主机基于所述数据变更请求,对自身存储的数据进行变更;将自身的数据变更信息发送至其余各个主机;
每个主机在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身存储的数据进行变更。
上述方案中,所述将自身的数据变更信息发送至其余各个主机包括:将自身的数据变更信息通过广播发送至其余各个主机。
上述方案中,所述集群组件中设置有N个分布式缓存节点,N为数据库使用的主机个数,每个主机与一个对应的分布式缓存节点形成通信连接;
所述将自身的数据变更信息发送至其余各个主机包括:将自身的数据变更信息上传至与自身形成通信连接的分布式缓存节点中,将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点;与其余每个主机形成通信连接的分布式缓存节点将接收到的数据变更信息发送至对应的主机。
上述方案中,所述集群组件中设置有消息中间件;
所述将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点,包括:利用消息中间件将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点。
上述方案中,所述集群组件中设置有N个分布式缓存节点,N为数据库使用的主机个数,每个主机与一个对应的分布式缓存节点形成通信连接;
在与上传自身的数据变更信息的主机对应的分布式缓存节点接收数据变更信息之后,所述方法还包括:将对应的主机标记为已同步主机,将其余每个主机标记为未同步主机;
在每个主机基于所接收到的数据变更信息,对自身存储的数据进行变更后,所述方法还包括:每个主机向对应的分布式缓存节点发送主机标记通知;每个分布式缓存节点在收到主机标记通知后,将对应的主机标记为已同步主机;
所述方法还包括:集群组件在接收到数据访问请求后,选取一个处于空闲状态的主机,通过同步状态字典表确定所选取的主机是已同步主机还是未同步主机;在所选取的主机是未同步主机时,集群组件生成同步指示信息,将数据访问请求和同步指示信息发送至所选取的主机,所选取的主机基于接收的同步指示信息,先基于从其他主机接收的数据变更信息,对自身存储的数据进行变更,之后,按照所述数据访问请求执行对自身存储的数据的相应访问操作。
上述方案中,所述方法还包括:未同步主机在按照所述数据访问请求执行对自身存储的数据的相应访问操作之后,向对应的分布式缓存节点发送主机标记通知,将对应的未同步主机标记为已同步主机。
上述方案中,所述集群组件中设置有N个分布式缓存节点,N为数据库使用的主机个数,每个主机与一个对应的分布式缓存节点形成通信连接;
所述方法还包括:所述集群组件在确定数据库使用的任意一个主机正常运行时,将对应主机标记为正常主机;集群组件在确定数据库使用的任意一个主机出现故障时,将对应主机标记为不可用主机;
所述不可用主机对应的分布式缓存节点在不可用主机出现故障的时间段,存储其他主机的数据变更信息;
集群组件确定所述不可用主机恢复正常运行时,通知所述不可用主机对应的分布式缓存节点将存储的数据变更信息发送至对应的主机,对应的主机基于接收到的数据变更信息进行数据变更。
上述方案中,所述集群组件确定所述不可用主机恢复正常运行时,所述方法还包括:所述集群组件将对应的恢复正常运行的主机标记为正常主机。
本发明实施例还提供了一种实现数据库高可用的装置,数据库用于使用至少两个主机来存储数据,所述数据库的数据变更请求用于被发送至一个处于空闲状态的主机;所述装置设置于每个主机中,所述装置包括第一变更模块和第二变更模块;其中,
第一变更模块,用于在接收到数据变更请求时,基于所述数据变更请求,对自身所处在的主机存储的数据进行变更;将自身所处在的主机的数据变更信息发送至其余各个主机的第二变更模块;
第二变更模块,用于在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身所处在的主机存储的数据进行变更。
上述方案中,所述第一变更模块,具体用于将自身所处在的主机的数据变更信息通过广播发送至其余各个主机。
上述方案中,数据库用于使用至少两个主机来存储数据,数据库的数据变更请求用于被发送至一个处于空闲状态的主机;
所述系统包括数据库使用的各个主机、以及分别连接数据库使用的各个主机的集群组件;其中,
所述集群组件,用于在接收到数据变更请求后,将所述数据变更请求发送至一个处于空闲状态的主机;
所述每个主机,用于在接收到数据变更请求后,基于所述数据变更请求,对自身存储的数据进行变更;将自身的数据变更信息发送至其余各个主机;在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身存储的数据进行变更。
上述方案中,所述集群组件中设置有N个分布式缓存节点,N为数据库使用的主机个数,每个主机与一个对应的分布式缓存节点形成通信连接;
所述集群组件,还用于在确定数据库使用的任意一个主机正常运行时,将对应主机标记为正常主机;在确定数据库使用的任意一个主机出现故障时,将对应主机标记为不可用主机;
所述不可用主机对应的分布式缓存节点,用于在不可用主机出现故障的时间段,存储其他主机的数据变更信息;
所述集群组件,还用于在确定所述不可用主机恢复正常运行时,通知所述不可用主机对应的分布式缓存节点将存储的数据变更信息发送至对应的主机;
所述对应的主机,用于基于接收到的数据变更信息进行数据变更。
本发明实施例提供的一种实现数据库高可用的方法、装置和系统中,数据库用于使用至少两个主机来存储数据,所述数据库的数据变更请求用于被发送至一个处于空闲状态的主机;每个主机在接收到数据变更请求时,基于所述数据变更请求,对自身存储的数据进行变更;将自身的数据变更信息发送至其余各个主机;每个主机在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身存储的数据进行变更;如此,数据库使用的各个主机具有同等地位,没有主从之分,并且对于每一个数据变更请求,采用多份数据冗余来提高数据存储的安全性;同时还都能够对外提供读写服务;只要有至少一个主机正常运行,就不会影响数据库的使用。
附图说明
图1为现有技术中利用主从方式实现数据库高可用的架构示意图;
图2为现有技术中利用分布式集群方式实现数据库高可用的架构示意图;
图3为本发明实现数据库高可用的方法的第一实施例的流程图;
图4为本发明实现数据库高可用的方法的第二实施例的流程图;
图5为本发明实施例实现数据库高可用的装置的组成结构示意图;
图6为本发明实施例实现数据库高可用的系统的组成结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
第一实施例
本发明第一实施例提供了一种实现数据库高可用的方法,这里,数据库用于使用至少两个主机来存储数据,所述数据库的数据变更请求用于被发送至一个处于空闲状态的主机。
图3为本发明实现数据库高可用的方法的第一实施例的流程图,如图3所示,该流程包括:
步骤300:每个主机在接收到数据变更请求时,基于所述数据变更请求,对自身存储的数据进行变更;将自身的数据变更信息发送至其余各个主机。
示例性地,每个主机的状态可以分为空闲状态和忙碌状态,当主机处于忙碌状态时,不能接收数据变更请求。
这里,数据变更请求为对数据库中的数据进行变更的请求,示例性地,数据变更请求包括但不限于插入请求、更新请求、删除请求等等。
可以理解的是,数据变更请求通常是基于用户需求而生成的,在生成数据变更请求后,首先通过查询获取各个主机的状态,然后将该请求被发送至一个处于空闲状态的主机,一个数据变更请求只能被发送至一个主机。
对于数据变更请求被发送至一个处于空闲状态的主机的实现方式,具体地说,预先为各个主机配置相同的地址信息,设置集群组件,该集群组件一方面用于接收数据变更请求,另一方面用于将数据变更请求发送至主机;客户端生成并发送数据变更请求,集群组件接收到数据变更请求后,查询各个主机的状态,之后,通过浮动IP将数据变更请求发送至一个处于空闲状态的主机,此时,集群组件与对应的处于空闲状态的主机建立通信连接。
本步骤中,主机在对自身存储的数据进行变更,生成自身的数据变更信息,数据变更信息为主机存储数据的变更信息,数据变更信息的形式可以是日志形式;示例性地,主机基于数据插入请求生成的数据变更信息可以包括:数据写入的开始地址,数据写入的结束地址、数据写入内容等,主机基于数据更新请求生成的数据变更信息可以包括:待更新的数据在主机中的地址、数据写入的开始地址,数据写入的结束地址、待写入的数据内容等,主机基于数据删除请求生成的数据变更信息可以包括:待删除的数据在主机中的地址。
本步骤中,所述将自身的数据变更信息发送至其余各个主机包括:将自身的数据变更信息通过广播发送至其余各个主机。
这里,可以预先在集群组件中为每个主机设置一个对应的分布式缓存节点,主机与分布式缓存节点形成一一对应关系,每个主机与一个对应的分布式缓存节点形成通信连接。
所述将自身的数据变更信息发送至其余各个主机包括:将自身的数据变更信息上传至与自身形成通信连接的分布式缓存节点中,将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点;与其余每个主机形成通信连接的分布式缓存节点将接收到的数据变更信息发送至对应的主机;如此,各个主机都可以接收到相同的数据变更信息,都可以基于该数据变更信息,进行相同的数据变更操作。
这里,可以利用消息中间件将分布式缓存节点中存储的数据变更信息广播至与其余各个主机形成通信连接的分布式缓存节点。
在现有的利用分布式集群方式实现数据库高可用的方案中,数据库主机之间的数据通信的方式为网状互同步方式,通信开销较大,尤其是在数据库主机较多的情况下,主机之间的通信量太大;而本发明第一实施例提供的实现数据库高可用的方法中,可以将自身的数据变更信息通过广播发送至其余各个主机,如此,可以降低数据库的通信开销。
进一步地,在分布式缓存节点接收数据变更信息之后,将对应的主机标记为已同步主机,将其余每个主机标记为未同步主机。
示例性地,可以在集群组件中预先配置同步状态字典表;分布式缓存节点在接收数据变更信息之后,在所述同步状态字典表中将对应的主机标记为已同步主机,将其余每个主机标记为未同步主机。
步骤301:每个主机在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身存储的数据进行变更。
可以理解的是,由于每个主机对自身存储的数据进行变更的依据为:所接收到的数据变更信息,因此,在每个主机根据接收到的数据变更信息对自身存储的数据进行变更后,数据库使用的各个主机存储的数据将保持一致;示例性地,数据库共使用四个主机来存储数据,这四个主机分别为主机1至主机4,当处于空闲状态的主机2接收到数据变更请求后,根据步骤300将主机2存储的数据进行变更,将主机2的数据变更信息分别发送至主机1、主机3和主机4;主机1、主机3和主机4在接收到主机2的数据变更信息之后,均以主机2的数据变更信息作为依据,对自身存储的数据进行变更,使这四个主机存储的数据保持一致。
进一步地,每个主机在基于所接收到的数据变更信息,对自身存储的数据进行变更之后,向对应的分布式缓存节点重新发送主机标记通知;每个分布式缓存节点在收到主机标记通知后,将对应的主机标记为已同步主机;此时,各个主机均为已同步主机,表明各个主机存储的数据保持一致。
示例性地,可以在集群组件中预先配置同步状态字典表;分布式缓存节点在收到主机标记通知后,在所述同步状态字典表中将对应的主机标记为已同步主机。
可以看出,本发明第一实施例提供的实现数据库高可用的方法,不改变底层数据库的部署方式,数据库使用的各个主机具有同等地位,没有主从之分,并且对于每一个数据变更请求,采用多份数据冗余来提高数据存储的安全性;同时还都能够对外提供读写服务;只要有至少一个主机正常运行,就不会影响数据库的使用;并且数据变更过程无需人工干预,对客户端使用的应用程序完全透明,理论上数据库的高可用率最多能够提升N倍,N表示数据库使用的主机数;总之,本发明第一实施例提供的实现数据库高可用的方法,提高了数据库的高可用性,并提升了数据库读写性能。
进一步地,本发明第一实施例提供的实现数据库高可用的方法还包括:每个已同步主机在处于空闲状态并接收到数据访问请求时,按照所述数据访问请求执行对自身存储的数据的相应访问操作;每个未同步主机在处于空闲状态并接收到数据访问请求时,说明该未同步主机没有接收到其他主机的数据变更信息时,或没有基于所接收到的数据变更信息对自身存储的数据进行变更;这时,不能立即按照所述数据访问请求执行对自身存储的数据的相应访问操作,而应该在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身存储的数据进行变更;之后,再按照所述数据访问请求执行对自身存储的数据的相应访问操作。
进一步地,在未同步主机按照所述数据访问请求执行对自身存储的数据的相应访问操作之后,将对应的未同步主机标记为已同步主机。
这里,所述数据访问请求包括但不限于:数据变更请求、数据读取请求等,示例性地,每个已同步主机在接收到数据读取请求时,按照所述数据读取请求读取自身存储的数据;每个未同步主机在接收的数据读取请求时,首先按照步骤301对自身存储的数据进行变更,然后,按照所述数据读取请求读取自身存储的数据。
具体地,数据访问请求通常是基于用户需求而生成的,生成的数据访问请求被发送至集群组件中,集群组件选取一个处于空闲状态的主机,通过同步状态字典表确定所选取的主机是已同步主机还是未同步主机;如果所选取的主机是已同步主机,则集群组件可以只将数据访问请求发送至所选取的主机,所选取的主机按照所述数据读取请求读取自身存储的数据;如果所选取的主机是未同步主机,则集群组件生成同步指示信息,将数据访问请求和同步指示信息发送至所选取的主机,所选取的主机基于接收的同步指示信息按照步骤301对自身存储的数据进行变更,之后,按照所述数据读取请求读取自身存储的数据。
在现有的利用分布式集群方式实现数据库高可用的方案中,数据库使用的主机很容易出现数据读写不一致的情况;例如,在主机A完成数据写入操作,主机A将写入操作的数据发送至主机B,以实现主机A和主机B数据的同步;如果在主机A将写入操作的数据发送至主机B的同时,读取主机B的数据,就可能出现读取错误的情况;而在本发明第一实施例提供的实现数据库高可用的方法中,如果未同步主机接收到数据访问请求,需要在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身存储的数据进行变更;之后,再按照所述数据访问请求执行对自身存储的数据的相应访问操作;如此,可以避免出现现有技术中的读写不一致的情况。
第二实施例
为了能够更加体现本发明的目的,在本发明第一实施例的基础上,进行进一步的举例说明。
本发明第二实施例提供了一种实现数据库高可用的方法,这里,数据库用于使用至少两个主机来存储数据,所述数据库的数据变更请求用于被发送至一个处于空闲状态的主机。
图4为本发明实现数据库高可用的方法的第二实施例的流程图,如图4所示,该流程包括:
步骤400:设置集群组件,所述集群组件分别连接数据库使用的各个主机。
这里,集群组件可以用于接收数据访问请求,所述数据访问请求包括但不限于:数据变更请求、数据读取请求等,示例性地,数据变更请求包括但不限于插入请求、更新请求、删除请求等等。
数据访问请求通常是基于用户需求而生成的,例如,数据访问请求的生成过程包括:用户在客户端上生成数据访问请求。
本步骤还包括:集群组件预先为各个主机配置相同的地址信息。
步骤401:集群组件在接收到数据变更请求后,将所述数据变更请求发送至一个处于空闲状态的主机。
本步骤的具体实现方式已经在步骤300作出说明,这里不再赘述。
步骤402:接收到数据变更请求的主机基于所述数据变更请求,对自身存储的数据进行变更;将自身的数据变更信息发送至其余各个主机。
这里,所述将自身的数据变更信息发送至其余各个主机包括:将自身的数据变更信息通过广播发送至其余各个主机。
具体地说,所述集群组件中设置有N个分布式缓存节点,N为数据库使用的主机个数,每个主机与一个对应的分布式缓存节点形成通信连接。
所述将自身的数据变更信息发送至其余各个主机包括:将自身的数据变更信息上传至与自身形成通信连接的分布式缓存节点中,将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点;与其余每个主机形成通信连接的分布式缓存节点将接收到的数据变更信息发送至对应的主机。
这里,可以利用消息中间件将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点;该消息中间件设置于集群组件中。
本步骤中,在与上传自身的数据变更信息的主机对应的分布式缓存节点接收数据变更信息之后,将对应的主机标记为已同步主机,将其余每个主机标记为未同步主机。
步骤403:每个主机在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身存储的数据进行变更。
进一步地,在每个主机基于所接收到的数据变更信息,对自身存储的数据进行变更后,向对应的分布式缓存节点发送主机标记通知;分布式缓存节点在收到主机标记通知后,将对应的主机标记为已同步主机。
进一步地,本发明第二实施例的实现数据库高可用的方法还包括:集群组件在接收到数据访问请求后,选取一个处于空闲状态的主机,通过同步状态字典表确定所选取的主机是已同步主机还是未同步主机;在所选取的主机是未同步主机时,集群组件生成同步指示信息,将数据访问请求和同步指示信息发送至所选取的主机,所选取的主机基于接收的同步指示信息,先基于从其他主机接收的数据变更信息,对自身存储的数据进行变更,之后,按照所述数据访问请求执行对自身存储的数据的相应访问操作。
这里,未同步主机在按照所述数据访问请求执行对自身存储的数据的相应访问操作之后,向对应的分布式缓存节点发送主机标记通知,将对应的未同步主机标记为已同步主机。
进一步地,本发明第二实施例的实现数据库高可用的方法还包括:所述集群组件在确定数据库使用的任意一个主机正常运行时,将对应主机标记为正常主机;集群组件在确定数据库使用的任意一个主机出现故障时,将对应主机标记为不可用主机。
所述不可用主机对应的分布式缓存节点在不可用主机出现故障的时间段,存储其他主机的数据变更信息。
集群组件确定所述不可用主机恢复正常运行时,通知所述不可用主机对应的分布式缓存节点将存储的数据变更信息发送至对应的主机,对应的主机基于接收到的数据变更信息进行数据变更,如此,可以使各个主机存储的数据保持一致。
这里,所述集群组件确定所述不可用主机恢复正常运行时,将对应的恢复正常运行的主机标记为正常主机。
可以理解的是,确定每个主机是否正常运行具有多种现有的实现方式,这里不再赘述。
具体地说,所述不可用主机对应的分布式缓存节点在不可用主机出现故障的时间段,还可以存储其他主机的数据变更信息的先后接收顺序;分布式缓存节点将存储的数据变更信息发送至对应的主机时,还可以将对应的数据变更信息的先后接收顺序发送至对应的主机;如此,对应的主机可以基于接收到的数据变更信息,并按照对应的数据变更信息的先后接收顺序,进行数据变更。
在现有的利用主从方式实现数据库高可用的方案中,当主机出现故障后,在备机提升为主机的过程中,无法对外提供服务,会出现服务的短暂的服务暂停;在现有的利用分布式集群方式实现数据库高可用的方案中,当一个主机出现故障时,数据库依然可以对外提供服务,但是,当其中有至少两个主机出现故障时,数据库就无法对外继续提供服务。而本发明实现数据库高可用的方法的第二实施例中,只要有一个主机正常运行,数据库就可以对外提供服务,在出现故障的主机恢复正常运行后,还可以自动使各个主机的数据保持一致。
本发明实现数据库高可用的方法的第二实施例,通过部署了分布式缓存节点和消息中间件的集群组件,将各主机进行并行关联组成一个大的集群系统。这里,分布式缓存节点的分布式功能,可以将主机的数据变更信息保存,其他主机可以共享该机的数据变更信息;分布式消息中间件的消息调度机制可以将有方案中各个主机单独的同步调度机制合并,进行统一调度处理,
第三实施例
针对本发明第一实施例的实现数据库高可用的方法,本发明第三实施例提供了一种实现数据库高可用的装置。
本发明第三实施例的实现数据库高可用的装置中,数据库用于使用至少两个主机来存储数据,所述数据库的数据变更请求用于被发送至一个处于空闲状态的主机。
图5为本发明实施例实现数据库高可用的装置的组成结构示意图,如图5所示,该装置包括:第一变更模块500和第二变更模块501;其中,
第一变更模块500,用于在接收到数据变更请求时,基于所述数据变更请求,对自身所处在的主机存储的数据进行变更;将自身所处在的主机的数据变更信息发送至其余各个主机的第二变更模块。
第二变更模块501,用于在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身所处在的主机存储的数据进行变更。
具体地,所述第一变更模块500,具体用于将自身所处在的主机的数据变更信息通过广播发送至其余各个主机。
在实际应用中,所述第一变更模块500和第二变更模块501均可由位于主机中的中央处理器(Central Processing Unit,CPU)、微处理器(Micro ProcessorUnit,MPU)、数字信号处理器(Digital Signal Processor,DSP)、或现场可编程门阵列(Field Programmable Gate Array,FPGA)等实现。
第四实施例
针对本发明第二实施例的实现数据库高可用的方法,本发明第四实施例提供了一种实现数据库高可用的系统。
本发明第四实施例的实现数据库高可用的系统中,数据库用于使用至少两个主机来存储数据,数据库的数据变更请求用于被发送至一个处于空闲状态的主机。
图6为本发明实施例实现数据库高可用的系统的组成结构示意图,如图6所示,该系统包括集群组件600、数据库使用的第1主机T1至第N主机TN,N表示数据库使用的主机个数。
所述集群组件600,用于在接收到数据变更请求后,将所述数据变更请求发送至一个处于空闲状态的主机。
所述第i主机Ti,用于在接收到数据变更请求后,基于所述数据变更请求,对自身存储的数据进行变更;将自身的数据变更信息发送至其余各个主机;在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身存储的数据进行变更;这里,i取1至N。
具体地,所述集群组件600中设置有N个分布式缓存节点,N为数据库使用的主机个数,每个主机与一个对应的分布式缓存节点形成通信连接。
所述集群组件600,还用于在确定数据库使用的任意一个主机正常运行时,将对应主机标记为正常主机;在确定数据库使用的任意一个主机出现故障时,将对应主机标记为不可用主机;所述不可用主机对应的分布式缓存节点,用于在不可用主机出现故障的时间段,存储其他主机的数据变更信息。
所述集群组件600,还用于在确定所述不可用主机恢复正常运行时,通知所述不可用主机对应的分布式缓存节点将存储的数据变更信息发送至对应的主机。
所述对应的主机600,用于基于接收到的数据变更信息进行数据变更。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (18)
1.一种实现数据库高可用的方法,其特征在于,数据库用于使用至少两个主机来存储数据,所述数据库的数据变更请求用于被发送至一个处于空闲状态的主机;所述方法包括:
每个主机在接收到数据变更请求时,基于所述数据变更请求,对自身存储的数据进行变更;将自身的数据变更信息发送至其余各个主机;
每个主机在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身存储的数据进行变更。
2.根据权利要求1所述的方法,其特征在于,所述将自身的数据变更信息发送至其余各个主机包括:将自身的数据变更信息通过广播发送至其余各个主机。
3.根据权利要求1或2所述的方法,其特征在于,每个主机与一个对应的分布式缓存节点形成通信连接;
所述将自身的数据变更信息发送至其余各个主机包括:将自身的数据变更信息上传至与自身形成通信连接的分布式缓存节点中,将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点;与其余每个主机形成通信连接的分布式缓存节点将接收到的数据变更信息发送至对应的主机。
4.根据权利要求3所述的方法,其特征在于,所述将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点,包括:利用消息中间件将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点。
5.根据权利要求1所述的方法,其特征在于,每个主机与一个对应的分布式缓存节点形成通信连接;
在与上传自身的数据变更信息的主机对应的分布式缓存节点接收数据变更信息之后,所述方法还包括:将对应的主机标记为已同步主机,将其余每个主机标记为未同步主机;
在每个主机基于所接收到的数据变更信息,对自身存储的数据进行变更后,所述方法还包括:每个主机向对应的分布式缓存节点发送主机标记通知;每个分布式缓存节点在收到主机标记通知后,将对应的主机标记为已同步主机;
所述方法还包括:每个已同步主机在接收到数据访问请求时,按照所述数据访问请求执行对自身存储的数据的相应访问操作;每个未同步主机在接收到数据访问请求时,先基于从其他主机接收的数据变更信息,对自身存储的数据进行变更,之后,按照所述数据访问请求执行对自身存储的数据的相应访问操作。
6.根据权利要求5所述的方法,其特征在于,在未同步主机按照所述数据访问请求执行对自身存储的数据的相应访问操作之后,所述方法还包括:将对应的未同步主机标记为已同步主机。
7.一种实现数据库高可用的方法,其特征在于,数据库用于使用至少两个主机来存储数据,数据库的数据变更请求用于被发送至一个处于空闲状态的主机;所述方法包括:
设置集群组件,所述集群组件分别连接数据库使用的各个主机;
集群组件在接收到数据变更请求后,将所述数据变更请求发送至一个处于空闲状态的主机;
接收到数据变更请求的主机基于所述数据变更请求,对自身存储的数据进行变更;将自身的数据变更信息发送至其余各个主机;
每个主机在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身存储的数据进行变更。
8.根据权利要求7所述的方法,其特征在于,所述将自身的数据变更信息发送至其余各个主机包括:将自身的数据变更信息通过广播发送至其余各个主机。
9.根据权利要求7或8所述的方法,其特征在于,所述集群组件中设置有N个分布式缓存节点,N为数据库使用的主机个数,每个主机与一个对应的分布式缓存节点形成通信连接;
所述将自身的数据变更信息发送至其余各个主机包括:将自身的数据变更信息上传至与自身形成通信连接的分布式缓存节点中,将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点;与其余每个主机形成通信连接的分布式缓存节点将接收到的数据变更信息发送至对应的主机。
10.根据权利要求9所述的方法,其特征在于,所述集群组件中设置有消息中间件;
所述将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点,包括:利用消息中间件将分布式缓存节点中存储的数据变更信息通过广播发送至与其余各个主机形成通信连接的分布式缓存节点。
11.根据权利要求7所述的方法,其特征在于,所述集群组件中设置有N个分布式缓存节点,N为数据库使用的主机个数,每个主机与一个对应的分布式缓存节点形成通信连接;
在与上传自身的数据变更信息的主机对应的分布式缓存节点接收数据变更信息之后,所述方法还包括:将对应的主机标记为已同步主机,将其余每个主机标记为未同步主机;
在每个主机基于所接收到的数据变更信息,对自身存储的数据进行变更后,所述方法还包括:每个主机向对应的分布式缓存节点发送主机标记通知;每个分布式缓存节点在收到主机标记通知后,将对应的主机标记为已同步主机;
所述方法还包括:集群组件在接收到数据访问请求后,选取一个处于空闲状态的主机,确定所选取的主机是未同步主机时,生成同步指示信息,将数据访问请求和同步指示信息发送至所选取的主机;所选取的主机基于接收的同步指示信息,先基于从其他主机接收的数据变更信息,对自身存储的数据进行变更,之后,按照所述数据访问请求执行对自身存储的数据的相应访问操作。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:未同步主机在按照所述数据访问请求执行对自身存储的数据的相应访问操作之后,向对应的分布式缓存节点发送主机标记通知,将对应的未同步主机标记为已同步主机。
13.根据权利要求7所述的方法,其特征在于,所述集群组件中设置有N个分布式缓存节点,N为数据库使用的主机个数,每个主机与一个对应的分布式缓存节点形成通信连接;
所述方法还包括:所述集群组件在确定数据库使用的任意一个主机正常运行时,将对应主机标记为正常主机;集群组件在确定数据库使用的任意一个主机出现故障时,将对应主机标记为不可用主机;
所述不可用主机对应的分布式缓存节点在不可用主机出现故障的时间段,存储其他主机的数据变更信息;
集群组件确定所述不可用主机恢复正常运行时,通知所述不可用主机对应的分布式缓存节点将存储的数据变更信息发送至对应的主机,对应的主机基于接收到的数据变更信息进行数据变更。
14.根据权利要求13所述的方法,其特征在于,所述集群组件确定所述不可用主机恢复正常运行时,所述方法还包括:所述集群组件将对应的恢复正常运行的主机标记为正常主机。
15.一种实现数据库高可用的装置,其特征在于,数据库用于使用至少两个主机来存储数据,所述数据库的数据变更请求用于被发送至一个处于空闲状态的主机;所述装置设置于每个主机中,所述装置包括第一变更模块和第二变更模块;其中,
第一变更模块,用于在接收到数据变更请求时,基于所述数据变更请求,对自身所处在的主机存储的数据进行变更;将自身所处在的主机的数据变更信息发送至其余各个主机的第二变更模块;
第二变更模块,用于在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身所处在的主机存储的数据进行变更。
16.根据权利要求15所述的装置,其特征在于,所述第一变更模块,具体用于将自身所处在的主机的数据变更信息通过广播发送至其余各个主机。
17.一种实现数据库高可用的系统,其特征在于,数据库用于使用至少两个主机来存储数据,数据库的数据变更请求用于被发送至一个处于空闲状态的主机;
所述系统包括数据库使用的各个主机、以及分别连接数据库使用的各个主机的集群组件;其中,
所述集群组件,用于在接收到数据变更请求后,将所述数据变更请求发送至一个处于空闲状态的主机;
所述每个主机,用于在接收到数据变更请求后,基于所述数据变更请求,对自身存储的数据进行变更;将自身的数据变更信息发送至其余各个主机;在接收到其他主机的数据变更信息时,基于所接收到的数据变更信息,对自身存储的数据进行变更。
18.根据权利要求17所述的系统,其特征在于,所述集群组件中设置有N个分布式缓存节点,N为数据库使用的主机个数,每个主机与一个对应的分布式缓存节点形成通信连接;
所述集群组件,还用于在确定数据库使用的任意一个主机正常运行时,将对应主机标记为正常主机;在确定数据库使用的任意一个主机出现故障时,将对应主机标记为不可用主机;
所述不可用主机对应的分布式缓存节点,用于在不可用主机出现故障的时间段,存储其他主机的数据变更信息;
所述集群组件,还用于在确定所述不可用主机恢复正常运行时,通知所述不可用主机对应的分布式缓存节点将存储的数据变更信息发送至对应的主机;
所述对应的主机,用于基于接收到的数据变更信息进行数据变更。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510907368.0A CN106855869B (zh) | 2015-12-09 | 2015-12-09 | 一种实现数据库高可用的方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510907368.0A CN106855869B (zh) | 2015-12-09 | 2015-12-09 | 一种实现数据库高可用的方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106855869A true CN106855869A (zh) | 2017-06-16 |
CN106855869B CN106855869B (zh) | 2020-06-12 |
Family
ID=59132628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510907368.0A Active CN106855869B (zh) | 2015-12-09 | 2015-12-09 | 一种实现数据库高可用的方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106855869B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110572468A (zh) * | 2019-09-17 | 2019-12-13 | 平安科技(深圳)有限公司 | 服务器集群文件同步方法及装置、电子设备及存储介质 |
CN110611594A (zh) * | 2019-09-23 | 2019-12-24 | 广州海颐信息安全技术有限公司 | 特权系统多路访问与故障切换主节点的方法及装置 |
CN113672604A (zh) * | 2021-08-16 | 2021-11-19 | 浙江大华技术股份有限公司 | 一种用户数据同步方法、装置、系统及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7177886B2 (en) * | 2003-02-07 | 2007-02-13 | International Business Machines Corporation | Apparatus and method for coordinating logical data replication with highly available data replication |
CN101727496A (zh) * | 2010-01-15 | 2010-06-09 | 山东高效能服务器和存储研究院 | 一种实现microsoft sql server数据库负载均衡集群的方法 |
CN102158540A (zh) * | 2011-02-18 | 2011-08-17 | 广州从兴电子开发有限公司 | 分布式数据库实现系统及方法 |
CN102281332A (zh) * | 2011-08-31 | 2011-12-14 | 上海西本网络科技有限公司 | 分布式缓存阵列及其数据更新方法 |
CN104935654A (zh) * | 2015-06-10 | 2015-09-23 | 华为技术有限公司 | 一种服务器集群系统中的缓存方法、写入点客户端和读客户端 |
-
2015
- 2015-12-09 CN CN201510907368.0A patent/CN106855869B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7177886B2 (en) * | 2003-02-07 | 2007-02-13 | International Business Machines Corporation | Apparatus and method for coordinating logical data replication with highly available data replication |
CN101727496A (zh) * | 2010-01-15 | 2010-06-09 | 山东高效能服务器和存储研究院 | 一种实现microsoft sql server数据库负载均衡集群的方法 |
CN102158540A (zh) * | 2011-02-18 | 2011-08-17 | 广州从兴电子开发有限公司 | 分布式数据库实现系统及方法 |
CN102281332A (zh) * | 2011-08-31 | 2011-12-14 | 上海西本网络科技有限公司 | 分布式缓存阵列及其数据更新方法 |
CN104935654A (zh) * | 2015-06-10 | 2015-09-23 | 华为技术有限公司 | 一种服务器集群系统中的缓存方法、写入点客户端和读客户端 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110572468A (zh) * | 2019-09-17 | 2019-12-13 | 平安科技(深圳)有限公司 | 服务器集群文件同步方法及装置、电子设备及存储介质 |
CN110572468B (zh) * | 2019-09-17 | 2022-11-04 | 平安科技(深圳)有限公司 | 服务器集群文件同步方法及装置、电子设备及存储介质 |
CN110611594A (zh) * | 2019-09-23 | 2019-12-24 | 广州海颐信息安全技术有限公司 | 特权系统多路访问与故障切换主节点的方法及装置 |
CN113672604A (zh) * | 2021-08-16 | 2021-11-19 | 浙江大华技术股份有限公司 | 一种用户数据同步方法、装置、系统及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106855869B (zh) | 2020-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2021513715A (ja) | 分散データベースクラスタシステム、及びデータ同期方法 | |
CN103780638B (zh) | 数据同步方法及系统 | |
US11068499B2 (en) | Method, device, and system for peer-to-peer data replication and method, device, and system for master node switching | |
CN109376197B (zh) | 一种数据同步方法、服务器及计算机存储介质 | |
CN109493076A (zh) | 一种Kafka消息唯一消费方法、系统、服务器及存储介质 | |
CN104113597A (zh) | 一种多数据中心的hdfs数据读写系统及方法 | |
CN103593236A (zh) | 一种业务流程调度的计算机设备、方法和装置 | |
CN103902405B (zh) | 一种准连续性数据复制方法及装置 | |
WO2015090245A1 (zh) | 文件传输方法、装置及分布式集群文件系统 | |
CN106777164B (zh) | 一种数据迁移集群及数据迁移方法 | |
CN103942259B (zh) | 一种数据库同步中实现数据缓存的方法 | |
CN110099084B (zh) | 一种保证存储服务可用性的方法、系统及计算机可读介质 | |
CN111177254B (zh) | 一种异构关系型数据库之间数据同步的方法和装置 | |
CN104021200A (zh) | 一种数据库的数据同步方法和装置 | |
CN105760519A (zh) | 一种集群文件系统及其文件锁分配方法 | |
CN103793291A (zh) | 分布式数据复制方法和装置 | |
CN106855869A (zh) | 一种实现数据库高可用的方法、装置和系统 | |
WO2016082594A1 (zh) | 数据更新处理方法及装置 | |
JP2006059260A (ja) | 情報処理システム、管理計算機及びリモートコピー方法 | |
JP2022521412A (ja) | 分散システムにおける非同期ストレージ管理 | |
WO2016095329A1 (zh) | 一种日志记录系统及日志记录操作方法 | |
CN116304390B (zh) | 时序数据处理方法、装置、存储介质及电子设备 | |
CN109859068B (zh) | 一种基于资源池技术的电网数据实时同步系统 | |
CN102325171A (zh) | 一种监控系统中数据的存储方法及其系统 | |
CN106933497A (zh) | 一种基于sas的管理调度装置、系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |