Mycat
Posted yangweiyong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mycat相关的知识,希望对你有一定的参考价值。
Mycat简介
Mycat是什么
Mycat是一款面向企业级应用的开源数据库中间件产品。
Mycat能做什么
在数据库集群环境下,对多个数据源进行统一的协调、调度。
让我们程序员更加专注于业务的开发。
1.1 安装Mycat
(1)下载Mycat,并上传到linux服务器(不限定那一台主机),下载地址:http://dl.mycat.io
(2)解压到/usr/local目录下
tar zxvf Mycat-server-1.6.5-release-20171228230037-linux.tar.gz -C /usr/local/
配置Mycat
相关术语
逻辑库:虚拟的数据库,用来对外配置dataSource;
逻辑表:虚拟的数据库表格,用来合并分散在各个数据库中的表格数据;
节 点:每个单独的数据库称为一个节点。
指定逻辑库、逻辑表
修改schema.xml文件,vi /mycat/conf/schema.xml
指定节点(真实的数据库)
修改schema.xml文件,vi /mycat/conf/schema.xml
修改用户,指定逻辑库
编辑server.xml文件,指定访问逻辑库的用户名密码
vi /mycat/conf/server.xml
启动Mycat
执行命令 ./mycat/bin/mycat start,启动mycat
连接Mycat
使用在server.xml中配置的用户连接,默认端口8066。(注意防火墙)
测试
(1)在mycat中创建逻辑表;
(2)在db1、db2、db3中分别插入数据;
(3)在mycat中查询逻辑表,观察分散的数据是否合并显示。
连接出现的问题及解决方案
问题:不认识主机名
解决方案:修改hosts文件,指定主机名
[[email protected] logs]# vim /etc/hosts
说明:修改hosts文件,指定当前的主机名,映射到当前服务器的ip即可。
开启读写分离配置
说明:Mycat默认情况下,关闭了读写分离。
开启方式:修改<dataHost>节点的balance属性,修改为3
注意:balance值的具体含义:
Mycat分片策略
通过Mycat查询数据的时候,mycat会将分散在各个真实数据库中的数据合并,保证查询结果的安全性、准确性;那么,通过Mycat向数据库插入数据的时候,插入的数据到底保存在哪一个数据库中呢?
Mycat分片策略能解决这个问题。
在schema.xml中指定逻辑表时,逻辑表有type、rule这两个属性:
type指定表的类型:全局表|普通表(默认)
rule指定分片规则:插入的数据按照规则插入对应的数据库。
global全局表
type属性默认为普通表,当指定type=”global”时:
(1)该表在所有的db上保存的数据一致,即新插入的数据会保存到所有的数据库中。
(2)rule规则失效。
Mycat常用分片规则
逻辑表的rule属性,指定分片规则;分片规则定义在/conf/rule.xml中。
auto-sharding-long(默认)
根据指定字段的范围分片。schema.xml
Rule.xml
/conf/autopartition-long.txt
说明:
(1)、0表示第一个db节点,依次类推;
(2)、根据id值的范围,存到对应的db节点上。
(3)、也可以根据其它的字段来分片。
sharding-by-intfile
枚举法:
根据指定字段的值,依次将数据保存到对应的db节点上。
/conf/rule.xml
/conf/partition-hash-int.txt
说明:
(1)0表示第一个db节点;
(2)指定字段的值为10000时,这条数据会插入到0这个节点上;
(3)适合将不同类别的数据,存储到不同的数据库中。
hash-int算法其它属性:type|defaultNode
适用场景:按某个字段的值做分类存储。
mod-long
取余数法:
说明:
(1)id对节点数量取模,如:1%3=1, 2%3=2, 3%3=0;
(2)0表示第一个db节点,依次类推。
sharding-by-murmur
一致性hash算法
1.1.1 sharding-by-month
月份分片法:
以上是关于Mycat的主要内容,如果未能解决你的问题,请参考以下文章