安装Centos7 、 Mysql8 集群,实现读写分离 高可用(五)-- MyCat配置详解


零、说在前面

    书接前文,首先祭出前文中出现的几个配置文件,然后分别说明

    其实大部分的配置标签及其属性,在官方的Mycat的说明文档中都有说明,我只选一些我觉得比较重要的说一下

一、开始配置

    1、server.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="charset">utf8</property>

            <!-- 处理线程数量,默认与cpu数量一致,具体情况根据服务器部署的其他服务的数量决定 -->
            <property name="processors">1</property>

            <!-- 1为开启实时统计、0为关闭 -->
            <property name="useSqlStat">0</property>

            <!-- 1为开启全加班一致性检测、0为关闭 -->
            <property name="useGlobleTableCheck">0</property>

            <property name="sequnceHandlerType">2</property>
            <property name="processorBufferPoolType">0</property>
            <property name="handleDistributedTransactions">0</property>
            <property name="useOffHeapForMerge">1</property>
            <property name="memoryPageSize">1m</property>
            <property name="spillsFileBufferSize">1k</property>
            <property name="useStreamOutput">0</property>
            <property name="systemReserveMemorySize">384m</property>
            <property name="useZKSwitch">true</property>
        </system>
        <user name="root">
            <!-- 这里的账号和密码与你的数据库一致即可 -->
            <property name="password">987654</property>

            <!-- 这里的TESTDB的名字可以随便写,只需与schema.xml中的一致即可 -->
            <property name="schemas">TESTDB</property>
        </user>
 
</mycat:server>



    2、schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        
    <!-- 这里的name属性的值TESTDB与上面server.xml中的一致即可,
        sqlMaxLimit属性代表每次只查询前n条符合条件的记录,避免全表扫描 -->
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
        <!-- 下面名叫“t_a1”的表是在我的库中真实存在的一个表,
            同时,下面的dataNode属性的值对应的是下面dataNode标签的name属性的值 -->
        <table name="t_a1" primaryKey="ID" type="global" dataNode="dn1" />
    </schema>
    
    <!-- dataNode标签的主要作用是指明对哪一个数据库进行操作和管理,
        其中的dataHost属性对应的下面dataHost标签的name属性的值 -->
    <dataNode name="dn1" dataHost="localhost1" database="xxtest" />    
    
    <!-- 下面的localhost1的名字是随便取的,balance、writeType和switchType的含义在下面解释 -->
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
        writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        
        <!-- 检测心跳的方法,可以用下面的语句,也可以用其他的 -->
        <heartbeat>select user()</heartbeat>

        <!-- 下面是读和写的mysql的ip和端口,以及登录的账号和密码。
            开始我被忽悠,把读与写的host属性的值写成一样的,注意,那是不可以的 -->
        <writeHost host="hostM1" url="192.168.122.21:3306" user="root" password="987654">
            <readHost host="hostS2" url="192.168.122.22:3306" user="root" password="987654" />
        </writeHost>
    </dataHost>
</mycat:schema>


先说一下<table>中各属性的含义,如下

primaryKey     主键字段名,据说自动生成主键时需要设置
autoIncrement  是否自增。若想在Mycat中使用这个参数,前提是需要在MySQL的表中定义了自增长的主键,
                    然后才可以使用last_insert_id获取主键返回值。此参数与表中的对应设置缺一不可。
rule           分片规则,见我dark下面的说明
type           逻辑表的类型,目前逻辑表只有全局表和普通表,前者取值为“global”,后者为空
                    同时,全局表查询任意节点,普通表查询所有节点,(我没懂具体区别在哪里)
needAddLimit   在分库分表的情况下,数据量会异常庞大,所以此参数是用来确定是否限制返回的数据条数

接着是字表<childTable>中的属性

当前标签是用于ER分片的字表使用,通过joinKey和parentKey与父表关联

joinKey 子表的某个字段,与父表关联
parentKey 父表的某个字段,与字表关联

再说一下上面<dataHost>中各属性的含义,如下

balance指的负载均衡类型,目前的取值有4种:

    "0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。

    "1",全部的readHost与stand by writeHost参与select语句的负载均衡,
        简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),
        正常情况下,M2,S1,S2都参与select语句的负载均衡。

    "2",所有读操作都随机的在writeHost、readhost上分发。

    "3",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力

writeType值得是写入的模式
    "0" 表示所有写操作发送到第一个writeHost上,若第一个挂了切换到存活的第二个writeHost上
        重启后仍以切换后的在用那个为准,切换记录在配置文件"dnindex.properties"中
    "1"表示所有写操作随机的发送到所有的writeHost上,1.5版本后1这个取值废弃不用

switchType指的是切换的模式,目前的取值也有4种:

    "-1" 表示不自动切换

    "1" 默认值,表示自动切换

    "2" 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status

    "3"基于MySQL galary cluster的切换机制(适合集群)(1.4.1),
        心跳语句为 show status like 'wsrep%'。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值