mycat简单介绍以及安装和配置说明(mysql集群为例)
来源:互联网 发布:js调用手机摄像头 编辑:程序博客网 时间:2024/05/19 12:26
mycat是什么
一个彻底开源的,面向企业应用开发的“大数据库集群”
Mycat 是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。
一个可以视为“Mysql”集群的企业级数据库。
一个开源的分布式数据库系统,是一个实现了 MySQL 协议的Server
Mycat 发展到目前的版本,它的后端可以支持 MySQL、SQLServer、Oracle、DB2、PostgreSQL 等主流数据库,也支持 MongoDB 这种新型 NoSQL 方式的存储。
如何理解mycat(来自mycat官方文档说明)
对于 DBA 来说,可以这么理解 Mycat:
Mycat 就是 MySQL Server,而 Mycat 后面连接的 MySQL Server,就好象是 MySQL 的存储引擎,如InnoDB,MyISAM 等,因此,Mycat 本身并不存储数据,数据是在后端的 MySQL 上存储的,因此数据可靠性以及事务等都是 MySQL 保证的,简单的说,Mycat 就是 MySQL 最佳伴侣,它在一定程度上让 MySQL 拥有了能跟 Oracle PK 的能力。
对于软件工程师来说,可以这么理解 Mycat:
Mycat 就是一个近似等于 MySQL 的数据库服务器,你可以用连接 MySQL 的方式去连接 Mycat(除了端口不同,默认的 Mycat 端口是 8066 而非 MySQL 的 3306,因此需要在连接字符串上增加端口信息),大多数情况下,可以用你熟悉的对象映射框架使用 Mycat,但建议对于分片表,尽量使用基础的 SQL 语句,因为这样能达到最佳性能,特别是几千万甚至几百亿条记录的情况下。
对于架构师来说,可以这么理解 Mycat:
Mycat 是一个强大的数据库中间件,不仅仅可以用作读写分离、以及分表分库、容灾备份,而且可以用于多租户应用开发、云平台基础设施、让你的架构具备很强的适应性和灵活性,借助于即将发布的 Mycat 智能优化模块,系统的数据访问瓶颈和热点一目了然,根据这些统计分析数据,你可以自动或手工调整后端存储,将不同的表映射到不同存储引擎上,而整个应用的代码一行也不用改变。
如上图所表示,数据被分到多个分片数据库后,应用如果需要读取数据,就要需要处理多个数据源的数据。如果没有数据库中间件,那么应用将直接面对分片集群,数据源切换、事务处理、数据聚合都需要应用直接处理,原本该是专注于业务的应用,将会花大量的工作来处理分片后的问题,最重要的是每个应用处理将是完全的重复造轮子。所以有了数据库中间件,应用只需要集中与业务处理,大量的通用的数据聚合,事务,数据源切换都由中间件来处理,中间件的性能与处理能力将直接决定应用的读写性能,所以一款好的数据库中间件至关重要。
mycat下载
Mycat 官方网站:http://www.mycat.io/
Mycat 下载地址:https://github.com/MyCATApache/Mycat-download
mycat安装以及配置文件说明
一:把下载好的包Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz上传到linux服务器
二:使用命令:tar -zxvf 解压缩mycat包,得到mycat目录
三:进入mycat/conf/ 目录下,文件如下
schema.xml 中定义逻辑库,表、分片节点等内容。
rule.xml 中定义分片规则。
server.xml 中定义用户以及系统相关变量,如端口等。
schema.xml 中标签说明:
- schema 标签用于定义 MyCat 实例中的逻辑库,MyCat 可以有多个逻辑库,每个逻辑库都有自己的相关配置。可以使用 schema 标签来划分这些不同的逻辑库。上图中为配置了名为TESTDB的逻辑库。
- .Table 标签定义了 MyCat 中的逻辑表,所有需要拆分的表都需要在这个标签中定义。name 属性定义逻辑表的表名,这个名字就如同我在数据库中执行 create table 命令指定的名字一样,同个 schema 标签中定义的名字必须唯一。dataNode 属性定义这个逻辑表所属的 dataNode, 该属性的值需要和 dataNode 标签中 name 属性的值相互对应。rule 属性用于指定逻辑表要使用的规则名字,规则名字在 rule.xml 中定义。primaryKey 属性该逻辑表对应真实表的主键,例如:分片的规则是使用非主键进行分片的,那么在使用主键查询的时候,就会发送查询语句到所有配置的 DN 上,如果使用该属性配置真实表的主键。难么 MyCat 会缓存主键与具体 DN 的信息,那么再次使用非主键进行查询的时候就不会进行广播式的查询,就会直接发送语句给具体的DN,但是尽管配置该属性,如果缓存并没有命中的话,还是会发送语句给具体的 DN,来获得数据。type 属性该属性定义了逻辑表的类型,目前逻辑表只有“全局表”和”普通表”两种类型,全局表即所有分库都有该表,可避免跨库查询。
- childTable 标签用于定义 E-R 分片的子表。通过标签上的属性与父表进行关联。name 属性定义字表的表名。joinKey 属性插入子表的时候会使用这个列的值查找父表存储的数据节。parentKey 属性指定的值一般为与父表建立关联关系的列名。程序首先获取 joinkey 的值,再通过 parentKey 属性指定的列名产生查询语句,通过执行该语句得到父表存储在哪个分片上。从而确定子表存储的位置。通过这两个属性可以避免关联表的跨库查询。
- dataNode 标签定义了 MyCat 中的数据节点,也就是我们通常说所的数据分片。一个 dataNode 标签就是一个独立的数据分片。如上图就是定义了三个数据分片,分别使用名字localhost1、localhost2、localhost3数据库实例上的sportnet物理数据库,分别用dn1、dn2、dn3来标示分片。
- dataHost 标签
定义了具体的数据库实例、读写分离配置和心跳语句。name 属性唯一标识 dataHost 标签,供上层的标签使用。maxCon 属性指定每个读写实例连接池的最大连接。minCon 属性指定每个读写实例连接池的最小连接,初始化连接池的大小。balance 属性负载均衡类型,
balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
balance=”1”,全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
balance=”2”,所有读操作都随机的在 writeHost、readhost 上分发。
balance=”3”,所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。
writeType 属性负载均衡类型
writeType=”0”, 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .
writeType=”1”,所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。
dbDriver 属性指定连接后端数据库使用的 Driver,目前可选的值有 native 和 JDBC。使用 native 的话,因为这个值执行的是二进制的 mysql 协议,所以可以使用 mysql 和 maridb。其他类型的数据库则需要使用 JDBC 驱动来支持。switchType 属性
-1 表示不自动切换
1 默认值,自动切换
2 基于 MySQL 主从同步的状态决定是否切换,心跳语句为 show slave status
3 基于 MySQL galary cluster 的切换机制(适合集群)(1.4.1)心跳语句为 show status like ‘wsrep%’. - heartbeat 标签这个标签内指明用于和后端数据库进行心跳检查的语句。例如,MYSQL 可以使用 select user(),Oracle 可以使用 select 1 from dual 等。
- writeHost 标签、readHost 标签这两个标签都指定后端数据库的相关配置给 mycat,用于实例化后端连接池。唯一不同的是,writeHost 指定写实例、readHost 指定读实例,组着这些读写实例来满足系统的要求。
server.xml文件
server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。
rule.xml文件
rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule和function这两个标签。在具体使用过程中可以按照需求添加tableRule和function。
四:如何启动mycat:
进入mycat/bin,启动MyCat
启动命令:./mycat start
停止命令:./mycat stop
重启命令:./mycat restart
五:连接mycat:
mysql -utest -ptest -h127.0.0.1 -P8066 -DTESTDB
- mycat简单介绍以及安装和配置说明(mysql集群为例)
- linux中mysql和mycat搭建,以及用mycat实现数据库集群
- Mycat 安装和配置
- mysql集群安装说明
- mycat介绍01-mysql读写分离配置
- mycat配置mysql简单的读写分离
- mysql 的读写分离 以及mycat 实现集群管理
- mysql主主复制,只因为mycat集群需要
- Nginx简单介绍以及安装与配置
- MySQL分布式集群之MyCAT的简单使用
- mycat实现简单的mysql集群负载均衡
- MyCat关键配置说明
- 分布式mysql中间件(mycat) 安装和使用
- Redis主从集群以及sentinel集群安装和配置总结
- ngnix 集群和配置(mysql ,fast php 安装)
- mysql集群安装和初步配置pdf
- MyCat 简单介绍
- Linux下Mycat安装配置和使用
- 2017 ACM-ICPC 亚洲区-Coconut
- 9-11 python中pycurl模块学习
- 触发器简单介绍
- 2017.9.9考试
- android rtl8723bs 调试
- mycat简单介绍以及安装和配置说明(mysql集群为例)
- 上课总是不知道自己在忙什么
- iframe标签重新加载和刷新、js cookie使用
- Debug和Release区别
- 网关(转载)
- 搜狐_Kolakoski数列
- Windows Socket API 使用小结(转载…
- 网络编程基础名词
- ppt转换成pdf的办法,免费又方便