万隆的笔记 万隆的笔记
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
  • Mycat介绍
  • Mycat 核心概念
  • server.xml配置
  • schema.xml配置
    • schema标签
    • table标签
    • dataNode标签
    • dataHost标签
  • rule.xml配置
  • Mycat的基本使用
  • Mycat事物
  • MyCat
2022-03-26
目录

schema.xml配置

# schema.xml配置

Mycat 中重要的配置文件之一,管理着 Mycat 的逻辑库、表、分片节点、主机等信息。

# schema标签

schema 标签用于定义 Mycat 实例中的逻辑库,Mycat 可以有多个逻辑库,每个逻辑库都有自己的相关配置。可以使用 schema 标签来划分这些不同的逻辑库。

<schema name="tb_booking" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"></schema>
属性名 值 数量限制 说明
dataNode String 0...1 分片节点
sqlMaxLimit Integer 1 查询返回的记录数限制limit
checkSQLschema Boolean 1 是否去表库名

# table标签

table标签定义了 Mycat 中的逻辑表,所有需要拆分的表都需要在这个标签中定义

<table name="tb_order" dataNode="dn1,dn2" rule="tb_order_rule" primaryKey="ID" autoIncrement="true"/>
属性名 值 数量限制 说明
name String 1 逻辑表名
dataNode String 1...* 分片节点
rule String 0...1 分片规则
ruleRequired Boolean 0...1 是否强制绑定分片规则
primaryKey String 1 主键
type String 0...1 逻辑表类型:全局表(global)、普通表
autoIncrement Boolean 0...1 自增长主键
subTables String 1 分表
needAddLimit Boolean 0...1 是否为查询SQL自动加limit限制

# dataNode标签

dataNode标签定义了 MyCat 中的分片节点,也就是我们通常说所的数据分片。

<dataNode name="dn1" dataHost="tb_order_1" database="tb_order_1" />
属性名 值 数量限制 说明
name String 1 定义数据节点的名字,这个名字需要是唯一的,我们需要在 table 标签上应用这个名字,来建立表与分片对应的关系。在schema标签应用这个名字,建立分片与库对应关系
dataHost String 1 用于定义该分片属于哪个分片主机,属性值是引用 dataHost 标签上定义的 name 属性。
database String 1 用于定义该分片节点属于哪个具体的库

# dataHost标签

dataHost标签在 Mycat 逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。

<dataHost name="tb_order_1" maxCon="100" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> 
		<heartbeat>......</heartbeat>
    <writeHost>
         <readHost>......</readHost>
         ......
    </writeHost>
    ......
</dataHost>
属性名 值 数量限制 说明
name String 1 节点主机名
maxCon Integer 1 最大连接数
minCon String 1 用于定义该分片节点属于哪个具体的库
minCon Integer 1 最小连接数
balance Integer 1 读操作负载均衡类型
writeType Integer 1 写操作负载均衡类型
dbType String 1 数据库类型
dbDriver String 1 数据库驱动
switchType String 1 主从切换类型,-1表示不自动切换;1表示自动切换;2表示基于MySQL主从同步状态决定是否切换;3表示基于MySQL cluster集群切换机制

# heartbeat标签

heartbeat标签内指明用于和后端数据库进行心跳检查的语句。例如:MySQL 可以使用 select user()、Oracle 可以 使用 select 1 from dual 等

<dataHost ...> 
  <heartbeat>select user()</heartbeat> 
</dataHost>

# writeHost和readHost标签

writeHost和readHost标签都指定后端数据库的相关配置给 mycat,用于实例化后端连接池。唯一不同的是,writeHost 指定写实例、readHost 指定读实例。

在一个 dataHost 内可以定义多个 writeHost 和 readHost。但是,如果 writeHost 指定的后端数据库宕机, 那么这个 writeHost 绑定的所有 readHost 都将不可用。另一方面,由于这个 writeHost 宕机会被系统自动的检测,并切换到备用的 writeHost上去。

	<dataHost name="localhost1" 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="hostM1" url="jdbc:mysql://localhost:3306" user="root"
				   password="root">
		</writeHost>
		<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
	</dataHost>
属性名 值 数量限制 说明
host String 1 主机名
url String 1 连接字符串
password String 1 密码
user String 1 用户名
weight String 1 权重
usingDecrypt String 1 是否对密码加密,默认0

balance参数:

值 说明
0 所有读操作都发送到当前可用的writeHost
1 所有读操作都随机发送到readHost和stand by writeHost
2 所有读操作都随机发送到writeHost和readHost
3 所有读操作都随机发送到writeHost对应的readHost上,但是writeHost不负担读压力

writeType参数:

值 说明
0 所有写操作都发送到可用的writeHost
1 所有写操作都随机发送到readHost
2 所有写操作都随机发送到writeHost,readHost
上次更新: 5/30/2023, 11:42:20 PM
rule.xml配置

rule.xml配置→

最近更新
01
2025
01-15
02
Elasticsearch面试题
07-17
03
Elasticsearch进阶
07-16
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式