Mycat

下载安装

下载地址:http://dl.mycat.org.cn/

[root@dlb local]# tar -zxvf Mycat-server-1.6.7.6-release-20210930213049-linux.tar.gz -C /usr/local/    #解压到这个目录下
#加压既安装

配置文件

①schema.xml:定义逻辑库,表、分片三个节点等内容

<!-- 读写分离分库分表都在这里配置 -->

<!-- 检查SQL,设置为false ,有可能是很多种类的数据表,不仅仅是mysql-->
    <schema name="mycatdb" checkSQLschema="false" sqlMaxLimit="100" randomDataNode="dn1">
        <!-- auto sharding by id (long) -->
        <!--splitTableNames 启用<table name 属性使用逗号分割配置多个表,即多个表使用这个配置-->
<!--fetchStoreNodeByJdbc 启用ER表使用JDBC方式获取DataNode
        dataNode:拆分后的切片 和中间的dataNode标签名保持一致
        rule: 拆分规则,可以自定义
-->
        <table name="customer" primaryKey="id" dataNode="dn1,dn2" rule="test-rule" autoIncrement="true" fetchStoreNodeByJdbc="true">
            <childTable name="customer_addr" primaryKey="id" joinKey="customer_id" parentKey="id"> </childTable>
        </table>
        <!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"
            /> -->
    </schema>
    <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
        /> -->
        <!-- 
            name:和table标签的dataNode保持一致
            dataHost:读写分离的主机地址,此参数向下面的datahost标签传入
            database:
         -->
    <dataNode name="dn1" dataHost="localhost1" database="msa" />
    <dataNode name="dn2" dataHost="localhost1" database="msb" />

    <!-- 
        balance:读请求的负载均衡
                0:不开启读写分离,所有的读操作 都发送到writehost中
                1:全部的readhost 和stand by writehost都参与读操作的负载均衡  在多写多读下,除了激活状态下的写,其他节点统一按照读节点用
                2:读请求,随机给读写节点,一般不用
                3:读请求随机发给写主机中的读机,写机不参与读请求-——推荐
        writeType:写请求的负载均衡
                0:写请求先发给schema.xml的第一个writeHost标签配置的,第一个挂了发给第二个,一次向下,切换的日志会记录conf/dnindex.properties-——【推荐0】
                1:写请求随机发送到所有的写机中
        switchType:书否允许读操作,在读机和写机上自动切换,解决延迟问题【当从写机中出现卡住(网路等问题)自动从写中读数据】
                    -1:不允许
                     1:默认允许
                     2:根据“主从同步的状态”自动选择是否切换。心跳(延迟,心跳要发送延迟信息)【推荐】
     -->
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
              writeType="0" dbType="mysql" dbDriver="jdbc" switchType="2"  slaveThreshold="100">
              <!-- 用来确认大哥和小弟是否都存活  此时改为了发送延迟信息。-->
        <heartbeat>select slave status</heartbeat>
        <!-- can have multi write hosts -->
        <!-- 主机为写,从机为读 -->
        <writeHost host="master1" url="jdbc:mysql://47.101.165.96:3306" user="admin" password="Amanda+3213">
            <readHost host="slave1" url="jdbc:mysql://47.97.32.153:3306" user="admin" password="Amanda+3213"/>
        </writeHost>
        <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
    </dataHost>

②rule.xml:定义分片规则

<!-- 平均拆分     name和schema里设置的一致,可自定义   -->
    <tableRule name="test-rule">
        <rule>
            <columns>id</columns>
            <algorithm>mod-long</algorithm>
        </rule>
    </tableRule>
<!-- 平均拆分的方法 -->
    <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
        <!-- how many data nodes -->
        <!-- 切成几份? -->
        <property name="count">2</property>
    </function>

③server.xml:定义用户以及系统相关变量,如端口等

<!-- 登录mycat的账号和密码 -->
    <user name="mycat1" defaultAccount="true">
        <property name="password">123456</property>
        <!-- 逻辑库,中间可以用,逗号隔开表示多个逻辑库 -->
        <property name="schemas">mycatdb</property>
        <property name="defaultSchema">TESTDB</property>
        <!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->
        
        <!-- 表级 DML 权限设置 -->
        <!-- 这个地方是设置表权限的的 0代表关闭,1代表可以操作,分别是增删改查 -->
        <!--         
        <privileges check="false">
            <schema name="TESTDB" dml="0110" >
                <table name="tb01" dml="0000"></table>
                <table name="tb02" dml="1111"></table>
            </schema>
        </privileges>        
         -->
    </user>
<!--下面可以不配-->
    <user name="user">
        <property name="password">user</property>
        <property name="schemas">mycatdb</property>
        <property name="readOnly">true</property>
        <property name="defaultSchema">mycatdb</property>
    </user>

管理

#下面命令必须切换到mycat的bin目录下执行  默认端口号 8066
./mycat start #启动
./mycat stop  #停止
./mycat status #查看状态
./mysql-umycat -p -
./mysql -uroot -p123456 -P8066

 

posted @ 2021-12-22 14:59  大萝卜萌萌哒  阅读(58)  评论(0编辑  收藏  举报