schema.xml 概述

schema.xml 是 Mycat 的核心配置文件,管理逻辑数据库、逻辑表、数据节点和数据主机。

核心组件

1. Schema 标签(逻辑数据库)

定义虚拟数据库,解耦应用与物理数据库:

<schema name="edu_order" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
    <table name="orders" primaryKey="order_id" dataNode="dn1,dn2" rule="mod-long"/>
</schema>

2. Table 标签(逻辑表)

指定虚拟表结构和支持三种类型:

  • 分片表:使用规则分布在多个节点
  • 全局表:复制到所有节点
  • 非分片表:存储在单个节点

3. DataNode 标签

将逻辑表映射到物理数据库实例:

<dataNode name="dn1" dataHost="edu_order_1" database="edu_order_1" />

4. DataHost 标签

配置物理数据库连接:

  • 连接池设置(maxCon/minCon)
  • 读写分离(balance属性)
  • 高可用(switchType)
  • 心跳检测

5. Heartbeat 标签

指定数据库监控的健康检查SQL查询:

  • MySQL: SELECT user()
  • Oracle: SELECT 1 FROM dual

6. WriteHost/ReadHost 标签

定义主库(写)和从库(读)数据库实例。

典型应用场景

  • 订单表按时间或用户ID分片
  • 全局表用于产品信息同步
  • 日志表按日期范围分区

配置注意事项

  1. 需与 rule.xml 配合使用分片规则
  2. 修改后需重启 Mycat 或重新加载
  3. 保持逻辑配置与实际数据库结构同步