前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一切都要从MyCat的配置说起

一切都要从MyCat的配置说起

作者头像
用户7386338
发布2020-05-29 11:02:17
4140
发布2020-05-29 11:02:17
举报
文章被收录于专栏:Java患者Java患者

安装目录

我们首先要关注conf里面的配置文件

而配置文件我们需要了解的是

  • server.xml : MyCat服务器参数调整和用户授权的配置文件
  • schema.xml : 逻辑库定义和表以及分片定义的配置文件
  • rule.xml : 分片规则的配置文件,修改该配置文件需要重启MyCat

从server.xml开始了解配置的内容:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
      <system>
        <property name="nonePasswordLogin">0</property> 
        <property name="useHandshakeV10">1</property>
        <property name="useSqlStat">0</property>  
        <property name="useGlobleTableCheck">0</property>  

        <property name="sequnceHandlerType">2</property>
        <property name="sequnceHandlerPattern">(?:(\s*next\s+value\s+for\s*MYCATSEQ_(\w+))(,|\)|\s)*)+</property>
    <property name="subqueryRelationshipCheck">false</property> 


        <property name="processorBufferPoolType">0</property>

        <property name="handleDistributedTransactions">0</property>


        <property name="useOffHeapForMerge">0</property>


        <property name="memoryPageSize">64k</property>


        <property name="spillsFileBufferSize">1k</property>

        <property name="useStreamOutput">0</property>


        <property name="systemReserveMemorySize">384m</property>


        <property name="useZKSwitch">false</property>


        <property name="strictTxIsolation">false</property>

        <property name="useZKSwitch">true</property>

    </system>



    <user name="root" defaultAccount="true">
        <property name="password">123456</property>
        <property name="schemas">TESTDB</property>

    </user>

    <user name="user">
        <property name="password">user</property>
        <property name="schemas">TESTDB</property>
        <property name="readOnly">true</property>
    </user>

</mycat:server>

system标签,该标签内嵌套的property标签都是系统配置的属性。

我们主要关注user标签,该标签用于定义登陆mycat的时候的用户和权限

代码语言:javascript
复制
<user name="user">
    <property name="password">user</property>

定义了一个用户为user,密码为user

代码语言:javascript
复制
<property name="schemas">TESTDB1,TESTDB2,TESTDB3</property>

schemas定义的则是逻辑库的名称,如果有多个逻辑库可以用逗号隔开

接着了解schema.xml

代码语言:javascript
复制
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
        <table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />

        <table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" />

    </schema>
    <dataNode name="dn1" dataHost="localhost1" database="db1" />
    <dataNode name="dn2" dataHost="localhost1" database="db2" />
    <dataNode name="dn3" dataHost="localhost1" database="db3" />
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="hostM1" url="localhost:3306" user="root"
                   password="123456">
            <readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" />
        </writeHost>
        <writeHost host="hostS1" url="localhost:3316" user="root"
                   password="123456" />
    </dataHost>

</mycat:schema>
  • schema标签

用于定义逻辑库,name属性定义逻辑库的名字,sqlMaxLimit定义限制返回结果集的行数,如果-1表示关闭limit限制。

  • table标签

定义逻辑表,name定义逻辑表的名字,primaryKey定义逻辑表的主键,dataNode定义了表数据所存储的数据节点,rule定义了逻辑表分片规则,对应的是rule.xml中的

  • dataNode

定义逻辑表存储的物理数据库,name定义数据节点的名称,唯一,dataHost属性定义分派你所在的物理主机,database定义物理数据库名。

  • dataHost

定义后端数据库主机信息,name定义了一组数据库服务器的名称,在配置文件中必须唯一,

maxCon定义mycat连接mysql的最大连接数,balance定义mycat读写分离、负载均衡的工作方式,如果为0则是不开启读写分离机制。

dbType代表使用的数据库类型(比如mysql,mongoDB等)

dbDriver代表所使用的数据库驱动

switchType代表写数据库如何进行高可用的切换,如果为1代表当每一个writeHost不可访问的时候都会切换到第二个writeHost写服务器。

最后我们了解下rule.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
    <tableRule name="rule1">
        <rule>
            <columns>id</columns>
            <algorithm>func1</algorithm>
        </rule>
    </tableRule>



    <function name="func1" class="io.mycat.route.function.PartitionByLong">
        <property name="partitionCount">8</property>
        <property name="partitionLength">128</property>
    </function>

</mycat:rule>

rule.xml 主要就两个标签

  • tableRule

定义了配置表的分片规则,name分片规则名字,唯一。columns 定义了分片列,必须是表中存在的列,mycat根据这个列计算却低估当前数据要存放在哪个分片。algorithm指定表的分片算法,这里跟function的name属性。

  • function

定义配置表的分片算法,name定义了算法的名称,唯一。class属性是指实现分片算法的java类的全名。count代表分片节点数的总和。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java患者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装目录
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档