Mycat分布式数据库架构解决方案--schema.xml详解

简介: Mycat分布式数据库架构解决方案--schema.xml详解
该文件是一个包含Mycat的系统配置信息文件,对应的原码是SystemConfig.java。我们对该文件做一个详解,该文件在我们安装包中,/mycat/conf中(该文是基于“Mycat分布式数据库架构解决方案--Linux安装运行Mycat”)的后续,可以了解安装之后目录结构。想要对比详细配置文件也可以直接去github下载mycat源码,下载地址: https://github.com/MyCATApache/Mycat-Server
<?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>
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1540 3
|
运维 监控 关系型数据库
AI 时代的 MySQL 数据库运维解决方案
本文探讨了大模型与MySQL数据库运维结合所带来的变革,介绍了构建结构化运维知识库、选择合适的大模型、设计Prompt调用策略、开发MCP Server以及建立监控优化闭环等关键步骤。通过将自然语言处理能力与数据库运维相结合,实现了故障智能诊断、SQL自动优化等功能,显著提升了MySQL运维效率和准确性。
1063 18
|
Cloud Native 关系型数据库 分布式数据库
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
阿里云瑶池数据库与沃趣科技将继续深化合作,共同推动国产数据库技术的持续创新与广泛应用,为行业生态的繁荣注入更强劲的技术动力。
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
|
11月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的&quot;神经网络&quot;,强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
4231 57
|
运维 监控 关系型数据库
AI 时代的 MySQL 数据库运维解决方案
本方案将大模型与MySQL运维深度融合,构建智能诊断、SQL优化与知识更新的自动化系统。通过知识库建设、大模型调用策略、MCP Server开发及监控闭环设计,全面提升数据库运维效率与准确性,实现从人工经验到智能决策的跃迁。
1276 27
|
SQL 安全 关系型数据库
数据库安全管理新范式:DBKEEPER一体化数据库权限管控堡垒机解决方案
在数字化时代,数据库安全至关重要。DBKEEPER提供一站式数据库安全访问与权限管控解决方案,支持多种数据库,具备精细化权限管理、数据脱敏、高危操作拦截、全面审计等功能,助力企业实现智能、安全的数据治理,满足金融、医疗、互联网等行业合规需求。选择DBKEEPER,让数据库安全管理更高效!
数据库安全管理新范式:DBKEEPER一体化数据库权限管控堡垒机解决方案
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
消息中间件 缓存 算法
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
1606 0
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡

热门文章

最新文章