MyCat 看了这篇什么都会了

1、什么是MyCat

1、一个彻底开源的,面向企业应用开发的大数据库集群       2、支持事务、ACID、可以替代MySQL的加强版数据库        3、一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群      4、一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server      5、结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品      6、一个新颖的数据库中间件产品


2、为什么使用MyCat

如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL肯定是无法满足的,所以还是需要使用关系性数据库。如何使用关系型数据库解决海量存储的问题呢?此时就需要做数据库集群,为了提高查询性能将一个数据库的数据分散到不同的数据库中存储,为应对此问题就出现了——MyCat 

  综上所述:Mycat作用为:能满足数据库数据大量存储;提高了查询性能


3、支持的数据库

支持MySQL ORACLE SQLServer等一些主流的数据库

4、核心技术(分库分表)

数据库分片指:通过某种特定的条件,将我们存放在一个数据库中的数据分散存放在不同的多个数据库(主机)中,这样来达到分散单台设备的负载,根据切片规则,可分为以下两种切片模式

MyCAT通过定义表的分片规则来实现分片,每个表格可以捆绑一个分片规则,每个分片规则指定一个分片字段并绑定一个函数,来实现动态分片算法 

1.Schema:逻辑库,与MySQL中的Database(数据库)对应,一个逻辑库中定义了所包括的Table。 

2.Table:逻辑表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明其所存储的逻辑数据节点DataNode。在此可以指定表的分片规则。 

3.DataNode:MyCAT的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过DataSource来关联到后端某个具体数据库上 

4.DataSource:定义某个物理库的访问地址,用于捆绑到Datanode上

5、分片规则:前面讲了数据切分,一个大表被分成若干个分片表,就需要一定的规则,这样按照某种业务规则把数据分到某个分片的规则就是分片规则,数据切分选择合适的分片规则非常重要,将极大的避免后续数据处理的难

5、Mycat的下载及安装

1、jdk:要求jdk必须是1.7及以上版本     2、Mysql:推荐mysql是5.5以上版本      3、Mycat:  Mycat的官方网站:http://www.mycat.org.cn/      下载地址:  https://github.com/MyCATApache/Mycat-download 

Mycat有windows、linux多种版本。本教程为linux安装步骤,windows基本相同。  第一步:下载Mycat-server-xxxx-linux.tar.gz     第二步:将压缩包解压缩。建议将mycat放到/usr/local/mycat目录下。    第三步:进入mycat目录,启动mycat./mycat start   停止:./mycat stop    mycat支持的命令{ console | start | stop | restart | status | dump }   Mycat的默认端口号为:8066

6、需求及安装环境分析

需求是把商品表分片存储到三个数据节点上。安装环境   两台mysql数据库服务器:Host1:192.168.25.134  Host2:192.168.25.166        host1环境   操作系统版本: centos6.4      数据库版本: mysql-5.6    mycat版本 :1.4 release     数据库名: db1、db3      mysql节点2环境    操作系统版本: centos6.4             数据库版本: mysql-5.6      mycat版本 :1.4 release       数据库名: db2    MyCat安装到节点1上(需要安装jdk)

7、配置文件的相关配置



配置完成后进行分片测试


Mycat的读写分离是建立在Mysq的主从复制的基础上的,Mysql的读写分离这里就不再做过多的赘述


Mycat 1.4 支持MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠,配置如下


(1) 设置balance="1"与writeType="0"

Balance参数设置:

1. balance=“0”, 所有读操作都发送到当前可用的writeHost上。

2. balance=“1”,所有读操作都随机的发送到readHost。

3. balance=“2”,所有读操作都随机的在writeHost、readhost上分发

WriteType参数设置:

1. writeType=“0”, 所有写操作都发送到可用的writeHost上。

2. writeType=“1”,所有写操作都随机的发送到readHost。

3. writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。

 “readHost是从属于writeHost的,即意味着它从那个writeHost获取同步数据,因此,当它所属的writeHost宕机了,则它也不会再参与到读写分离中来,即“不工作了”,这是因为此时,它的数据已经“不可靠”了。基于这个考虑,目前mycat 1.3和1.4版本中,若想支持MySQL一主一从的标准配置,并且在主节点宕机的情况下,从节点还能读取数据,则需要在Mycat里配置为两个writeHost并设置banlance=1。”

(2) 设置switchType="2" 与slaveThreshold="100"

switchType 目前有三种选择:

-1表示不自动切换

1 默认值,自动切换

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

“Mycat心跳检查语句配置为 show slave status ,dataHost 上定义两个新属性: switchType="2" 与slaveThreshold="100",此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制。Mycat心跳机制通过检测 show slave status 中的 "Seconds_Behind_Master", "Slave_IO_Running", "Slave_SQL_Running" 三个字段来确定当前主从同步的状态以及Seconds_Behind_Master主从复制时延。“

推荐阅读更多精彩内容