发明名称 一种基于消息中间件的高可用性数据库集群系统
摘要 本发明公开了一种基于消息中间件的高可用性数据库集群系统,包括由多台数据库服务器构成的数据库服务层,在应用层和数据库服务层之间设置有中间层,中间层包括多个应用代理,多个数据库中间件及消息总线;应用代理用于服务节点出现故障时的连接重定向,保持服务不中断,提高可靠性;数据库中间件用于对数据库请求消息的拦截、解析、处理和转发;消息总线贯穿于数据库中间件和数据库服务器之间,它负责将数据中间件发送的读写操作进行全局排序,保证数据一致性,并将排序结果发送给数据库服务器。本发明为获得具有高可用性的高性能数据库提供了一条切实可行的途径,具有较高的可用性、良好的可扩展性、易于构建和管理的特点。
申请公布号 CN101183377B 申请公布日期 2010.09.08
申请号 CN200710168721.3 申请日期 2007.12.10
申请人 华中科技大学 发明人 金海;邵志远;陈冠华;蒋怀贞;陆晓雯;陈华才;张德;于集东
分类号 G06F17/30(2006.01)I;G06F11/14(2006.01)I;G06F9/46(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 华中科技大学专利中心 42201 代理人 曹葆青
主权项 一种基于消息中间件的高可用性数据库集群系统,包括由M台数据库服务器(4)构成的数据库服务层,其特征在于:该系统在应用层和数据库服务层(4)之间设置有中间层,中间层包括N个应用代理(2),M个数据库中间件(3)及消息总线,1≤N≤16,1≤M≤8;应用代理(2)用于服务节点出现故障时的连接重定向,保持服务不中断,提高可靠性;数据库中间件(3)用于对数据库请求消息的拦截、解析、处理和转发;消息总线贯穿于数据库中间件(3)和数据库服务器(4)之间,它负责将数据库中间件(3)发送的读写操作进行全局排序,保证数据一致性,并将排序结果发送给数据库服务器(4);数据库中间件(3)包括消息接收模块(3A)、MySQL消息解析模块(3B)、SQL语句解析模块(3C)、请求执行与结果处理模块(3D)、消息处理模块(3E)、故障检测模块(3F)、数据恢复模块(3G)、日志模块(3H)、组通信模块(3I)和并发控制模块(3J);消息接收模块(3A)用于监听端口信息,接收来自上层数据库请求,从已建立的MySQL连接池中选择空闲连接提供初始化、中断、SQL命令查询、删除、插入、修改数据库服务,将接收到的消息处理后交由MySQL消息解析模块(3B);MySQL消息解析模块(3B)用于解析消息接收模块获得的MySQL消息,区分消息类型,解压分析得到SQL命令并发送给SQL语句解析模块(3C)进行后续处理;SQL语句解析模块(3C)用于从MySQL消息解析模块(3B)获得MySQL消息中读、写命令,解析出命令的类型;如果是非写命令,直接转交请求执行与结果处理模块(3D);如果是写命令,解析结果返回给消息处理模块(3E);请求执行与结果处理模块(3D)用于将本地节点的只读信息直接发送给数据库服务器(4)执行,全局写命令发送给并发控制模块(3J),比对分析执行结果并返回给应用代理(2);消息处理模块(3E)负责系统中的消息处理和转发,将处理后的信息通过组通信模块(3I)置于消息总线上,转发给其它数据节点;同时,接收经由组通信模块(3I)传递来的其它数据节点消息;包含写命令的组通信消息全局排序后,解析出MySQL消息传递给请求执行与结果处理模块(3D)执行;发送前和接收到结果后通过日志模块(3H)写更新日志和完成日志;获得故障消息时,调用故障检测模块(3F)分析处理;故障检测模块(3F)利用消息处理模块(3E)获得的系统组成员变更的信息,分析系统故障,当由新节点加入或者故障节点恢复时调用数据恢复模块(3G)进行数据同步;数据恢复模块(3G)利用日志模块(3H)提供的更新日志,分析新加入节点或待恢复节点与正常节点的数据差异,对数据进行同步处理,直至所有节点达到数据库一致;日志模块(3H)用于定义数据恢复的更新日志、增量恢复脚本数据格式,为消息处理模块(3E)和数据恢复模块(3G)提供日志的访问接口;组通信模块(3I)为消息处理模块和消息总线的接口;并发控制模块(3J)根据请求执行与结果处理模块(3D)的结果,利用分布式锁表,控制更新事务在全局执行顺序的一致。
地址 430074 湖北省武汉市洪山区珞喻路1037号