配置:

--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. Spring,Struts2,MyBatis,Activiti,Maven,H2,Tomcat集成(二)——Struts2集成

    1. pom.xml文件添struts2依赖jar包: <!-- 与Struts2集成必须使用 --> <dependency> <groupId>org.spri ...

  2. 拉取远程仓库到本地错误The authenticity of host 'github.com (13.229.188.59)' can't be established.

    1.个人在github上面创建了仓库,通过本地的git拉取远程仓库到本地报错信息如下: 这是因为Git使用SSH连接,而SSH第一次连接需要验证GitHub服务器的Key.确认GitHub的Key的指 ...

  3. Linux基础命令---bzcat

    bzcat 解压缩被bzip2压缩过的文件,将文件解压到标准输出,此命令只有一个选项-s.该指令对压缩过的二进制文件没有意义,因为二进制文件没有可读性. 此命令的适用范围:RedHat.RHEL.Ub ...

  4. iOS获取本地ip和端口

    #include <arpa/inet.h> #include <ifaddrs.h> #include <net/if.h> #define IOS_CELLUL ...

  5. SNMP学习笔记之SNMP报文协议详解

    0x00 简介 简单网络管理协议(SNMP)是TCP/IP协议簇的一个应用层协议.在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案:由于SNMP的简单 ...

  6. MemcacheQ安装

    一.memcacheq介绍 特性: 1.简单易用 2.处理速度快 3.多条队列 4.并发性能好 5.与memcache的协议兼容 6.在zend framework中使用方便 memcacheq依赖于 ...

  7. PHP 开发 api 接口安全验证

    原文链接:http://blog.csdn.net/li741350149/article/details/62887524

  8. 20145104张家明 《Java程序设计》第四次实验设计

    20145104张家明 <Java程序设计>第四次实验设计 这第四次实验报告 我们开始着手安卓了 在电脑上安装了安卓虚拟机

  9. 20145333茹翔 Exp5 利用nmap扫描

    20145333茹翔 Exp5 利用nmap扫描 实验过程 首先使用命令创建一个msf所需的数据库 service postgresql start msfdb start 使用命令msfconsol ...

  10. 关于activity生命周期,启动模式和tag

    Acticity启动模式 1.standard:Activity的默认加载方法,该方法会通过跳转到一个新的activity,同时将该实例压入到栈中(不管该activity是否已经存在在Task栈中,都 ...