目录

schema.xml详解

server.xml详解

rule.xml详解


schema.xml详解

schema.xmL作为 Mycal中最重要的配置文件之一,涵盖了 Mycat的逻辑库、逻辑表、分片规则、分片节点及数据源的配置。

主要包含一下三组标签

schema标签 配置逻辑表的信息

  • name:定义逻辑表表名,在该逻辑库下唯一
  • datanode:定义逻辑表所属的 datanode,该属性需要与 datanode标签中name对应;多个 datanode逗号分隔
  • rule:分片规则的名字,分片规则名字是在rue.xml中定义的
  • primarykey:逻辑表对应真实表的主键
  • type:逻辑表的类型,目前逻辑表只有全局表和普通表,如果未配置,就是普通表;全局表,配置为 global

datanode标签 配置节点相关信息

  • name:唯一标识,供上层标签使用
  • maxon/ min Con:最大连接数/最小连接数
  • balance:负载均衡策略,取值0,1,23
  • writeτype:写操作分发方式(0:写操作转发到第一个 writehost,第一个挂了,切换到第二个;1:写操作随机分发到配置的 writehost
  • dbDrⅳver:数据库驱动,支持 native、jdbc

datahost标签 配置节点具体映射数据源的信息

schema核心属性

  • name:指定自定义的逻辑库库名
  • checksqlschema:在SQL语句操作时指定了数据库名称,执行时是否自动去除;true:自动去除, false:不自动去除【如果我们有多个schema或者一个schema 我们不指定逻辑库 直接通过命令去查表 那么会报错 例如:select*from TB_ORDER; 正确命令:select*from DB01.TB_ORDER;此时我们就需要在真正执行时让Mycat去掉DB01.否则也会报错】
  • sqlmaxlimit:如果未指定 Limit进行查询,最多能查询出多少数据

例如:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--                         逻辑库的名字                               --><schema name="DB01" checkSQLschema="true" sqlMaxLimit="100">
<!--                     逻辑表的名字           逻辑表下的节点      逻辑表数据存入节点的规则 --><table name="TB_ORDER" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /></schema>
<!--   节点名称                          节点关联的物理主机位置    关联数据库名称 --><dataNode name="dn1" dataHost="dhost1" database="db01" /><dataNode name="dn2" dataHost="dhost2" database="db01" /><dataNode name="dn3" dataHost="dhost3" database="db01" />
<!--      与节点dataHost保持一致     最大连接    最小连接    负载均衡策略 --><dataHost name="dhost1" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100"><!--       心跳                          需要改为jdbc--><heartbeat>select user()</heartbeat>
<!--  如果不是集群的话  可以都写master   注意每个物理库地址和账号密码需要更改   --><writeHost host="master" url="jdbc:mysql://192.168.95.xxx:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root"password="1234"></writeHost></dataHost><!--  与上一个dataHost相同 --><dataHost name="dhost2" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="master" url="jdbc:mysql://192.168.96.xxx:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root"password="1234"></writeHost></dataHost><!--    与上一个dataHost相同 --><dataHost name="dhost3" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- can have multi write hosts --><writeHost host="master" url="jdbc:mysql://192.168.97.xxx:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root"password="1234"></writeHost></dataHost></mycat:schema>

server.xml详解

server.xml主要是配置我们连接时的权限过滤设置,例如我们可以在这里设置读写权限,用户登录验证,访问数据库的权限等等

<!--  配合上面的schema.xml 写的例子   -->
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/"><system><property name="nonePasswordLogin">0</property> <!-- 0为需要密码登陆、1为不需要密码登陆 ,默认为0,设置为1则需要指定默认账户--><property name="useHandshakeV10">1</property><property name="useSqlStat">0</property>  <!-- 1为开启实时统计、0为关闭 --><property name="useGlobleTableCheck">0</property>  <!-- 1为开启全加班一致性检测、0为关闭 --><property name="sqlExecuteTimeout">300</property>  <!-- SQL 执行超时 单位:秒--><property name="sequnceHandlerType">2</property><!--<property name="sequnceHandlerPattern">(?:(\s*next\s+value\s+for\s*MYCATSEQ_(\w+))(,|\)|\s)*)+</property>--><!--必须带有MYCATSEQ_或者 mycatseq_进入序列匹配流程 注意MYCATSEQ_有空格的情况--><property name="sequnceHandlerPattern">(?:(\s*next\s+value\s+for\s*MYCATSEQ_(\w+))(,|\)|\s)*)+</property><property name="subqueryRelationshipCheck">false</property> <!-- 子查询中存在关联查询的情况下,检查关联字段中是否有分片字段 .默认 false --><!--  <property name="useCompression">1</property>--> <!--1为开启mysql压缩协议--><!--  <property name="fakeMySQLVersion">5.6.20</property>--> <!--设置模拟的MySQL版本号--><!-- <property name="processorBufferChunk">40960</property> --><!-- <property name="processors">1</property> <property name="processorExecutor">32</property> --><!--默认为type 0: DirectByteBufferPool | type 1 ByteBufferArena | type 2 NettyBufferPool --><property name="processorBufferPoolType">0</property><!--默认是65535 64K 用于sql解析时最大文本长度 --><!--<property name="maxStringLiteralLength">65535</property>--><!--<property name="sequnceHandlerType">0</property>--><!--<property name="backSocketNoDelay">1</property>--><!--<property name="frontSocketNoDelay">1</property>--><!--<property name="processorExecutor">16</property>--><!--<property name="serverPort">8066</property> <property name="managerPort">9066</property> <property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property><property name="dataNodeIdleCheckPeriod">300000</property> 5 * 60 * 1000L; //连接空闲检查<property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> --><!--分布式事务开关,0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志--><property name="handleDistributedTransactions">0</property><!--off heap for merge/order/group/limit      1开启   0关闭--><property name="useOffHeapForMerge">0</property><!--单位为m--><property name="memoryPageSize">64k</property><!--单位为k--><property name="spillsFileBufferSize">1k</property><property name="useStreamOutput">0</property><!--单位为m--><property name="systemReserveMemorySize">384m</property><!--是否采用zookeeper协调切换  --><property name="useZKSwitch">false</property><!-- XA Recovery Log日志路径 --><!--<property name="XARecoveryLogBaseDir">./</property>--><!-- XA Recovery Log日志名称 --><!--<property name="XARecoveryLogBaseName">tmlog</property>--><!--如果为 true的话 严格遵守隔离级别,不会在仅仅只有select语句的时候在事务中切换连接--><property name="strictTxIsolation">false</property><property name="useZKSwitch">true</property></system><!-- 全局SQL防火墙设置 --><!--白名单可以使用通配符%或着*--><!--例如<host host="127.0.0.*" user="root"/>--><!--例如<host host="127.0.*" user="root"/>--><!--例如<host host="127.*" user="root"/>--><!--例如<host host="1*7.*" user="root"/>--><!--这些配置情况下对于127.0.0.1都能以root账户登录--><!--<firewall><whitehost><host host="1*7.0.0.*" user="root"/></whitehost><blacklist check="false"></blacklist></firewall>--><user name="root" defaultAccount="true"><property name="password">123456</property><property name="schemas">DB01</property><!-- 表级 DML 权限设置 --><!--        表级别读写权限设置<privileges check="false"><schema name="TESTDB" dml="0110" ><table name="tb01" dml="0000"></table><table name="tb02" dml="1111"></table></schema></privileges>        --></user><user name="user"><property name="password">123456</property><property name="schemas">DB01</property><property name="readOnly">true</property></user></mycat:server>

rule.xml详解

这个文件主要是设置我们的分片规则的,分片规则决定了逻辑表中的数据以何种方式落到不同的数据库中  规则需要在schema.xml中进行配置,需要对照着rule.xml中的规则方式进行设置。并且这些规则引用了外部具体的文件,作为规则的具体配置。以默认规则举例。

<!--   默认的规则  根据id进行分片 --><tableRule name="auto-sharding-long"><rule><columns>id</columns>
<!--       具体的计算方式在rang-long中 这是一个引用  具体的路径在autopartition-long.txt --><algorithm>rang-long</algorithm></rule></tableRule>

创建实际库与Mycat逻辑库的数据库与表结构

  • 运行Mycat可以看到这些逻辑表都已经存在了【如果使用NaviCat查看的话是看不到的】我们需要将实际的数据表进行创建

在Mycat中执行创建库与表的操作后,对应节点主机上也会相应的创建出一模一样的数据库。

此时 我们就可以根据我们不同的业务需求,通过逻辑库操作具体的数据库节点了。

Mycat也是我们常用的读写分离,分库分表,多租户的解决方案。

Mycat配置文件详解相关推荐

  1. mybatis mysql 配置文件_Mybatis配置文件详解(4)

    本次主要来了解: MyBatis数据库配置文件SqlMapConfig.xml SQL映射配置中输入映射的配置 SQL映射配置中输出映射的配置 SQL映射配置中动态SQL语句的配置 1. SqlMap ...

  2. MyBatis复习笔记2:配置文件详解

    配置文件详解 属性(properties) MyBatis可以使用 properties 来引入外部 properties 配置文件的内容 resource:引入类路径下的资源 url:引入网络路径或 ...

  3. vuecli 编译后部署_基于vue-cli 打包时抽离项目相关配置文件详解

    前言:当使用vue-cli进行开发时时常需要动态配置一些设置,比如接口的请求地址(axios.defaults.baseURL),这些设置可能需要在项目编译后再进行设置的,所以在vue-cli里我们需 ...

  4. (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

    springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

  5. CENTOS7 高性能Linux集群 通过yum进行 haproxy配置 !安装 !使用!HAProxy配置文件详解

    Haproxy配置 永久修改名字:便于区分虚拟机! Haproxy:hostnamectl set-hostname haproxy Web1: hostnamectl set-hostname WE ...

  6. 用户管理 之 用户(User)和用户组(Group)配置文件详解

    作者:北南南北 来自:LinuxSir.Org 摘要:本文详解用户(User)和用户组(Group)的配置文件,本文是<Linux 用户(User)和用户组(Group)管理概述>文档的关 ...

  7. 【ZooKeeper】配置文件详解

    ZooKeeper的配置文件详解 zkServer.sh读取的默认配置文件是$ZOOKEEPER_HOME/conf/zoo.cfg.如果要用其它配置文件.如下传递配置文件参数: zkServer.s ...

  8. vsftpd配置文件详解

      1.默认配置: 1>允许匿名用户和本地用户登陆.      anonymous_enable=YES      local_enable=YES 2>匿名用户使用的登陆名为ftp或an ...

  9. Web.config配置文件详解(新手必看)

    Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点. ...

最新文章

  1. MLIR与Code Generation
  2. xp系统电脑ntp服务器,xp 设置ntp服务器
  3. Python中遍历整个列表及注意点(参考书籍Python编程从入门到实践)
  4. Android开源项目分类汇总[转]
  5. 从Swap函数谈加法溢出问题
  6. mysql的存储过程正负数的变化_《转》mysql存储过程语法及范例
  7. 排序算法Java代码实现(二)—— 冒泡排序
  8. python random用法_python random 的用法
  9. 如何运行python代码
  10. c# 中的除法运算需要注意
  11. HCIA-IoT V2.5 物联网初级考试-2019年题库错题汇总
  12. 什么是OGNL表达式
  13. 【word】如何让文本中已经使用的样式出现在样式库中?
  14. java读写二进制文件 移动指针 seek_文件与文件夹操作
  15. css信号强度显示,纯css实现wifi信号图标及强弱/链接/加密状态
  16. matlab中除法的使用,错误使用 / 矩阵维度必须一致
  17. 微软surface屏幕测试软件,Soomal作品 - Microsoft 微软 Surface Pro 4平板笔记本电脑屏幕测评报告 [Soomal]...
  18. 明天就会有阳光...
  19. Java SE 基础知识
  20. 语义分割模型中分辨率恢复_语义模型在智慧工业运营中的作用

热门文章

  1. PostgreSQL 覆盖 Oracle 18c 重大新特性
  2. HTML5——新增可拖动
  3. MCUXpresso Config Tools Windows 64bit package 软件下载
  4. ib中文诗歌赏析:背后的文化意义
  5. 1080P、720P、4CIF、CIF所需要的理论带宽和工程中实际带宽及存储容量
  6. 解决项目打成jar包上线无法读取配置文件(可通过挂载的方式解决)
  7. 高中信息技术真题(2022下)
  8. 用python自动发送qq消息 可选择发送内容与次数
  9. 附指南原文下载-《GB/T 39725-2020 信息安全技术 健康医疗数据安全指南》解读(一)
  10. 笔记119--摘自爱哥06