一.前言
Mycat主要是针对方便架构师进行系统架构架构和DBA管理数据库的一个中间件,提供了多种数据库常见问题的解决方案,但某些技术点与开发工程师也息息相关,这里主要是针对开发工程师相关的技术点----读写分离,主从切换,数据切分等进行总结。
二.Mycat是什么
如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL肯定是无法满足的,所以还是需要使用关系性数据库。如何使用关系型数据库解决海量存储的问题呢?此时就需要做数据库集群,为了提高查询性能将一个数据库的数据分散到不同的数据库中存储,为应对此问题就出现了。
三.读写分离
1、what 读写分离
读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。
2、why 那么为什么要读写分离呢?
因为数据库的“写”(写10000条数据到oracle可能要3分钟)操作是比较耗时的。但是数据库的“读”(从oracle读10000条数据可能只要5秒钟)。所以读写分离,解决的是,数据库的写入,影响了查询的效率。
3、when 什么时候要读写分离?
数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用,利用数据库 主从同步。可以减少数据库压力,提高性能。当然,数据库也有其它优化方案。memcache 或是 表折分,或是搜索引擎。都是解决方法
四.数据切分(分库分表)
数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分;另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。
五.搭建Mycat
1、实验环境介绍
系统:win10
MyCAT:localhost,Port:8066/9066
MySQL Master: localhost ,Port:3306
MySQL Slave: localhost ,Port:3308
注:
1.因为Mycat是用Java编写的,需要部署好JDK才能支持Mycat的运行
2.需要先在MySQL先部署好主从才能进行实验,Mycat只是作为一个分发中间件,简易主从数据库搭建教程
2、安装与部署
1.从Mycat官网下载对应系统的压缩包,解压便可以使用,无需安装,Mycat官网提供了各种主流操作系统压缩包
2.配置环境变量(Mycat安装包解压在任何路劲即可,但是要避免中文路径,因为我们要配置环境变量)
3、启动mycat
直接点击bin目录下的批处理命令
或使用命令
启动mycat服务 :mycat start
停止mycat服务 :mycat stop
4、安装完成