Mycat 读写分离配置参数解释

Mycat 环境

MyCAT是使用JAVA语言进行编写开发,由于MyCAT中使用了JDK7中的一些特性,所以要求必须在JDK7以上的版本上运行

  • 安装JDK7以上的版本
  • 官网下载安装包解压后配置直接使用
  • 官方建议放在usr/local/Mycat 目录下

目录解释

  • bin程序目录,存放了window版本和linux版本,除了提供封装成服务的版本之外,也提供了nowrap的shell脚本命令
    • ./mycat console,首先要chmod +x *
    • mycat 支持的命令{ console | start | stop | restart | status | dump }
  • conf目录下存放配置文件
    • schema.xml是逻辑库定义和表以及分片定义的配置文件
    • rule.xml 是分片规则的配置文件
    • server.xml 几乎保存了所有mycat需要的系统配置信息和用户权限
  • lib目录下主要存放mycat依赖的一些jar文件
  • logs目录存放日志文件

在这里插入图片描述

配置参数

schema.xml

定义mycat逻辑库和数据分片(这块属于mycat逻辑上的概念)
在这里插入图片描述定义mycat后端真实服务器的连接

在这里插入图片描述
dataHost的2个特殊属性
在这里插入图片描述

都是针对的双主双从的场景

server.xml

定义用户权限
在这里插入图片描述

只写了跟读写分离相关的参数配置,其他可以查看官网,有很详细的说明

官方参考:http://www.mycat.org.cn/document/mycat-definitive-guide.pdf

配置实例

1、配置主从复制
2、安装JDK环境
3、配置mycat

配置mycat

wget http://dl.mycat.org.cn/1.6.7.1/Mycat-server-1.6.7.1-release-20200209222254-linux.tar.gz
tar -xzf Mycat-server-1.6.7.1-release-20200209222254-linux.tar.gz -C /usr/local/
#下载mycat安装包并解压

编辑schema.xml文件

vi /usr/local/mycat/conf/schema.xml 

<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="mytest" checkSQLschema="false" sqlMaxLimit="100" dataNode='dn1'>

        </schema>
        <dataNode name="dn1" dataHost="localhost1" database="test" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="-1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <writeHost host="hostM1" url="192.168.26.100:3306" user="root"
                                   password="111111"></writeHost>
                <writeHost host="hostS1" url="192.168.26.101:3306" user="root"
                                   password="111111" />
        </dataHost>
</mycat:schema>

1、因为我没有配置table标签所有schema 要加上dataNode做为默认节点
2、schema dataNode dataHost 存在字段关联的,最底层就是dataHost
3、单主从建议switchType为-1,不然会导致主从数据不一致问题

问题:
writeHost 的子集是readhost,而如果writeHost 故障就导致readhost也无法读取,这样就不合理了,而解决的方法就是接触双主从,把主从当成双主关系,这边就需要改balance="1"和writeType=“0”,balance是让次主参与读策略,writeType就是让第一个writeHost 配置是写库,这样就不存在子集关系了

编辑server.xml 文件

<user name="root" defaultAccount="true">
                <property name="password">123456</property>
                <property name="schemas">mytest</property>
#必配的信息,privileges可选
#把多余关于user的信息删除,不然可能启动mycat报错

启动登入mycat

cd /usr/local/mycat/bin

./mycat console start
#先看下是否启动正常

./mycat  start/stop/restart
#后台启动

mysql -uroot -p123456 -h127.0.0.1  -P8066 -Dmytest
#连接mycat的mytest数据库

怎么测试?

借助插入数据库变量@@hostname会显示自己的主机名,前提是binlog_format=STATEMENT,这样从才能执行sql语句


INSERT INTO mytab VALUES(109,@@hostname); 
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页