加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

大规模MySQL运维陷阱:使用MyCat踩坑篇

发布时间:2018-10-15 00:38:31 所属栏目:编程 来源:高可用架构
导读:【新品产上线啦】51CTO播客,随时随地,碎片化进修 引子 漫衍式数据库,已经进入了全面快速成长阶段,这种成长,是与时俱进的,与人的需求是分不开的,由于此刻信息期间的高速成长,导致数据量和买卖营业量越来越大。这种征象起首导致的就是存储瓶颈,由于MySQL
副问题[/!--empirenews.page--] 【新品产上线啦】51CTO播客,随时随地,碎片化进修

引子

漫衍式数据库,已经进入了全面快速成长阶段,这种成长,是与时俱进的,与人的需求是分不开的,由于此刻信息期间的高速成长,导致数据量和买卖营业量越来越大。这种征象起首导致的就是存储瓶颈,由于MySQL数据库,实质上,照旧一个单机版本的数据库,而只要是单机,就肯定会碰着的一个题目就是存储题目,由于存储是硬需求,而CPU和内存假如不足的话,只是机能欠好,并不会直接否认方案可能架构。

存储题目的办理,着实我们每一家公司可能小我私人,都一向在全力着。办理方案或许有三个方面:

增大磁盘

这种方法,应该是最直接,最简朴的方案了,由于磁盘空间不敷了,虽然加磁盘是手到病除,好比此刻是800G,可以增进到2T,这是没题目的,假云云刻已经到达了2T,虽然,照旧可以增进到5T的盘,但现实上,这个时辰也许DBA就要捏把汗了,这么大数据量的MySQL实例,怎样运维?假如数据坏了,怎样规复呢?时刻本钱呢?5T的数据量,已经很是吓人了,预计在业内各大公司,没有DBA想要本身运维的MySQL实例到达这个量级吧?着实我小我私人以为,这个已经是不能接管的量了,最吻合的最好保持在1T以下即可。高出这个就要想步伐了。虽然这个数据量不宜到达这个巨细的缘故起因,也许会有人思量到这是机能的题目,着实否则,可能机能题目很小,由于InnoDB回收的是B+树的存储方案,小表最坏环境下没有查到数据是要找3层,也就是3个页面的IO,而大表必要的是4个页面的IO,影响不大。

数据压缩

为了镌汰数据对磁盘空间的占用,我们凡是也会将数据做压缩处理赏罚,通过一个语句即可搞定,是InnoDB原生支持的一种方法,一样平常环境下,会将数据占用镌汰到原本的三分之一到一半不等,结果照旧足够明明的,不外这样处理赏罚之后的数据,在机能上会有所降落,对付相应要求较量高的营业,也许必要审慎思量一下,但这种方法,也许照旧治标不治本,在数据量继承增添的环境下,过段时刻之后,依然面对沟通的题目,这种环境下,就不能继承行使这种方法来实现了。

数据分片

数据分片的办理方案,此刻业内也用得许多,这种方案已经超出了MySQL自己,包罗HBase、Redis等也都在行使这种方案,应该嗣魅这种方案是最具扩展性的,而且可以称得上是无穷扩展,而上面两种方案,基础谈不上扩展性。以是这种方案在业内成为主流,而且这种方案才气称得上是漫衍式存储,详细的实现也层出不穷,虽然也存在优越的漫衍式办理方案,也存在一些“伪”漫衍式方案了。

漫衍式办理方案需求

扩展性

行使漫衍式,着实最首要的就是扩展性,假如空间不敷了,可以很利便轻易的扩展节点个数,而且将数据做新的均衡处理赏罚。这个进程要不影响营业行使,对营业透明。

支持事宜

漫衍式数据库,对付营业自己,行使方面与单机区别不大,也就是对营业透明,由于行使MySQL是支持事宜的,那么MySQL变身为漫衍式之后,事宜特征照旧不能少的,以是整体上看来,照旧要支持漫衍式事宜。

SQL语句无穷制

营业需求的多样性,导致在SQL需求上面,都是较量普及的,针对营业的透明性,假如某些SQL语句不支持,那这样导致的题目是,一方面,限定了营业措施的成果和机能,另一方面,导致营业措施与“漫衍式数据库”的绑缚题目。

机能足够好

行使漫衍式数据库,着实根基上是对机能的要求较量低的营业才会这样选择,纵然是这样,照旧机能越高,越多人才会选择这样的漫衍式数据库。

元数据改观透明性

元数据改观,在任何数据库中都是存在的,在单点环境下,改表操纵我们有多种友爱的要领来实现,但到了漫衍式情形下,也许这种操纵就成为了题目,由于数据的分片导致了元数据的改观必要多点修改,进而许多题目就来了,好比原子性、数据可见性、正确性等等,以是这是最根基的题目。

底层数据库的高可用性

话说经济基本抉择上层构筑,在漫衍式数据库中也是一样的,假如底层数据库的不不变,可能数据复制耽误,亦或呈现数据纷歧致的题目,则上层应用的会见正确性就没法担保,以是底层数据库最根基的就是担保数据同等性(高可用)。

风行漫衍式数据库办理方案

中间件分库分表(伪漫衍式)

在MySQL界,一个存在好久的话题,就是:

哪此中间件实现的分库分表方案较量好啊?

虽然对付统一个题目,差异人有差异的领略,也都具有两面性的特性,有人说好,也有人说欠好,我们起首看一下这种方案是怎样实现的。

大局限MySQL运维陷阱:行使MyCat踩坑篇

MyCat的实现架构或许上上图所示,着实假如只看图的话,这样的架构真是十全十美,自动分片,自动聚合,漫衍平衡都实现的很是好。但究竟并非云云。

我们可以通干涉答的方法,一步步认清晰这种方法的焦点题目:

MyCat怎样知道数据分片道理,可能说他是怎样抉择路由路径的?

这个题目,在图上面是看不出来的,MyCat是怎样界说可能抉择一条SQL语句的执行方法,可能怎样抉择去那边取数据及写入到那边的?办理这样的题目是必要某一个处所来存储的,它的做法是——schema.xml设置文件,竟然用设置文件来搞定。那这样题目就多了,修改分库分表法则之后,怎样担保设置与数据同步更新?纵然不行使schema.xml设置文件,而是用数据库存储,那设置法则的改观与数据节节点中数据的迁徙,也是没步伐担保同一的,势必会对营业造成影响。

假如必要扩展节点了,而且必要做rebalance,怎样来做?

许多用户,根基都是从头筹备一套集群,可能先把数据一点点手动导出导入,导到方针节点之后,然后去手动修改schema.xml设置文件,然后做一次reload操纵,这样就实现了从头路由,但这样同样会导致上面的功效。而且这个进程,必要处理赏罚好大都据,处理赏罚完成之后各类搜查,而且占用空间必要两倍,这样折腾,一个DBA只要干一次,也许就有告退的激动。

全局表是什么对象?

MyCat支持一个所谓的全局表,用来办理跨节点数据聚合的题目,实现要领是在每一个分片上面,都建设这样的全局表,它的界说是不怎么修改,查询较量频仍表可以界说为全局表,这样的话在每一个分片节点上,只要用到这个表,就可以实现当地查询毗连等操纵,是可以办理部门题目,但题目是假如分片多的话(若是分片100个),怎样担保数据同等性?这么多节点的XA事宜影响是什么?假如呈现纷歧致可能会见错误,引起的题目就是数据功效错误,这样的功效必定不是营业想要看到的吧?这还不是最要害的,一个数据库集群,搞这么一个非凡处理赏罚的对象是何原理?

MyCat毕竟做了什么工作?

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读