配置:

--bin 启动目录

--conf 配置文件存放配置文件:

--server.xml:是Mycat服务器参数调整和用户授权的配置文件。

--schema.xml:是逻辑库定义和表以及分片定义的配置文件。

--rule.xml: 是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置文件修改需要重启MyCAT。

--log4j.xml: 日志存放在logs/log中,每天一个文件,日志的配置是在conf/log4j.xml中,根据自己的需要可以调整输出级别为debug debug级别下,会输出更多的信息,方便排查问题。

--autopartition-long.txt,partition-hash-int.txt,sequence_conf.properties, sequence_db_conf.properties 分片相关的id分片规则配置文件

--lib MyCAT自身的jar包或依赖的jar包的存放目录。

--logs MyCAT日志的存放目录。日志存放在logs/log中,每天一个文件
下面图片描述了Mycat最重要的3大配置文件:

逻辑库配置:

配置server.xml

添加两个mycat逻辑库:user,pay: system 参数是所有的mycat参数配置,比如添加解析器:defaultSqlParser,其他类推 user 是用户参数。

<system>

<property name="defaultSqlParser">druidparser</property>

</system>

<user name="mycat">

<property name="password">mycat</property>

<property name="schemas">user,pay</property>

</user>

编辑schema.xml

修改dataHost和schema对应的连接信息,user,pay 垂直切分后的配置如下所示:

schema 是实际逻辑库的配置,user,pay分别对应两个逻辑库,多个schema代表多个逻辑库。

dataNode是逻辑库对应的分片,如果配置多个分片只需要多个dataNode即可。

dataHost是实际的物理库配置地址,可以配置多主主从等其他配置,多个dataHost代表分片对应的物理库地址,下面的writeHost、readHost代表该分片是否配置多写,主从,读写分离等高级特性。

以下例子配置了两个writeHost为主从。

<schema name="user" checkSQLschema="false" sqlMaxLimit="100" dataNode="user" />
<schema name="pay" checkSQLschema="false" sqlMaxLimit="100" dataNode="pay" >
<table name="order" dataNode="pay1,pay2" rule="rule1"/>
</schema>

<dataNode name="user" dataHost="host" database="user" />
<dataNode name="pay1" dataHost="host" database="pay1" />
<dataNode name="pay2" dataHost="host" database="pay2" />

<dataHost name="host" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select 1</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.0.2:3306" user="root" password="root" />
<writeHost host="hostM2" url="192.168.0.3:3306" user="root" password="root" />
</dataHost>

编辑MYCAT_HOME/conf/schema.xml文件,增加对物理数据表映射信息:

一、schema节点中各属性说明:
name:制定逻辑库名称;
checkSQLschema:如果为true,执行select * from TESTDB.travelrecord,则会修改为select * from travelrecord;即把表示schema的字段去掉;
sqlMaxLimit:当设置该值时,每条查询SQL语句,如果没有加上limit语句,MyCat也会自动的加上。例如值为100,则加上limit 100;

二、table节点中各属性说明:
name:指定物理表名称;
primaryKey:指定物理表主键名称;例如:分片的规则是使用非主键进行分片的,那么在使用主键查询的时候,就会发送查询语句到所有的配置的DN上,如果使用该属性配置真实表的主键。那么MyCat会缓存主键与具体DN的信息,那么再次使用非主键进行查询的时候就不会进行广播式查询,就会直接发送语句给具体的DN,但是尽管配置该属性,如果缓存并没有命中的话,还是会发送语句给具体的DN,来获取数据。
autoIncrement:指定主键是否采用自增长策略,如果不需要自增长可不用配置;
dataNode:指定表所在的逻辑数据节点,如果有多个节点可使用逗号分隔,也可使用表 达式dn$0-99 指定在0-99这100个节点上都使用(如果是一个节点上有多个库可使用db1$0-99);
rule:指定路由规则;
ruleRequired:该属性用于指定表是否绑定分片规则,如果为true,但是没有配置rule的话,程序会报错
type:定义逻辑表的类型,目前只有“全局表”和“普通表”两种类型。
全剧表:global/普通表:不指定该值
needAddLimit:指定表是否需要自动的在每条语句加上limit 100限制,如果语句中有limit则不会在次添加,默认true

三、childTable节点中各属性说明:
name:定义子表的表名
joinKey:插入子表的时候会使用这个列的值查找父表存储的数据节点
parentKey:属性指定的值一般为与父亲建立关系的列名。程序首先会获取joinKey的值,再通过parentKey属性指定的列名产生查询语句,通过执行该语句得到父表存储在哪个分片上,从而确定子表存储的位置。
primaryKey:同table标签一样
needAddLimit:同table标签一样

逻辑数据节点与物理主机配置:

四、dataNode节点中各属性说明:
name:指定逻辑数据节点名称;
dataHost:指定逻辑数据节点物理主机节点名称;
database:指定物理主机数据库。如果一个节点上有多个库,可使用表达式db$0-99,表示指定0-99这100个数据库;

五、dataHost 节点中各属性说明:
定义了具体的数据库实例额、读写分离配置和心跳语句。

name:物理主机节点名称;
maxCon:指定物理主机服务最大支持1000个连接;指定每个读写实例都会使用这个属性来实例化出连接池的最大连接。
minCon:指定物理主机服务最小保持10个连接;指定每个读写实例连接池的最小连接,初始化连接池的大小
writeType:指定写入类型;
l 0,所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties
l 1,所有写操作都随机的发送到配置的writeHost,1.5后废除不推荐
dbType:指定数据库类型;
dbDriver:指定数据库驱动;目前可选的值有native和JDBC。
balance:指定物理主机服务的负载模式。负载均衡类型,目前取值有3种:
l 0,不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
l 1,全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡;
l 2,所有的readHost与writeHost都参与select语句的负载均衡,也就是说,当系统的写操作压力不大的情况下,所有主机都可以承担负载均衡;
l 3,所有读请求随机的分发到writeHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3没有。
switchType:
-1 表示不自动切换
1 默认值,自动切换
2 基于MySQL主从同步的状态决定是否切换
心跳语句为 show slave status
3 基于MySQL galary cluster的切换机制(适合集群)(1.4.1)
心跳语句为show status like ‘sweep%'
tempReadHostAvailable:
如果配置了这个属性 writeHost下面的readHost仍旧可用,默认0,可配置(0、1)

一个dataHost元素,表明进行了数据同步的一组数据库,DBA需要保证这一组数据库服务器是进行了数据同步复制的。writeHost相当于Master DB Server,而其下的readHost则是与从数据库同步的Slave DB Server。当dataHost配置了多个writeHost的时候,任何一个writeHost宕机,Mycat 都会自动检测出来,并尝试切换到下一个可用的writeHost;

MyCAT支持高可用性的企业级特性,根据您的应用特性,可以配置如下几种策略:
l 后端数据库配置为一主多从,并开启读写分离机制;
l 后端数据库配置为双主双从(多从),并开启读写分离机制;
l 后端数据库配置为多主多从,并开启读写分离机制;
后面两种配置,具有更高的系统可用性,当其中一个写节点(主节点)失败后,Mycat会侦测出来(心跳机制)并自动切换到下一个写节点,MyCAT在任何时候,只会往一个写节点写数据;

下面是典型的双主双从的Mysql集群配置:

六、heartbeat标签
这个标签指明用于和后端数据库进行心跳检查的语句。
Mysql可以使用 select user()
Oracle select 1 from dual
主从切换必须是:show slave status

七、writeHost标签、readHost标签
如何writeHost指定的后端数据库宕机,那么该下面的所有readHost都不可用。

host:标识不同的实例。一般writeHost用*M1,readjust用*S1
url:实例连接地址
user :用户名
password:密码
weight:权重配置在readhost中作为读节点的权重(1.4以后)
usingDecrypt:是否对密码加密默认0 否,开启 1

Mycat配置入门的更多相关文章

  1. MyCat 入门:漫谈 MyCat 配置系统

    文章首发于[博客园-陈树义],点击跳转到原文<MyCat 入门:漫谈 MyCat 配置系统> 上篇文章<MyCat 启蒙:分布式系统的数据库架构演变>中,我们通过一个项目从零到 ...

  2. MyCAT简单入门配置

    MyCAT简单入门配置 安装jdk 建议1.7以上 安装mysql 安装MyCAT Mycat 源码:https://github.com/MyCATApache/Mycat-Server Mycat ...

  3. MyCAT简易入门

    MyCAT是mysql中间件,前身是阿里大名鼎鼎的Cobar,Cobar在开源了一段时间后,不了了之.于是MyCAT扛起了这面大旗,在大数据时代,其重要性愈发彰显.这篇文章主要是MyCAT的入门部署. ...

  4. MyCAT简易入门 (Linux)

    MyCAT是mysql中间件,前身是阿里大名鼎鼎的Cobar,Cobar在开源了一段时间后,不了了之.于是MyCAT扛起了这面大旗,在大数据时代,其重要性愈发彰显.这篇文章主要是MyCAT的入门部署. ...

  5. Mycat快速入门

    1.Mycat介绍 Mycat 是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以 ...

  6. nginx配置入门

    谢谢作者的分享精神,原文地址:http://www.nginx.cn/591.html nginx配置入门 之前的nginx配置是对nginx配置文件的具体含义进行讲解,不过对于nginx的新手可能一 ...

  7. echart图表控件配置入门(二)常用图表数据动态绑定

    上一节 <echart图表控件配置入门(一)>介绍了echarts图表控件的入门配置,使开发人员可以快速搭建出一个静态的图表.但是在实际开发过程这还是不够的,不可能所有的图表控件都是静态数 ...

  8. echart图表控件配置入门(一)

    现在主流的web图表控件主要有hightchart.fusionchart.echart: echart作为百度前端部门近期推出的一个基于html5的免费图表控件,以其丰富图表类型和良好的兼容性速度得 ...

  9. spring的Java配置入门(Spring Boot学习笔记之一)

    spring的Java配置 1.创建maven项目 使用idea创建maven项目,这里顺便提一下,idea真的比eclipse好用,早点熟悉吧.然后就是maven是java项目管理最主流的工具,自己 ...

随机推荐

  1. POJ 1182 并查集

    Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到 ...

  2. 关于Context []startup failed due to previous errors

    文章转自:http://blog.sina.com.cn/s/blog_49b4a1f10100q93e.html 框架搭建好后,启动服务器出现如下的信息: log4j:WARN No appende ...

  3. Linux基础命令---rmdir

    rmdir 删除一个空目录,可以同时删除途经的父目录,但是要确保父目录中没有其他内容. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. ...

  4. QImage与QPixmap完全解析

    转载自http://www.civilnet.cn/bbs/browse.php?topicno=4691 用Qt程序在手机上显示一幅图片对编程人员来说是再基础不过的一件事情了.那么先让大家看两段代码 ...

  5. Python3 判断文件和文件夹是否存在、创建文件夹

    Python3 判断文件和文件夹是否存在.创建文件夹 python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件: 1) os.mknod(“test.txt”) 创建空文件  ...

  6. 20145329 《网络对抗技术》浏览器MS11_050安全漏洞攻击

    两台虚拟机: kali ip:192.168.96.130 windows xp sp3(包含IE7)ip:192.168.96.128 1.在kali终端中开启msfconsole. 2.进入漏洞模 ...

  7. [c/c++]指针(1)

    指针算是一种特殊的变量,它存储的是一个内存地址,你既可以通过它来给制定内存地址赋值 (可能会被操作系统收回或者与其它程序冲突),又可以提高运行速度 First Step: 声明一个指针变量 int* ...

  8. Django框架(三) 复习总结与路由控制

    知识点回顾 MTV模型 model:模型,和数据库相关的 template:模板,存放html文件,模板语法(目的是将变量如何巧妙的嵌入到HTML页面中). views:视图函数 另加urls:url ...

  9. Linux写时拷贝技术【转】

    本文转载自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/20/2601655.html COW技术初窥: 在Linux程序中,fork()会产 ...

  10. 分析redis key大小的几种方法

    当redis被用作缓存时,有时我们希望了解key的大小分布,或者想知道哪些key占的空间比较大.本文提供了几种方法. 一. bigKeys 这是redis-cli自带的一个命令.对整个redis进行扫 ...