echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!!


该文件是一个包含Mycat的系统配置信息文件,对应的原码是SystemConfig.java。我们对该文件做一个详解,该文件在我们安装包中,/mycat/conf中(该文是基于“Mycat分布式数据库架构解决方案--Linux安装运行Mycat”)的后续,可以了解安装之后目录结构。想要对比详细配置文件也可以直接去github下载mycat源码,下载地址:https://github.com/MyCATApache/Mycat-Server

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"> <!-- schema标签主要用于定义Mycat实例中的逻辑库。Mycat可以有多个逻辑库,每个逻辑库都有自己相关的配置 -->
<!-- 可以使用schema标签来划分不同的逻辑库,如果不配置schema标签,则所有的表配置都会属于同一个默认的逻辑库 -->
<!-- name="TESTDB" 给Mycat定义逻辑库名称 -->
<!-- checkSQLschema属性值为true的时候,如果我们执行语句select * from TESTDB.table;该设置会讲TESTDB截取掉,SQL变成select * from table;该规则只能截掉schema上指定的库 -->
<!-- sqlMaxLimit属性设置为100时,每次执行的SQL语句如果没有加上limit语句,Mycat会自动加上limit 100;不设置就会返回查询到的所有信息 -->
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100">
<!-- table标签定义了Mycat中的逻辑表,所有需要拆分的表都需要在table标签中定义。-->
<!-- name属性定义逻辑表的名称,同一个schema标签中定义的table名字必须唯一 -->
<!-- dataNode属性该属性的值需要与下面dataNode标签中的name属性的值相互对应。如果有多个值,使用','分隔 -->
<!-- rule属性用于指定逻辑表要使用的规则,规则的名字定义在rule.xml中定义,必须与tableRule标签中name属性一致 -->
<!-- ruleRequired属性用于指定表是否绑定分片规则,如果配置true,但没有配置具体的rule,程序会报错。-->
<!-- primaryKey属性对应真实表的主键 -->
<!-- type属性定义了逻辑表的类型,目前逻辑表只有全局表和普通表两种类型。全局表对应的配置值:global,不指定普通表 -->
<!-- autoIncrement属性默认false,设置成为true时Mycat对表使用自增长主键 -->
<!-- subTables属性目前Mycat在1.6版本以后才开始支持分表,并且dataNode在分表条件下只能配置一个,不支持各种条件的join关联查询语句 -->
<!-- needAddLimit指定表是否需要自动在每个语句后面加上limit限制。如果设置为true,Mycat查询的时候自动给我们加上limit 100 -->
<table name="travelrecord" needAddLimit="true" ruleRequired="true" autoIncrement="false" primaryKey="" dataNode="dn1,dn2,dn3" rule="auto-sharding-long"/>
</schema>
<!-- 一个schema代表一个逻辑库 -->
<schema name="TEST" checkSQLschema="true" sqlMaxLimit="100">
<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long"/>
</schema>
<!-- dataNode属性用于绑定逻辑库和具体的数据库。Mycat1.3如果配置了dataNode,则不可以配置分片表;
Mycat的1.4和1.5版本可以配置默认分片,配置需要分片的表即可 -->
<!-- name属性对应上面schema中间的DataNode的名字 -->
<!-- database属性是指定真是数据库的名称 -->
<!-- dataHost属性是对应数据库的Mycat逻辑库名称 -->
<dataNode name="dn1" dataHost="Node1" database="db1"/>
<dataNode name="dn2" dataHost="Node2" database="db2"/>
<dataNode name="dn3" dataHost="Node3" database="db3"/> <!-- 它是schema.xml中最后一个标签,该标签在Mycat逻辑库中作为底层标签存在,直接定义了具体的数据库实例、读写分离和心跳语句。-->
<!-- name属性是唯一标识dataHost标签,供上层标签使用 -->
<!-- maxCon属性指定每个读写实例连接池的最大连接数。内嵌标签writeHost/readHost都会使用这个属性的值类实例化连接池的最大连接数 -->
<!-- minCon属性指定每个读写实例连接池的最小连接数,初始化连接池的大小 -->
<!-- balance属性属于负载均衡类型,目前有一下4中值
balance="0" 不开启读写分离机制,所有的操作都发送到当前可以用的writeHost上。
balance="1" 全部的readHost与stand by writeHost都参与select语句的负载均衡。
balance="2" 所有的读操作都随机地在writeHost、readHost上分发。
balance="3" 所有的读请求都随机分发到writeHost对应的readHost上执行,writeHost不负担读压力-->
<!-- writeType属性有两种值 writeType="0" 所有的写操作都发送到配置的第1个writeHost上,writeHost1挂了则切到writeHost2上
writeType="1" 所有的写操作都随机的发送到配置的writeHost上 -->
<!-- dbType属性指定后端连接的数据库类型,目前除了支持二进制的MySQL协议,还支持使用JDBC连接的数据库,例如MongoDB.Oracle等 -->
<!-- daDriver指定连接后端数据库使用的Driver,目前可选的有native和JDBC -->
<!-- switchType属性
switchType="-1"表示不自动切换。
switchType="1"为默认值,表示自动切换。
switchType="2"表示基于MySQL主从同步的状态决定是否切换。
switchType="3"表示基于MySQL Galary Cluster的切换机制。-->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0"
dbType="mysql" tempReadHostAvailable="" dbDriver="native" switchType="1" slaveThreshold="100">
<!-- heartbeat标签指明了用于后端数据库进行心跳检查的语句,MySQL使用select user() Oracle使用select 1 from dual-->
<heartbeat>select user()</heartbeat>
<!-- writeHost标签和readHost标签一样,都指定Mycat后端数据库的相关配置,用于实例化后端连接池。唯一的不同是,writeHost指定写实例,readHost指定读实例 -->
<!-- host属性用于表示不同的实例,对于writeHost我们一般使用*M1;对于readHost,我们一般使用*S1。 -->
<!-- url属性,连接后端实例的连接地址 -->
<!-- user属性,后端存储实例的用户名 -->
<!-- password属性,后端存储实例的密码 -->
<!-- weight属性在readHost中作为读节点的权重 -->
<!-- usingDecrypt属性同server.mxl中的usingDecrypt的配置 -->
<writeHost host="hostM1" url="192.168.222.132:3306" user="root" password="123456"></writeHost>
</dataHost>
</mycat:schema>

做一个有底线的博客主

Mycat分布式数据库架构解决方案--schema.xml详解的更多相关文章

  1. Mycat分布式数据库架构解决方案--rule.xml详解

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 该文件 ...

  2. Mycat分布式数据库架构解决方案--Server.xml详解

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 该文件 ...

  3. Mycat分布式数据库架构解决方案--Mycat实现读写分离

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 安装完 ...

  4. Mycat分布式数据库架构解决方案--Mycat实现数据库分表

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 准备工 ...

  5. Mycat分布式数据库架构解决方案--Mycat的介绍

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 如果我 ...

  6. Mycat分布式数据库架构解决方案--Linux安装运行Mycat

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! Myc ...

  7. Mycat分布式数据库架构解决方案--配置defaultAccount属性报错解决方案

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 该文章 ...

  8. Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 本文主 ...

  9. Solr5之Schema.xml详解

    schema.xml 是用来定义索引数据中的域的,包括域名称,域类型,域是否索引,是否分词,是否存储,是否标准化即 Norms ,是否存储项向量等等. schema.xml 配置文件的根元素就是 sc ...

随机推荐

  1. 微信小程序全局设置分享内容

    微信小程序每个页面都可以在onShareAppMessage中设置分享内容,如果想要全局设置成一样的分享内容如何设置呢? 在app.js中新增以下方法: //重写分享方法 overShare: fun ...

  2. php 5 与7有什么区别

    PHP 7.0使用新版的ZendEngine引擎,带来了许多新的特性,其与相比,有如下特性: 性能提升:PHP7比PHP5.0性能提升了两倍. 全面一致的64位支持. 以前的许多致命错误,现在改成抛出 ...

  3. C#发起Http请求,调用接口

    //方法1. Post 异步请求,普通的异步请求,传输普通的字符串等,对于有html代码的字段值的传输支持不好,如果需要传输html,二进制等数据的传输,请使用下面第二个方法,即使用UploadDat ...

  4. ajax发送json数据时为什么需要设置contentType: "application/json”

    1. ajax发送json数据时设置contentType: "application/json”和不设置时到底有什么区别?contentType: "application/js ...

  5. linux环境,无dig命令-bash: dig: command not found?

    背景描述: 今天使用dig命令,报错命令不存在,-bash: dig: command not found 解决: 通过yum方式安装 yum -y install bind-utils 备注:之前尝 ...

  6. [译]为什么在__new __()后总是调用__init __()?

    原文来源: https://stackoverflow.com/questions/674304/why-is-init-always-called-after-new 需要控制新实例的创建时,请使用 ...

  7. preg_match 第三个参数,

    //请修改变量p的正则表达式,使他能够匹配str中的姓名 $p = '/name:([\w\s]+)/'; $str = "name:steven jobs"; preg_matc ...

  8. mysql查询之 用户行程的取消率,人流量高峰时段

    1.用户行程的取消率 Trips 表中存所有出租车的行程信息.每段行程有唯一键 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外键.Status 是枚举类 ...

  9. hashmap源码解析,JDK1.8和1.7的区别

    背景:hashmap面试基础必考内容,需要深入了解,并学习其中的相关原理.此处还要明白1.7和1.8不通版本的优化点. Java 8系列之重新认识HashMap Java 8系列之重新认识HashMa ...

  10. Beta版本的发布

    1.团队成员列表 成员姓名 成员学号 秦裕航 201731062432(组长) 刘东 201731062227 张旭 201731062129 王伟 201731062214 2.解决了那些在Alph ...