zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    python高级编程
    django笔记
    sublime ide
    python3 django mysql
    python win
    linux时区设置
    在实际应用中如何实现切圆角的功能
    display和visiblity在应用中使用哪个好
    看懂UML类图和时序图
    解决Xcode7.2真机调试出现:The account “” has no team with ID “”
  • 原文地址:https://www.cnblogs.com/9080dlb/p/15719557.html
Copyright © 2011-2022 走看看