mycat 不得不说的缘分

                                 


1,愕然回首。它在灯火阑珊处

关于mysql集群中间件。曾经写在应用程序里面,由开发者实现,在配置文件中面写多个数据源,写库一个数据源,读库一个数据源,笨拙不高效,由于程序猿的差异化。效果并非特别理想。

 

后来。组织了开发者写了一个自己主动识别读写的功能模块接口,让开发者调用,这样能满足特定场景的业务需求。可是适应性比較窄。

 

后来出了cobar,可是在高并发这里出壳了,后来在一次无意中的演讲中,见到leader在介绍了mycat,于是眼前一亮。就是它了。不早不晚。在我特别须要的时候,就进入了我的生活。

 

2。人约黄昏后,月上柳梢头

记得leader说过,看百集非诚勿扰记千句乐嘉恋爱宝典,不如妹子约起……

 

万事开头难。兴趣攻其艰—>由于喜欢所以自然而然開始学习mycat。途中也认识了非常多mycat的同道门,众所周知。对于我们这些非科班出生的。并且对理论研究不是那么深入的。实践永远是最好的最有效率的学习途径。

 

于是有了第一次,还蛮简单快捷方便的,从下载到安装然后试用,大概不到30分钟吧,如笔记所记录:

 

mycat - 解开它神奇的面纱--:http://blog.csdn.net/mchdba/article/details/51155340                                                                                                                                                           

 

 

 

之后立即做了第一个练习,mycat路由转发原理深度解析。对于此的理解是,mycat接到应用端过来的sql。它会去依据sql中 from后面的表名字,去配置schema.xml里面读取当中的全部datanode资源,然后一个个去路由去尝试请求,详情见我的blog整理:

 

Mycat路由转发原理深度解析:http://blog.csdn.net/mchdba/article/details/50616527                                                                                                                                                           

 

 

 

疑惑:假设做过数据库的缓存或者对mysqllimit有印象的话。应该记得有这种场景,当limit 找到记录后,就exit不会继续遍历以下未遍历的数据记录了。

不知道mycat能否够做到这一点?貌似看debug日志是遍历了全部的datenode节点了。

 

PS:做这2个我还是得心应手。由于有linux基础,有mysql基础,所以算是比較顺利,好的开头是成功的一半。更加坚信自己的信心和选择了。

 


3,无奈是分离。victor大神

接下来開始接触mycat比較show time的部分了,读写分离和主从切换,对于这2个场景。我接触的时间蛮久了,可是实现的方式方法多种多样,曾经读写分离用原始的刀耕火种,开发者在ibatis/mybatis里面写死了写库连接和读库连接。之后keepalived+lvs,再之后用了f5的vip负载均衡配置。f5性能固然比較好,可是费用费用也不少的,所以对于互联网已经中小型公司来说。这笔支出可不实惠啊。

 

而mycat通过配置readHost和writeHost来实现读写分离。里面有一些配置,比方:

balance为1:让全部的readHost及备用的writeHost參与select的负载均衡。

 
switchType为2:基于MySQL主从同步的状态决定是否切换。

 
heartbeat:主从切换的心跳语句必须为show slave status

 

在这里遇到配置的时候,遇到一些问题。在请教了victor大神之后。他给了我他的实现思路和方法,我參考之后,顺利攻克了,把自己这部分的学习整理成了笔记,例如以下:

 

mycat读写分离与主从切换:http://blog.csdn.net/mchdba/article/details/50616534                                                                                                                                                     

 

 

PS:想要victor大神的联系方式吗,在以下留言评论区。留下你的email地址并标注victor,我发你email告诉你的。

 

blog源地址:http://blog.csdn.net/mchdba/article/details/51162243,谢绝转载。


4,庖丁血牛之mycat的黑匣子

 

对于mycat来说,打开debug这个帕朵拉魔盒,一切一切真相都暴露在大众面前,在这里你能够看到select的整个舞蹈轨迹。也能够看到全部的字符集的变换。千人千面万般操作尽在mycat.log。所以学会分析mycat.log日志,全部的问题都不再是问题,对于此我深有体会,例如以下的整理:

 

Mycat黑匣子:http://blog.csdn.net/mchdba/article/details/51160495                                                                                                                                                                            

 

 

 

5,分纷纷,生活的主旋律

分析了mycat的黑匣子后。对于mycat背后的逻辑以及有了一定的深刻理解了,如今要进阶了,做更加难的事情了,这是分布式集群的重大特征。在业务量爆炸式增长的场景中。就须要提前考虑依据业务进行分片。在分片的学习中,也得到了victer大神和山狼的的指点,遗憾的是后来山狼由于工作忙碌。交流的越来越少了,而victor大神一直常常交流中,对于分片的尝试。整理在以下:

 

Mycat高可用分片er分片的2种场景:http://blog.csdn.net/mchdba/article/details/50655304                                                                                                                                               

Mycat连续分片-自己定义数字分片:http://blog.csdn.net/mchdba/article/details/50656337

Mycat连续分片-按日期分片:http://blog.csdn.net/mchdba/article/details/50656478

Mycat离散分片-枚举:http://blog.csdn.net/mchdba/article/details/50656478

Mycat离散分片-程序指定的分区分片:http://blog.csdn.net/mchdba/article/details/50656500

 

 

在分片的场景中。另一种业务类型,就是一个分片故障了,怎样迁移到新的分片,这个思路实现例如以下:

 

Mycat分片中高速迁移思路:http://blog.csdn.net/mchdba/article/details/50939614                                                                                                                                                            

Mycat分片中平滑迁移实施过程:http://blog.csdn.net/mchdba/article/details/50991649

 

 

6,瑕不掩瑜。mycat的斑点

Mycat有诸多长处,可是也有它不足的地方,比方分页、跨事务、存储过程、对db2、mongodb的支持等等,这些都须要了解熟悉。以免在使用的时候给别人挖坑,对这些方面,我们须要了解到实现的细节,然后再用案例去验证,分析问题症结所在,假设有java代码coding能力,甚至能够改动完好这些不足。对此有整理例如以下:

 

Mycat分页慢解惑、跨事务解析、注解调用存储过程:http://blog.csdn.net/mchdba/article/details/50719120                                                                                                             

 

 

 

7,健壮持久,多多益善

在互联网分布式应用中,最重要的就是高可用了,高可用能保证应用的持续可用性,这样能7*24,而mycat也有相似的集群架构,这是了解mycat深入mycat必须的历程:

 

Mycat集群实现:http://blog.csdn.net/mchdba/article/details/50867885                                                                                                                                                                 

 

 

为了mycat应用部署的健壮持续,我们须要多mycat进行全方位的监控,有了这些监控数据。我们能够了解到mycat执行的信息,对于优化mycat非常实用,关于这个我有整理例如以下:

 

Mycat性能採集:http://blog.csdn.net/mchdba/article/details/50727099                                                                                                                                                                   

 

 

了解到这里,我们就知道,在部署分布式集群架构之前,肯定须要进行各种压力測试,来了解mycat的阀值以及它能达到的性能极限。能支撑多少高并发、tps、qps等等。那么这里就有一个自带的工具能够达到我们的效果:

 

监控mycat压力測试的性能曲线:http://blog.csdn.net/mchdba/article/details/51050008                                                                                                                                      

 

 

PS:事实上走到这里。行程都是蛮轻松的,不太劳苦,有点小小得意了,仅仅是常言道人无远虑必有近忧,接下来就碰到问题了。

 


8。衣带渐宽终不悔,为伊消得人憔悴

第一道坎,连接不上oracle数据源:

在载入oracle数据源的时候,须要把oracle的jar包放到mycat安装文件夹下,通常是用这个ojdbc14.jar。放到/usr/mysql/mycat/lib文件夹以下。然后又一次载入下mycat生效。

 

第二道坎,中文乱码:

在熟悉这个里面。我遇到坎了。是最富盛名的中文乱码问题。oracle里面字符集是gbk,mysql里面是utf8,而mycat也是utf8。对于这种差异,怎样操作。我搜索了非常久,没有找到合适的方案,忙到半夜11点时候,咨询leader的时候,遇到了leader的一句神回复“设置成utg”,然后我设置在了mycat的配置文件server.xml里面:

[root@oracle_standby ~]# vim /usr/local/mycat/conf/server.xml                                                                                                                                                                                

<!DOCTYPE mycat:server SYSTEM "server.dtd">

<mycat:server xmlns:mycat="http://org.opencloudb/">

        <system>

        <property name="charset">utg</property>

……

结果我继续调试了,发现还是乱码。然后认为leader指点的应该没有错。可能是别的问题导致的,继续调试重组mycat各种情况调试,1个半小时过去后。还是乱码,然后引发了牛人静哥出来了。她说是字符集设置问题。并且我的设置utg是不正确的。然后我顿然醒悟,最终意识到leader的神回复utg是错误的,经验总结不能100%相信权威啊,由于万一不小心会被他带进坑里,结果我不得已回头又一次整理思路。而那时已经1:00了,窗外夜沉如水,我去冲了个凉水澡。回来继续研究。

 

泠静下来后,整理思路。再奋战了1个小时后,搞定了。思路整理例如以下:

Mycat对于数据库而言就是client,一般来讲client字符编码与数据库服务端一致就不会有什么问题,或者是严格超集,保证插入到数据库不因转码而丢失。client、系统终端、数据库三者字符庥得协调,否则不一致的话,会有字符集转换的问题,有时候。显示正确的,但不一定在数据库就保存正确,或者保存到数据库的数据编码正确,没准显示为乱码。

这就意味着,在oracle里面是gbk或者latin1啥都没有关系,仅仅要做好以下3点:

(1)。在迁移到mysql里面。在mycat平台上从oracle导出时候字符集设置为utf8

(2),在mycat平台上导入到mysql字符集也要设置为utf8

(3), 然后在mycat平台上查看数据也要设置字符集为utf8

做好了以上3点,三而合一,这样就能正常显示中文了。

 

Mycat平台上实现oracle迁移到mysql:http://blog.csdn.net/mchdba/article/details/50995059                                                                                                                                        

 

 

第二天闹钟换我起床,睡眼朦胧,镜中熊猫眼。^_^

 

 

9。奇女子静哥

看到她的名字“静哥”,我不由得自主想起了一首流传甚久的歌曲“我不是黄蓉我不懂武功我仅仅要静哥哥完美的爱情……”,这首歌曲是不是非常平民化非常雨非常有喜感啊,反正我认为蛮接地气的哈,歌曲地址是:http://bd.kuwo.cn/yinyue/90334?

from=baidu。由于作为金庸迷,对这个太敏感了,所以对她印象非常深刻,并且她mycat技术非常好口才也好,活脱脱一个现代版小黄蓉啊,并且据leader发的照片来看,确实是标准的江南美女。并且难得的是她刚工作不久还是单身。

 

SO说道在这里,大家都懂了吧。有想认识她学习mycat技术或者准备拓展mycat业务的,在文后评论区留下你的email地址并标注静哥。我会给你发email的告诉联系方式的。

 

 

10。瑞士军刀、亲亲山庄、中国开源第一门派

到此位置,mycat的重要功能点基本完毕了,然后就是师傅临进门修行在个人了,哦对了,还有Mycat最后一个重要点,mycat-eye,这个是蛮实用的,not only formyat,当然眼下还是一个半成品。梦想是成为mysql伴侣,仅仅要用了mysql,就离不开mycat-eye,当然梦想是美好。现实是须要我们大家一起去实践去完好它,虽然如此。mycat-eye还是有它独特的闪光点:

 

Mycat瑞士军刀:http://blog.csdn.net/mchdba/article/details/51059547                                                                                                                                                                               

 

最后,介绍下,mycat的带路人。leader-us。看名字。就知道他是mycat的发起人,架构实力非常深厚,口才也非常好,眼下给我感觉是技术领域中营销实力最强的、映像领域中技术实力最强的。

他能看到mycat的市场并且開始运作成立mycat高端服务公司,是非常有魄力的。

 

所以他有成为相似马云那样的企业家的潜质的,他的梦想是成立亲亲山庄,做高端技术服务和支持,成立咨询公司,并且做到中国的apache,成为国内开源界的No1,当然了个人实力有限,所以须要大家一起努力。眼下开启众筹活动,起步是一人5W。大概估计征集70几个人。启动资金有300W到400W左右,他就能够全职參与并运营亲亲山庄了。

 

亲亲山庄的选址是广州到珠海之间的海岛上,风景宜人,适合居住生活。

 

11。尾声。左兄与任正非、leader-us与马云

新成立的公司里面。有个左兄,非常传奇,大一在大学入伍,然后复员专业。来上海学IT。年纪轻轻,睡在地铁站,苦心专研数据库、系统、中间件,如今已经成为了业界大牛,上海地区mycat标杆人物,和他接触过,胆大心细脸皮厚,并且对朋友和身边人仗义。深深懂得利益均沾的道理并且也言行一致。认为他有任年轻时候的影子。未来成就无限。

 

然后就是leader-us。他有马云的口才。还有王坚的技术功底,能够说能说服非常多人,并且这次众筹选择的对象也非常准确,选择的是在北上广深一线城市税后1.5W的从业人员和南京武汉重庆福州二线城市税后1W的从业人群。对市场目标定位准确,所以leader-us成功的概率非常大,这也是我和左兄还有非常多朋友决定增加这个创业团队的主要原因吧。

 

眼下众筹已经结束,资金已经到位,已经開始开展mycat高端技术支持服务。大家有须要的,能够在以下评论区留下email地址,我会第一时间联系回复你的,谢谢。

转载于:https://www.cnblogs.com/clnchanpin/p/7363383.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python创建空元组_用Python创建空元组

python创建空元组Python | 空元组 (Python | empty tuple) In python, we can also create a tuple without having any element. An empty tuple is created using a pair of round brackets, (). 在python中&#xff0c;我们也可以创建一个没有任何元素的元组 。 使用一对圆括…

共享马扎的火爆,原来是一场营销!

如今&#xff0c;人们的生活仿佛已经被“共享化”&#xff1a;上班有共享单车、睡觉有共享床铺、商场有共享充电宝、去机场有共享巴士……好像除了男女朋友是自己的&#xff0c;其他都要共享了&#xff01;哎&#xff0c;不对&#xff01;前些日子&#xff0c;竟然还真有了共享…

什么是CDP(连续数据保护)?

CDP&#xff1a;连续数据保护 (CDP: Continuous Data Protection) CDP is an abbreviation of "Continuous Data Protection". It is also called as a real-time backup, is a system of data storage that backs up data in an organization or enterprise on a sy…

Git实战(二)原理

上次的博文Git实战&#xff08;一&#xff09;版本号控制概述中我们简介了一下版本号控制系统的概念&#xff0c;重点对版本号控制的三种类型进行了分析和对照&#xff0c;从本篇博文開始我们进入Git的世界&#xff0c;首先介绍一下Git实现版本号控制的原理。 Git与SVN等其它版…

什么是html的混杂模式_HTML的完整形式是什么?

什么是html的混杂模式HTML&#xff1a;超文本标记语言 (HTML: Hyper Text Markup Language) HTML is an abbreviation of Hypertext markup language. Hypertext markup language is a text based standard markup language used to create web pages and design documents whi…

PHP-Manual的学习----【语言参考】----【类型】-----【对象】

Object 对象1.对象初始化要创建一个新的对象 object &#xff0c;使用 new 语句实例化一个类&#xff1a; class foo{ function do_foo(){ echo "1111"; }}$bar new foo;echo $bar->do_foo();输出&#xff1a;1111注解&#xff1a;一个类可以初始化…

kotlin 两个数字相加_Kotlin程序交换两个数字

kotlin 两个数字相加Given two numbers, we have to swap them. 给定两个数字&#xff0c;我们必须交换它们。 Example: 例&#xff1a; Input:First number: 10Second number: 20Output:First number: 20Second number: 10To swap two numbers – here we are using third v…

Kotlin入门(14)继承的那些事儿

上一篇文章介绍了类对成员的声明方式与使用过程&#xff0c;从而初步了解了类的成员及其运用。不过早在《Kotlin入门(12)类的概貌与构造》中&#xff0c;提到MainActivity继承自AppCompatActivity&#xff0c;而Kotlin对于类继承的写法是“class MainActivity : AppCompatActiv…

在Scala中列出| 关于Scala列表的完整教程

Scala | 清单 (Scala | List) List in Scala is a collection that stores data in the form of a liked-list. The list is an immutable collection which means the elements of a list cannot be altered after the list is created. Lists are flexible with data types, …

MySQL单机多实例部署详解之------多实例分别定义不同的配置文件

mysql多实例安装---分别定义不同的配置文件1.安装MySQL需要的依赖包[rootMySQL ~]# yum install ncurses-devel libaio-devel cmake -y[rootMySQL ~]# rpm -qa ncurses-devel libaio-develncurses-devel-5.7-4.20090207.el6.x86_64libaio-devel-0.3.107-10.el6.x86_642.安装编译…

javascript模块_JavaScript中的模块

javascript模块JavaScript模块 (JavaScript Modules) One of the key features of programming fundamentals is breaking down your code into fragments. These fragments depending on its functionality have been coined various terms like functions, components, modul…

在mac上安装Docker

1.进入一下地址进行下载docker https://download.docker.com/mac/stable/Docker.dmg 进入后进行下载后进行安装 2.将其拖动到Appliaction中即可 3.第一打开会有一个这样的欢迎页面 3.检查是否安装完成 出现上图所示标示安装完成了

composer 检查镜像_检查N元树中的镜像

composer 检查镜像Problem statement: 问题陈述&#xff1a; Given two n-ary trees, the task is to check if they are mirrors of each other or not. 给定两个n元树&#xff0c;任务是检查它们是否互为镜像。 Note: you may assume that root of both the given tree as …

浪潮各机型前面板指示灯含义

NF560D2 NF3020M2 NF5020M3 NF5140M3 NF5212H2 NF5220 NF5224L2 NF5240M3 NF5270M3 NF5280M2 NF5280M3 NF5540M3 NF5580M3 NF8420M3 NF8520 NF8560M2 说明&#xff1a;转浪潮官网。

python dll 混合_Python | 条线混合图

python dll 混合In some of the cases, we need to plot a bar-line hybrid plot. This plot helps in a better understanding of dynamics as well as the relative magnitude of each point in the plot. Bar-Line Hybrid Plots are mostly used for the representation of …

测试八 赛后感受

测试八 当我打开T1的时候&#xff0c;就没有往下看题目了&#xff0c;主要是发现T1就是之前做过&#xff0c;而且我也看过题解的题目&#xff0c;接着就开始钻研&#xff0c;当然&#xff0c;也没什么好钻研的&#xff0c;大概思路还是知道的&#xff0c;再写写数据就已经很清晰…

推荐五个免费的网络安全工具

导读&#xff1a; 在一个完美的世界里&#xff0c;信息安全从业人员有无限的安全预算去做排除故障和修复安全漏洞的工作。但是&#xff0c;正如你将要学到的那样&#xff0c;你不需要无限的预算取得到高质量的产品。这里有SearchSecurity.com网站专家Michael Cobb推荐的五个免费…

bios部署模式审核模式_BIOS的完整形式是什么?

bios部署模式审核模式BIOS&#xff1a;基本输入输出系统 (BIOS: Basic Input Output System) BIOS is an abbreviation of the Basic Input Output System. In the beginning, when you first set on your computer, the first software which starts run by the computer is &…

day04-装饰器

一、装饰器定义 1&#xff09;装饰器&#xff1a;本质是函数。 2&#xff09;功能&#xff1a;用来装饰其他函数&#xff0c;顾名思义就是&#xff0c;为其他的函数添加附件功能的。 二、原则 1&#xff09;不能修改被装饰函数的源代码 2&#xff09;不能修改被装饰函数的调用方…

c 语言bool 类型数据_C ++中的bool数据类型

c 语言bool 类型数据In C programming language, to deal with the Boolean values – C added the feature of the bool data type. A bool variable stores either true (1) or false (0) values. 在C 编程语言中&#xff0c;为了处理布尔值– C 添加了bool数据类型的功能 。…