echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!!java
该文件是一个包含Mycat的系统配置信息文件,对应的原码是SystemConfig.java。咱们对该文件作一个详解,该文件在咱们安装包中,/mycat/conf中(该文是基于“Mycat分布式数据库架构解决方案--Linux安装运行Mycat”)的后续,能够了解安装以后目录结构。想要对比详细配置文件也能够直接去github下载mycat源码,下载地址: https://github.com/MyCATApach...
<?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>
作一个有底线的博客主mysql