mysql 集群 强一致性_一种高可用性和强一致性的数据库集群系统及其命令处理方法与流程...

20c57500ffc334bd7a27a2c8d2a3f967.gif

本发明涉及一种高可用性和强一致性的数据库集群系统及其命令处理方法。

背景技术:

RAC(Real Application Cluster,真正应用集群)是Oracle的并行集群,位于不同节点的Oracle实例同时访问同一个Oracle数据库,节点之间通过私有网络进行通信,所有的控制文件、联机日志和数据文件存放在共享的存储设备上,能够被集群中的所有节点读写;这种集群方法具有一定局限性:

1)实例间的数据同步

RAC提供多个实例,RAC会将写入的数据先缓存在实例的内存,再同步到共享的存储中,有时在数据的同步上花费的时间较大。例如:当多个实例同时写入数据后立即查询新写入的数据时,写在各个实例中的数据还未同步到共享的存储中,为了保证读取的数据的正确性,必须通过复杂的同步过程维护各个实例中数据的一致性。当数据量小时,所需时间可以接受;但当数据量大时,维持一致性所花费的时间可能无法接受。

另一方面,当实例故障时,若该实例中缓存的数据还未同步到共享存储中,则这部分数据将丢失,无法恢复。

2)数据库单点故障

RAC中数据文件只有一份,当共享存储出现故障时,将无法提供服务。

技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种高可用性和强一致性的数据库集群系统及其命令处理方法,数据库集群系统中每个节点均能够提供完整存储访问服务,同时在命令处理过程中,数据库集群系统中各个节点数据同步一致,单个节点故障不会影响数据库集群系统的正常工作,也不会造成数据损失。

本发明的目的是通过以下技术方案来实现的:一种高可用性和强一致性的数据库集群系统,包括命令处理规则设置单元、初始配置单元和多个节点,所述多个节点之间通过私有网络连接;

每个所述的节点均能够提供完整的数据存储、访问和命令执行管理服务;

所述初始配置单元用于提供配置接口,进而通过手动配置的方式从所述多个节点中确定主节点和副节点;

所述命令处理规则设置单元用于设定命令处理规则,保证命令处理过程中数据库集群系统各个节点之间的数据同步一致。

所述的多个节点还连接统一的地址访问集群,为用户组提供访问服务的接口。

每个所述的节点均包括存储模块、数据服务模块和执行管理模块;所述存储模块用于对节点数据进行存储;所述的数据服务模块用于对来自用户组的命令进行处理,进而为用户提供服务;所述执行管理模块用于根据设定的命令处理规则,对数据服务模块处理的命令进行管理,进而保证命令处理过程中数据库集群系统各个节点之间的数据同步一致。

所述的一种高可用性和强一致性的数据库集群系统的命令处理方法,包括以下步骤:

S1.通过手动配置的方式从所述多个节点选择一个节点作为主节点,其余所有节点均为副节点;

S2.接收来自用户的命令并按照命令处理规则对节点数据进行处理。

所述的步骤S2包括以下子步骤:

S21.判断接收到的命令是否为操作类命令:

(1)如果接收到的命令不为操作类命令,则认为该命令属于查询类命令,在接收命令的节点进行数据查询,并将查询结果反馈给用户;

(2)如果接收到的命令为操作类命令,进入步骤S22;

S22.判断接收到命令的节点是否为主节点:

(1)如果接收到命令的节点为主节点,进入步骤S23;

(2)如果接收到命令的节点不为主节点,将接收到的命令发送给主节点,进入步骤S23;

S23.在主节点的调度下执行接收到的命令。

所述的数据操作类命令包括但不限于数据添加命令、数据删除命令和数据修改命令。

所述的步骤S23包括以下子步骤:

S231.主节点分析命令并生成执行计划;

S232.主节点将执行计划发布给各个副节点;

S233.主节点和副节点均按照执行计划执行命令;

S234.任务执行完毕后,判断是否存在任务执行失败的节点:

(1)如果存在任务执行失败的节点,所有节点全部做回滚操作,返回任务执行前的状态;

(2)如果不存在任务执行失败的节点,任务执行成功,所有节点均保存任务执行结果。

本发明的有益效果是:数据库集群系统中每个节点均能够提供完整存储访问服务,同时在命令处理过程中,数据库集群系统中各个节点数据同步一致,单个节点故障不会影响数据库集群系统的正常工作,也不会造成数据损失。

附图说明

图1为本发明的数据库集群系统原理框图;

图2为本发明数据库集群系统的命令处理方法流程图。

具体实施方式

下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。

如图1所示,一种高可用性和强一致性的数据库集群系统,包括命令处理规则设置单元、初始配置单元和多个节点,所述多个节点之间通过私有网络连接;

每个所述的节点均能够提供完整的数据存储、访问和命令执行管理服务;

所述初始配置单元用于提供配置接口,进而通过手动配置的方式从所述多个节点中确定主节点和副节点;

所述命令处理规则设置单元用于设定命令处理规则,保证命令处理过程中数据库集群系统各个节点之间的数据同步一致。

在本申请中,命令处理规则即节点之间进行命令处理的协议。

在本申请中,初始配置单元用于进行初始配置,需要通过私有网络与每个所述的节点连接;命令处理规则设置单元用于对节点之间的规则(协议)进行设置,也需要通过私有网络与每个所述的节点连接。

设定的命令处理规则包括:如果来自用户组的命令为非操作类命令(查询命令),在接收命令的节点进行数据查询,并将查询结果反馈给用户。

如果来自用户组的命令为操作类命令,接收命令的节点将命令发送到主节点(如果接收命令的节点本身就是主节点,则不必发送),由主节点生成命令执行计划,所有节点同步执行,任一个节点执行失败则所有节点进行回滚。

所述的多个节点还连接统一的地址访问集群,为用户组提供访问服务的接口。

每个所述的节点均包括存储模块、数据服务模块和执行管理模块;所述存储模块用于对节点数据进行存储;所述的数据服务模块用于对来自用户组的命令进行处理,进而为用户提供服务;所述执行管理模块用于根据设定的命令处理规则,对数据服务模块处理的命令进行管理,进而保证命令处理过程中数据库集群系统各个节点之间的数据同步一致。

如图2所示,所述的一种高可用性和强一致性的数据库集群系统的命令处理方法,包括以下步骤:

S1.通过手动配置的方式从所述多个节点选择一个节点作为主节点,其余所有节点均为副节点;

S2.接收来自用户的命令并按照命令处理规则对节点数据进行处理。

所述的步骤S2包括以下子步骤:

S21.判断接收到的命令是否为操作类命令:

(1)如果接收到的命令不为操作类命令,则认为该命令属于查询类命令,在接收命令的节点进行数据查询,并将查询结果反馈给用户;

(2)如果接收到的命令为操作类命令,进入步骤S22;

S22.判断接收到命令的节点是否为主节点:

(1)如果接收到命令的节点为主节点,进入步骤S23;

(2)如果接收到命令的节点不为主节点,将接收到的命令发送给主节点,进入步骤S23;

S23.在主节点的调度下执行接收到的命令。

所述的数据操作类命令包括但不限于数据添加命令、数据删除命令和数据修改命令。

所述的步骤S23包括以下子步骤:

S231.主节点分析命令并生成执行计划;

S232.主节点将执行计划发布给各个副节点;

S233.主节点和副节点均按照执行计划执行命令;

S234.任务执行完毕后,判断是否存在任务执行失败的节点:

(1)如果存在任务执行失败的节点,所有节点全部做回滚操作,返回任务执行前的状态;

(2)如果不存在任务执行失败的节点,任务执行成功,所有节点均保存任务执行结果。

本发明中,每个节点都能提供完整的服务,能够有效提升工作效率;同时,并且该数据库集群中每个节点都具备数据服务模块和存储模块,整个集群中存在多份数据,避免了RAC方式中故障导致的数据丢失问题;

本申请的实施例中,在进行命令处理时,命令一般分为两大类,一类为操作类命令,另一类为查询类命令(不是操作类命令,则必定为查询类命令),查询类命令时,由于各个节点中存储的数据是同步一致的,所以在任一节点进行查询和反馈即可,为了更加简洁方便,直接在接收命令的节点进行数据查询,并将查询结果反馈给用户,即可完成该命令;操作类命令时,需要对节点内部的数据进行添加、删除或修改,故需要在所有节点进行同时操作,如果有节点执行命令失败,则所有节点全部做回滚操作,如果所有节点均执行成功,才保存命令执行结果,进而可以严格保证各个节点间的数据同步一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值