一种基于监控系统的MySQL分库分表设计方法及系统与流程

文档序号:32436615发布日期:2022-12-06 19:20阅读:27来源:国知局
一种基于监控系统的MySQL分库分表设计方法及系统与流程
一种基于监控系统的mysql分库分表设计方法及系统
技术领域
1.本发明涉及数据库技术领域,具体为一种基于监控系统的mysql分库分表设计方法及系统。


背景技术:

2.传统的将数据集中存储至单一数据节点的解决方案,在性能、可用性和运维成本这三方面已经难于满足互联网的海量数据场景。从性能方面来说,由于关系型数据库大多采用b+树类型的索引,在数据量超过阈值的情况下,索引深度的增加也将使得磁盘访问的io次数增加,进而导致查询性能的下降;同时,高并发访问请求也使得集中式数据库成为系统的最大瓶颈。
3.现有技术中,在传统的关系型数据库无法满足互联网场景需要的情况下,将数据存储至原生支持分布式的nosql的尝试越来越多。但nosql对sql的不兼容性以及生态圈的不完善,使得关系型数据库的地位却依然不可撼动。通过分库和分表进行数据的拆分来使得各个表的数据量保持在阈值以下,以及对流量进行疏导应对高访问量,是应对高并发和海量数据系统的有效手段。数据分片的拆分方式又分为垂直分片和水平分片。
4.但是,读写分离虽然可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题。这包括多个主库之间的数据一致性,以及主库与从库之间的数据一致性的问题。并且,读写分离也带来了与数据分片同样的问题,它同样会使得应用开发和运维人员对数据库的操作和运维变得更加复杂。监控数据日益增长,造成关系型数据库索引层数过高,引起得性能急剧下降问题。


技术实现要素:

5.本发明的目的在于提供一种基于监控系统的mysql分库分表设计方法及系统,以解决上述背景技术中提出的问题。
6.为实现上述目的,本发明提供如下技术方案:一种基于监控系统的mysql分库分表设计方法,所述基于监控系统的mysql分库分表设计方法包括以下步骤:
7.对应用提供访问接口,提供业务易于识别、通用的sql连接器;
8.对数据进行拆分、汇总而进行的分库分表表现,按照配置规则定位数据所在位置,执行相对应的sql尽量小代价的将所需数据返回给客户端;
9.提供多种类型的分库数据库提供数据存储空间。
10.优选的,对数据进行拆分、汇总而进行的分库分表表现时,生成配置文件,所述配置文件包括所述数据库中每个物理表和逻辑表的对应关系。
11.优选的,文件包括数据库类型、数据库连接节点信息、主机地址及端口、用户名密码等服务信息;预定义分表规则,例如取余、hash、日期时间等类型,另外可自定义分片规则。
12.优选的,执行相对应的sql尽量小代价的将所需数据返回给客户端时,采用透明化
的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持;
13.提供mysql和postgresql版本,使用任何兼容mysql/postgresql协议的访问客户端。
14.优选的,执行相对应的sql尽量小代价的将所需数据返回给客户端时分为三种运行模式:
15.内存模式,初始化配置或执行sql等造成的元数据结果变更的操作,仅在当前进程中生效;
16.单机模式,能够将数据源和规则等元数据信息持久化;
17.集群模式,提供了多个实例之间的元数据共享和分布式场景下状态协调的能力。
18.一种基于监控系统的mysql分库分表设计系统,该系统由顶端客户端模块、中间处理层模块以及数据存储层模块构成;
19.顶端客户端模块,用于对应用提供访问接口,提供业务易于识别、通用的sql连接器;
20.中间处理层模块,用于对数据进行拆分、汇总而进行的分库分表表现,按照配置规则定位数据所在位置,执行相对应的sql尽量小代价的将所需数据返回给客户端;
21.数据存储层模块,用于提供多种类型的分库数据库提供数据存储空间。
22.优选的,所述中间处理层模块中,生成配置文件,所述配置文件包括所述数据库中每个物理表和逻辑表的对应关系。
23.优选的,所述中间处理层模块中,文件包括数据库类型、数据库连接节点信息、主机地址及端口、用户名密码等服务信息;预定义分表规则,例如取余、hash、日期时间等类型,另外可自定义分片规则。
24.优选的,所述中间处理层模块中,执行相对应的sql尽量小代价的将所需数据返回给客户端时,采用透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持;
25.提供mysql和postgresql版本,使用任何兼容mysql/postgresql协议的访问客户端。
26.优选的,所述中间处理层模块分为三种运行模式:
27.内存模式,初始化配置或执行sql等造成的元数据结果变更的操作,仅在当前进程中生效;
28.单机模式,能够将数据源和规则等元数据信息持久化。
29.与现有技术相比,本发明的有益效果是:
30.本发明提出的基于监控系统的mysql分库分表设计方法及系统根据监控表数据生成规则来分析,数据主要为时间特征类型数据,所以根据表数据分片可以选择日期时间类型数据。由于监控数据有相对应的保存时间,由此可以预估数据量来决定对于表的分片数。为保证整体系统高可用性,引用mha来保证后端数据存储层整体高可用,用于后端master发生故障后切换。为保证中间处理层故障,引入keepalived保证处理层高可用性。
附图说明
31.图1为本发明读写分离示意图;
32.图2为本发明整体架构图;
33.图3为本发明实施例三规划系统架构图。
具体实施方式
34.为了使本发明的目的、技术方案进行清楚、完整地描述,及优点更加清楚明白,以下结合附图对本发明实施例进行进一步详细说明。应当理解,此处所描述的具体实施例是本发明一部分实施例,而不是全部的实施例,仅仅用以解释本发明实施例,并不用于限定本发明实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.在本发明的描述中,需要说明的是,术语“中心”、“中”、“上”、“下”、“左”、“右”、“内”、“外”、“顶”、“底”、“侧”、“竖直”、“水平”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“一”、“第一”、“第二”、“第三”、“第四”、“第五”、“第六”仅用于描述目的,而不能理解为指示或暗示相对重要性。
36.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
37.出于简明和说明的目的,实施例的原理主要通过参考例子来描述。在以下描述中,很多具体细节被提出用以提供对实施例的彻底理解。然而明显的是,对于本领域普通技术人员,这些实施例在实践中可以不限于这些具体细节。在一些实例中,没有详细地描述公知方法和结构,以避免无必要地使这些实施例变得难以理解。另外,所有实施例可以互相结合使用。
38.实施例一
39.本发明提供一种技术方案:一种基于监控系统的mysql分库分表设计方法,所述基于监控系统的mysql分库分表设计方法包括以下步骤:
40.对应用提供访问接口,提供业务易于识别、通用的sql连接器;
41.对数据进行拆分、汇总而进行的分库分表表现,生成配置文件,所述配置文件包括所述数据库中每个物理表和逻辑表的对应关系,按照配置规则定位数据所在位置,执行相对应的sql尽量小代价的将所需数据返回给客户端;文件包括数据库类型、数据库连接节点信息、主机地址及端口、用户名密码等服务信息;预定义分表规则,例如取余、hash、日期时间等类型,另外可自定义分片规;执行相对应的sql尽量小代价的将所需数据返回给客户端时,采用透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持;提供mysql和postgresql版本,使用任何兼容mysql/postgresql协议的访问客户端;执行相对应的sql尽量小代价的将所需数据返回给客户端时分为三种运行模式:
42.内存模式,初始化配置或执行sql等造成的元数据结果变更的操作,仅在当前进程中生效;适用于集成测试的环境启动,方便开发人员在整合功能测试中集成而无需清理运行痕迹;单机模式,能够将数据源和规则等元数据信息持久化;但无法将元数据同步至多个实例,无法在集群环境中相互感知。通过某一实例更新元数据之后,会导致其他实例由于获取不到最新的元数据而产生不一致的错误。适用于工程师在本地搭建环境;集群模式,提供了多个实例之间的元数据共享和分布式场景下状态协调的能力,在真实部署上线的生产环境,必须使用集群模式。它能够提供计算能力水平扩展和高可用等分布式系统必备的能力。集群环境需要通过独立部署的注册中心来存储元数据和协调节点状态;
43.提供多种类型的分库数据库提供数据存储空间。
44.实施例二
45.一种基于监控系统的mysql分库分表设计系统,该系统由顶端客户端模块、中间处理层模块以及数据存储层模块构成;
46.顶端客户端模块,用于对应用提供访问接口,提供业务易于识别、通用的sql连接器;
47.中间处理层模块,用于对数据进行拆分、汇总而进行的分库分表表现,按照配置规则定位数据所在位置,执行相对应的sql尽量小代价的将所需数据返回给客户端;生成配置文件,所述配置文件包括所述数据库中每个物理表和逻辑表的对应关系;文件包括数据库类型、数据库连接节点信息、主机地址及端口、用户名密码等服务信息;预定义分表规则,例如取余、hash、日期时间等类型,另外可自定义分片规则;执行相对应的sql尽量小代价的将所需数据返回给客户端时,采用透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持;提供mysql和postgresql版本,使用任何兼容mysql/postgresql协议的访问客户端;中间处理层模块分为三种运行模式:内存模式,初始化配置或执行sql等造成的元数据结果变更的操作,仅在当前进程中生效;单机模式,能够将数据源和规则等元数据信息持久化;
48.数据存储层模块,用于提供多种类型的分库数据库提供数据存储空间。
49.实施例三
50.以下实施方式仅用于说明而非限制本发明所述技术方案,虽然以下具体实施方式对本专利所述技术方案做了详细的阐述,本领域相关人员应当理解,不脱离本发明技术方案思想范围的修改或同等替换,依然在本发明所涵盖的技术方案的权利要求范围当中。
51.首先确定应用系统需要分表的表结构,从中选择分片键,确定分片数及分片规则。
52.规划系统架构,确定后端节点是由单集群模式还是多集群模式,如果分片数目过多而且单机性能存在瓶颈,可以将数据节点分片至多个数据节点。后端节点选择mysql主从,建议一主两从,通过mha管理主从架构高可用,一套mha可以管理多套集群。
53.管控的挑战,在于对集群的集中化管理的统一管理能力以及在单点出现故障时精细化的操作能力。
54.集中化管理的挑战体现在将包括数据库存储节点和中间件计算节点的状态统一管理,并且能够实时的探测到分布式环境下最新的变动情况,进一步为集群的控制和调度提供依据。
55.面对超负荷的流量下,针对某一节点进行熔断和限流,以保证整个数据库集群得
以继续运行,是分布式系统下对单一节点控制能力的挑战。
56.面对日益增加的系统访问量,数据库的吞吐量面临着巨大瓶颈。对于同一时刻有大量并发读操作和较少写操作类型的应用系统来说,将数据库拆分为主库和从库,主库负责处理事务性的增删改操作,从库负责处理查询操作,能够有效的避免由数据更新导致的行锁,使得整个系统的查询性能得到极大的改善。
57.通过一主多从的配置方式,可以将查询请求均匀的分散到多个数据副本,能够进一步的提升系统的处理能力。使用多主多从的方式,不但能够提升系统的吞吐量,还能够提升系统的可用性,可以达到在任何一个数据库宕机,甚至磁盘物理损坏的情况下仍然不影响系统的正常运行。
58.与将数据根据分片键打散至各个数据节点的水平分片不同,读写分离则是根据sql语义的分析,将读操作和写操作分别路由至主库与从库。
59.选择分片中间件,调研测试对比两款中间件:sharding-proxy和dble,通过对比测试发现sharding-proxy性能相对dble高,而支持sql语句基本相同,支持功能相对完善,所以采用sharding-proxy。中间层高可用架构可以搭建zookeeper来保证其高可用性,主要用于同步配置数据。
60.高可用是现代系统的最基本诉求,作为系统基石的数据库,对于高可用的要求也是必不可少的。
61.在存算分离的分布式数据库体系中,存储节点和计算节点的高可用方案是不同的。对于有状态的存储节点来说,需要其自身具备数据一致性同步、探活、主节点选举等能力;对于无状态的计算节点来说,需要感知存储节点的变化的同时,还需要独立架设负载均衡器,并具备服务发现和请求分发的能力。
62.中间层自身提供计算节点,并通过数据库作为存储节点。因此,它采用的高可用方案是利用数据库自身的高可用方案做存储节点高可用,并自动识别其变化。
63.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1