一、前言
学习读写分离,这里记录下自己学习的路程,你读过之后对技术的认知可能不会有太多的提高,但是能看到我成长的轨迹。(只记录难点、重点知识点,以及方向的选择、自己的心境)
读写分离指的是将数据库分为主从库,一个主库用于写数据,多个从库用来读数据,主从库之间通过某种机制进行数据间的同步。目前多数互联网业务的数据,读多写少,为了线性提升数据库读性能,减少读写锁的冲突而提高写性能,便有了读写分离的做法。但是不是任何情况都需要数据的读写分离,比如,一个订单系统,订单表里的数据量非常庞大,那么这种情况,该做的是对表进行水平切分,原来表里的2000w数据,拆分成4个表,每个表里500w,这样单表操作的压力就少了很多。因此,我们为了解决数据库架构问题时,一定要先分析数据库性能瓶颈是什么,再去想解决方法。
二、技术选型
选型这里,首先要前期调查。查询多方资料,分析优缺点,弄个小demo出来,然后选定。
我呢,选择了Mycat和jdbc-sharding,两者进行调查,先去了官网,Mycat的官网有些随意,而jdbc-sharding官网更加正规(起码看起来是这样的),而且还加入了Apache 孵化器。此外,我还比对了git上两者的情况,查看了jdbc-sharding更新的频率和issue解决的数量、及时解决的程度等,认为jdbc-sharding更适合入手。
因为我没实际做过分库分表,这回想学习一下,了解里面的原理。这样的话,需要开源框架的及时反馈。而且更新的频率快,也说明有人一直在维护。
1.Mycat
Mycat是数据库分库分表中间件。面对分库分表,可能比较蒙,查了很多资料,下面链接介绍了各个组件的概况:
https://dbaplus.cn/news-11-1854-1.html
官网地址:http://www.mycat.io/
2.jdbc-sharding
官网地址:https://shardingsphere.apache.org/document/current/cn/overview/
2.1 HelloWorld
开源框架的学习,hello-world当然是从它提供的demo开始。在这里,我不建议你去搜索别人的搭建文章,而是先去看官网的例子,它是最权威最规范的。
地址:
https://github.com/apache/incubator-shardingsphere-example
请选择dev以外的版本下载(我用的是tag 3.1.0版本)
然后按照他的要求一步步做就可以了。在这里要注意的是,你的mysql数据库最好是5.X版本的,如果是8版本的话,会报错。
(P.S. 我用的mysql 8 进行验证的,结果跑错,弄了好久也没弄出,最后下载mysql5.6,重新尝试,OK)
未完待续。。。
(2019.06.02)
参考资料:
https://baijiahao.baidu.com/s?id=1614304400276051465&wfr=spider&for=pc
来源:oschina
链接:https://my.oschina.net/u/4296609/blog/3551721