MySQL数据库的集群系统技术方案

技术编号:16233198 阅读:49 留言:0更新日期:2017-09-19 14:43
本发明专利技术公开了一种MySQL数据库的集群系统,包括多个服务器,其中每个服务器均包括MySQL数据库、代理模块和MySQL守护进程模块,其中,所述MySQL数据库,用于存储用户数据;所述代理模块,用于实际处理用户请求,维护与集群系统中其他服务器上MySQL数据库的连接;和所述MySQL守护进程模块,用于负责监听MySQL数据库的状况。

MySQL database cluster system

The invention discloses a MySQL database cluster system, including multiple servers, each server includes MySQL database, agent module and the MySQL daemon module, wherein, the MySQL database is used to store user data; the proxy module, used to handle user requests, maintain the connection with the MySQL database on the server in the cluster system; and the MySQL daemon module, responsible for monitoring the situation for the MySQL database.

【技术实现步骤摘要】
MySQL数据库的集群系统
本专利技术涉及MySQL数据库,特别是涉及一种MySQL数据库的集群系统。
技术介绍
MySQL数据库以其稳定和友好方便的使用等优点得到了广泛应用,随着大数据技术的盛行,数据的海量存储要求越来越高,也就对MySQL数据库所需存储的数据越来随大,但是单个MySQL数据库无法存储所有数据。急需一种MySQL集群解决方案,因此,需要将MySQL数据库进行集群化:一方面能使用MySQL数据库自身的功能特性;一方面能自动分库分表,同时保证集群的可用性。在当前的解决方案中,针对MySQL数据库进行的读出多写入少,主要提供在线分析,每个用户ID产生的数据相互独立,对于一个用户来说,又需要从不同纬度对该用户进行描述。所以针对一个用户来说,可以建一个独立的数据库,对于该用户不同纬度的描述可以建不同的多个表,各个表之间相互独立。但是用户个数会增加,单台MySQL数据库的数据存储成为了瓶颈,需要一个MySQL数据库集群方案提供数据扩展能力,同时保证MySQL数据库服务的可用性以及数据查询的快速响应能力。在目前的一些MySQL数据库的集群实现方法中,利用根据表中的一个或多个字段进行分库分表操作,并且在MySQL前端有一个中介(proxy)负责SQL语句的解析以及将SQL语句的执行分发。关于根据表中的字段分库分表操作一般包括range、hash和一致性hash等方式,这些方式分别有其自身缺陷:range方式:简而言之,当字段值位于某个范围时就被分配至指定机器上;当数据发生倾斜时,负载不够均衡,当新增MySQL节点时,需要重新指定分配方案。hash方式:也会造成数据倾斜,同时当新增MySQL节点时,所有MySQL节点的数据都会发生迁移。一致性hash方式:新增MySQL节点时,少量MySQL节点的数据会发生迁移。上述分配原则存在几个问题:1、只解决了数据的垂直切分,不支持同一个数据库内表的分配;2、在分配时未考虑到当前集群的情况,比如硬盘使用情况、内存使用等,比如某一个用户的数据量比较大,磁盘占用多,或者该用户的数据为热数据,导致该机器的负载比较高,在这样的情形下,其他用户的数据可以拆分到其他负载低得集群上。同时,存在某些业务场景,即,每个用户或项目的数据完全独立,在MySQL数据库中就是一个独立数据库,该独立数据库的数据在单独的数据文件下,不同的独立数据库的查询相互不影响。但是用户和项目是不断增加的,即独立数据库不断增加。上述业务场景对于MySQL数据库来说存储是其一大瓶颈,需要一段时间后迁移数据库,可扩展性不强。MySQL数据库的集群实现方法的切分(shard)方式以及新增节点的平衡重建对于上述业务场景来说粒度较粗,同时不同项目之间的数据查询性能会受影响。
技术实现思路
本专利技术的目的在于,控制的粒度是细到一个用户或者一个项目,可以控制其在MySQL数据库中存储为单独的数据库,当平衡重建时,可以迁移一个数据库,或者一个数据库中的若干表。有鉴于此,根据本专利技术的第一方面,本专利技术提供一种MySQL数据库的集群系统,包括多个服务器,其中每个服务器都包括MySQL数据库、代理模块和MySQL守护进程模块,其中,所述MySQL数据库,用于存储用户数据;所述代理模块,用于实际处理用户请求,维护与集群系统中其他服务器上MySQL数据库的连接;所述MySQL守护进程模块,用于负责监听MySQL数据库的状况。优选地,所述系统还包括监听维护模块,用于存储元数据。在本专利技术的一些实施方式中,所述监听维护模块包括执行监听维护后台单元,用于对所述MySQL数据库的节点的状态进行维护。在本专利技术的又一些实施方式中,所述监听维护模块包括指令单元,用于执行MySQL数据库的平衡重建和历史项目数据下线的指令。优选地,所述代理模块通过所述监听维护模块解析用户SQL数据库和MySQL数据库的对应关系。优选地,所述代理模块能够更新所述监听维护模块的存储信息。优选地,所述MySQL守护进程模块能够监听所述监听维护模块的心跳。优选地,所述MySQL守护进程模块在启动时向所述监听维护模块汇报当前MySQL数据库的状态信息和表的信息。在本专利技术的一些实施方式中,所述系统还包括用户响应模块,用于均衡各个服务器的代理模块的负载。在本专利技术的又一些实施方式中,所述代理模块直接访问用户SQL数据库。根据本专利技术的第二方面,本专利技术提供一种MySQL数据库的集群的实现方法,包括:设置监听维护模块,并在每个服务器设置MySQL数据库、代理模块和MySQL守护进程模块;所述代理模块响应用户请求,同时保留与集群系统中其他服务器上MySQL数据库的连接池,创建表并存储在所述监听维护模块中;和所述MySQL守护进程模块监听MySQL数据库的状况和所述监听维护模块的心跳,并将信息汇报给所述监听维护模块。优选地,所述MySQL守护进程模块汇报的信息包括磁盘的占用状况和/或服务器的负载状况。在本专利技术的一些实施方式中,所述方法还包括利用用户响应模块接收用户请求,根据监听维护模块存储的信息实现负载均衡,转发请求并返回结果。优选地,所述代理模块利用已有的NoSQL缓存存储查询结果。更优选地,所述代理模块利用Redis作为缓存存储查询的结果。在本专利技术的另一些实施方式中,所述监听维护模块的指令单元对单个表设置主从服务器的读写比重。在本专利技术的又一些实施方式中,所述监听维护模块利用Watcher机制实现新节点的加入和/或利用Session机制实现旧节点的下线。根据本专利技术的第三方面,本专利技术提供一种减少内存占用的元数据存储方法,其中用比特代替服务器的IP。在本专利技术的一些实施方式中,表的名称用比特代替。优选地,用户ID用int表示。附图说明下面将通过参照附图详细描述本专利技术的优选实施例,使本领域的普通技术人员更清楚本专利技术的所述及其它特征和优点,附图中:图1是根据本专利技术的具体实施例的MySQL数据库的集群系统的示意图。具体实施方式在下文的描述中,给出了大量具体的细节以便提供对本专利技术更为彻底的理解。然而,对于本领域技术人员来说显而易见的是,本专利技术可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本专利技术发生混淆,对于本领域公知的一些技术特征未进行描述。在本专利技术中,术语“Redis”是一种高性能的key-value存储系统,支持存储的value类型很多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。术语“MySQL”是一种关联数据库管理系统,关联数据库将数据保存在不同的表中。术语“NoSQL”(NotOnlySQL)指非关系型的数据库,包括但不限于键值(Key-Value)存储数据库、列存储数据库、文档型数据库、图形(Graph)数据库。术语“心跳”(Heartbeat)是Linux-HA工程的一个组成部分,具有可靠消息通信机制。最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送本文档来自技高网
...
MySQL数据库的集群系统

【技术保护点】
MySQL数据库的集群系统,包括多个服务器,其中每个服务器均包括MySQL数据库、代理模块和MySQL守护进程模块,其中,所述MySQL数据库,用于存储用户数据;所述代理模块,用于实际处理用户请求,维护与集群系统中其他服务器上MySQL数据库的连接;所述MySQL守护进程模块,用于负责监听MySQL数据库的状况。

【技术特征摘要】
1.MySQL数据库的集群系统,包括多个服务器,其中每个服务器均包括MySQL数据库、代理模块和MySQL守护进程模块,其中,所述MySQL数据库,用于存储用户数据;所述代理模块,用于实际处理用户请求,维护与集群系统中其他服务器上MySQL数据库的连接;所述MySQL守护进程模块,用于负责监听MySQL数据库的状况。2.如权利要求1所述的系统,其中还包括监听维护模块,用于存储元数据。3.如权利要求2所述的系统,其中所述监听维护模块包括执行监听维护后台单元,用于对所述MySQL数据库的节点的状态进行维护。4.如权利要求2或3所述的系统,其中所述监听维护模块包括指令单元,用于执行MySQL数据库的平衡...

【专利技术属性】
技术研发人员:李峰
申请(专利权)人:精硕科技北京股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1