学习成长

提供在线文档,方便大家学习


mycat具体配置介绍

<h4>1.mycat文件目录说明</h4> <table> <thead> <tr> <th>bin</th> <th>mycat命令,启动、重启、停止等</th> </tr> </thead> <tbody> <tr> <td>catlet</td> <td>catlet为Mycat的一个扩展功能</td> </tr> <tr> <td>conf</td> <td>Mycat 配置信息,重点关注</td> </tr> <tr> <td>lib</td> <td>Mycat引用的jar包,Mycat是java开发的</td> </tr> <tr> <td>logs</td> <td>Mycat引用的jar包,Mycat是java开发的</td> </tr> </tbody> </table> <h4>2.配置</h4> <p>Mycat的配置文件都在conf目录里面,这里介绍几个常用的文件说明:</p> <table> <thead> <tr> <th>server.xml</th> <th>Mycat的配置文件,设置账号、参数等</th> </tr> </thead> <tbody> <tr> <td>schema.xml</td> <td>Mycat对应的物理数据库和数据库表的配置</td> </tr> <tr> <td>rule.xml</td> <td>Mycat分片(分库分表)规则</td> </tr> </tbody> </table> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/5a35048d70e2f1812608f2f5beb571e0?showdoc=.jpg" alt="" /> 服务器 IP 说明</p> <table> <thead> <tr> <th>Mycat</th> <th>192.168.1.40 mycat服务器,连接数据库时,连接此服务器</th> </tr> </thead> <tbody> <tr> <td>database1</td> <td>192.168.1.41 物理数据库1,真正存储数据的数据库</td> </tr> <tr> <td>database2</td> <td>192.168.1.42 物理数据库2,真正存储数据的数据库</td> </tr> <tr> <td>database3</td> <td>192.168.1.44 物理数据库3,真正存储数据的数据库</td> </tr> <tr> <td>database4</td> <td>192.168.1.45 物理数据库4,真正存储数据的数据库</td> </tr> </tbody> </table> <p>使用Mycat后,连接数据库是不变的,默认端口是8066</p> <h5>3.server.xml</h5> <p>式例</p> <pre><code>&lt;user name="test"&gt; &lt;property name="password"&gt;test&lt;/property&gt; &lt;property name="schemas"&gt;lunch&lt;/property&gt; &lt;property name="readOnly"&gt;false&lt;/property&gt; &lt;!-- 表级 DML 权限设置 --&gt; &lt;!-- &lt;privileges check="false"&gt; &lt;schema name="TESTDB" dml="0110" &gt; &lt;table name="tb01" dml="0000"&gt;&lt;/table&gt; &lt;table name="tb02" dml="1111"&gt;&lt;/table&gt; &lt;/schema&gt; &lt;/privileges&gt; --&gt; &lt;/user&gt;</code></pre> <table> <thead> <tr> <th>参数</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>user</td> <td>用户配置节点</td> </tr> <tr> <td>name</td> <td>登录的用户名,也就是连接Mycat的用户名</td> </tr> <tr> <td>password</td> <td>登录的密码,也就是连接Mycat的密码</td> </tr> <tr> <td>schemas</td> <td>数据库名,这里会和schema.xml中的配置关联,多个用逗号分开,例如需要这个用户需要管理两个数据库db1,db2,则配置db1,dbs</td> </tr> <tr> <td>privileges</td> <td>配置用户针对表的增删改查的权限</td> </tr> </tbody> </table> <p>我这里配置了一个账号test 密码也是test,针对数据库lunch,读写权限都有,没有针对表做任何特殊的权限。2、privileges标签 对用户的 schema以及表进行精细化的DML权限控制</p> <privileges check="false"> </privileges> <p>--check 表示是否开启DML权限检查。默认是关闭。server.dtd文件中 &lt;!ELEMENT privileges (schema)*&gt; 说明可以有多个schema的配置。 --dml 顺序说明:insert,update,select,delete</p> <pre><code>&lt;schema name="db1" dml="0110" &gt; &lt;table name="tb01" dml="0000"&gt;&lt;/table&gt; &lt;table name="tb02" dml="1111"&gt;&lt;/table&gt; &lt;/schema&gt;</code></pre> <p>db1的权限是update,select。 tb01的权限是啥都不能干。 tb02的权限是insert,update,select,delete。 其他表默认是udpate,select。</p> <ol> <li>system标签 这个标签内嵌套的所有 property 标签都与系统配置有关。 <property name="charset">utf8</property> <p>字符集</p> <property name="processors">1</property> <p>处理线程数量,默认是cpu数量。</p></li> </ol> <property name="processorBufferChunk">4096</property> <p>每次读取留的数量,默认4096。</p> <property name="processorBufferPool">409600</property> <p>创建共享buffer需要占用的总空间大小。processorBufferChunk<em>processors</em>100。</p> <property name="processorBufferPoolType">0</property> <p>默认为0。0表示DirectByteBufferPool,1表示ByteBufferArena。</p> <property name="processorBufferLocalPercent">100</property> <p>二级共享buffer是processorBufferPool的百分比,这里设置的是百分比。</p> <property name="sequnceHandlerType">100</property> <p>全局ID生成方式。(0:为本地文件方式,1:为数据库方式;2:为时间戳序列方式;3:为ZK生成ID;4:为ZK递增ID生成。</p> <property name="useCompression">1</property> <p>是否开启mysql压缩协议。1为开启,0为关闭,默认关闭。</p> <property name="packetHeaderSize">4</property> <p>指定 Mysql 协议中的报文头长度。默认 4。</p> <property name="maxPacketSize">16M</property> <p>指定 Mysql 协议可以携带的数据最大长度。默认 16M。</p> <property name="idleTimeout">1800000</property> <p>指定连接的空闲超时时间。某连接在发起空闲检查下,发现距离上次使用超过了空闲时间,那么这个连接会被回收,就是被直接的关闭掉。默认 30 分钟,单位毫秒。</p> <property name="txIsolation">3</property> <p>前端连接的初始化事务隔离级别,只在初始化的时候使用,后续会根据客户端传递过来的属性对后端数据库连接进行同步。默认为 REPEATED_READ,设置值为数字默认 3。 READ_UNCOMMITTED = 1; READ_COMMITTED = 2; REPEATED_READ = 3; SERIALIZABLE = 4;</p> <property name="sqlExecuteTimeout">300</property> <p>SQL 执行超时的时间,Mycat 会检查连接上最后一次执行 SQL 的时间,若超过这个时间则会直接关闭这连接。默认时间为 300 秒,单位秒。</p> <property name="processorCheckPeriod">1000</property> <p>清理 NIOProcessor 上前后端空闲、超时和关闭连接的间隔时间。默认是 1 秒,单 位毫秒。</p> <property name="dataNodeIdleCheckPeriod">300000</property> <p>对后端连接进行空闲、超时检查的时间间隔,默认是 300 秒,单位毫秒。</p> <property name="dataNodeHeartbeatPeriod">10000</property> <p>对后端所有读、写库发起心跳的间隔时间,默认是 10 秒,单位毫秒。</p> <property name="bindIp">0.0.0.0</property> <p>mycat 服务监听的 IP 地址,默认值为 0.0.0.0。</p> <property name="serverPort">8066</property> <p>定义 mycat 的使用端口,默认值为 8066。</p> <property name="managerPort">9066</property> <p>定义 mycat 的管理端口,默认值为 9066。</p> <property name="fakeMySQLVersion">5.6</property> <p>mycat 模拟的 mysql 版本号,默认值为 5.6 版本,如非特需,不要修改这个值,目前支持设置 5.5,5.6,5.7 版本,其他版本可能会有问题。</p> <property name="useSqlStat">0</property> <p>是否开启实时统计。1为开启;0为关闭 。</p> <property name="useGlobleTableCheck">0</property> <p>是否开启全局表一致性检测。1为开启;0为关闭 。</p> <property name="handleDistributedTransactions">0</property> <p>分布式事务开关。0为不过滤分布式事务;1为过滤分布式事务;2 为不过滤分布式事务,但是记录分布式事务日志。</p> <property name="maxStringLiteralLength">65535</property> <p>默认是65535。 64K 用于sql解析时最大文本长度 以上举例的属性仅仅是一部分,可以配置的变量很多,具体可以查看SystemConfig这个类的属性内容。 System标签下的属性,一般是上线后,需要根据实际运行的情况,分析后调优的时候进行修改。</p> <ol> <li>Firewall标签 顾名思义,这个就是关于防火墙的设置,也就是在网络层对请求的地址进行限制,主要是从安全角度来保证Mycat不被匿名IP进行访问 <firewall> <whitehost> <host host="127.0.0.1" user="mycat"/> <host host="127.0.0.2" user="mycat"/> </whitehost> <blacklist check="false"> </blacklist> </firewall> <p>设置很简单,很容易理解,只要设置了白名单,表示开启了防火墙,只有白名单的连接才可以进行连接。</p></li> </ol> <h5>5 schema.xml</h5> <p>schema.xml是最主要的配置项,首先看我的配置文件。 <img src="https://www.showdoc.cc/server/api/common/visitfile/sign/842b552697a7d16eb641fa807ede74c4?showdoc=.jpg" alt="" /></p> <table> <thead> <tr> <th>参数</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>schema</td> <td>数据库设置,此数据库为逻辑数据库,name与server.xml中schema对应</td> </tr> <tr> <td>dataNode</td> <td>分片信息,也就是分库相关配置</td> </tr> <tr> <td>dataHost</td> <td>物理数据库,真正存储数据的数据库</td> </tr> </tbody> </table> <p>schema:</p> <table> <thead> <tr> <th>属性</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>name</td> <td>逻辑数据库名,与server.xml中的schema对应</td> </tr> <tr> <td>checkSQLschema</td> <td>数据库前缀相关设置,建议看文档,这里暂时设为false</td> </tr> <tr> <td>sqlMaxLimit</td> <td>select 时默认的limit,避免查询全表</td> </tr> </tbody> </table> <p>table:</p> <table> <thead> <tr> <th>属性</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>name</td> <td>表名,物理数据库中表名</td> </tr> <tr> <td>dataNode</td> <td>表存储到哪些节点,多个节点用逗号分隔。节点为下文dataNode设置的name</td> </tr> <tr> <td>primaryKey</td> <td>主键字段名,自动生成主键时需要设置</td> </tr> <tr> <td>autoIncrement</td> <td>是否自增</td> </tr> <tr> <td>rule</td> <td>分片规则名,具体规则下文rule详细介绍</td> </tr> </tbody> </table> <p>dataNode:</p> <table> <thead> <tr> <th>属性</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>name</td> <td>节点名,与table中dataNode对应</td> </tr> <tr> <td>datahost</td> <td>物理数据库名,与datahost中name对应</td> </tr> <tr> <td>database</td> <td>物理数据库中数据库名</td> </tr> </tbody> </table> <p>dataHost:</p> <table> <thead> <tr> <th>属性</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>name</td> <td>物理数据库名,与dataNode中dataHost对应</td> </tr> <tr> <td>balance</td> <td>均衡负载的方式</td> </tr> <tr> <td>writeType</td> <td>写入方式</td> </tr> <tr> <td>dbType</td> <td>数据库类型</td> </tr> <tr> <td>heartbeat</td> <td>心跳检测语句,注意语句结尾的分号要加。</td> </tr> </tbody> </table> <p>首先得搞清楚,balance项是控制读而writeType是控制写的 <img src="https://www.showdoc.cc/server/api/common/visitfile/sign/14aa366d81943d72d047dfc913907736?showdoc=.jpg" alt="" /> <img src="https://www.showdoc.cc/server/api/common/visitfile/sign/b834bf4d333bfd237f8ba72896d36737?showdoc=.jpg" alt="" /> <img src="https://www.showdoc.cc/server/api/common/visitfile/sign/009995c284afcb5a3420942aa4945f9a?showdoc=.jpg" alt="" /> <img src="https://www.showdoc.cc/server/api/common/visitfile/sign/b3ce84e572a7391ae18d16a9a9625cc2?showdoc=.jpg" alt="" /> <img src="https://www.showdoc.cc/server/api/common/visitfile/sign/cc132c13a2fbd3c0f427d611dbb6e3be?showdoc=.jpg" alt="" /> <img src="https://www.showdoc.cc/server/api/common/visitfile/sign/06c3b5d97619e16e20090a6c869c6bb7?showdoc=.jpg" alt="" /> <img src="https://www.showdoc.cc/server/api/common/visitfile/sign/09df4287b22b3312e91eaf1e2689ce30?showdoc=.jpg" alt="" /></p>

页面列表

ITEM_HTML