zoukankan      html  css  js  c++  java
  • Mycat配置入门


    配置:

    --bin 启动目录

    --conf 配置文件存放配置文件:

    --server.xml:是Mycat服务器参数调整和用户授权的配置文件。

    --schema.xml:是逻辑库定义和表以及分片定义的配置文件。

    --rule.xml: 是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置文件修改需要重启MyCAT。

    --log4j.xml: 日志存放在logs/log中,每天一个文件,日志的配置是在conf/log4j.xml中,根据自己的需要可以调整输出级别为debug debug级别下,会输出更多的信息,方便排查问题。

    --autopartition-long.txt,partition-hash-int.txt,sequence_conf.properties, sequence_db_conf.properties 分片相关的id分片规则配置文件

    --lib MyCAT自身的jar包或依赖的jar包的存放目录。

    --logs MyCAT日志的存放目录。日志存放在logs/log中,每天一个文件
    下面图片描述了Mycat最重要的3大配置文件:


    逻辑库配置:

    配置server.xml

    添加两个mycat逻辑库:user,pay: system 参数是所有的mycat参数配置,比如添加解析器:defaultSqlParser,其他类推 user 是用户参数。

    <system>

    <property name="defaultSqlParser">druidparser</property>

    </system>

    <user name="mycat">

    <property name="password">mycat</property>

    <property name="schemas">user,pay</property>

    </user>

    编辑schema.xml

    修改dataHost和schema对应的连接信息,user,pay 垂直切分后的配置如下所示:

    schema 是实际逻辑库的配置,user,pay分别对应两个逻辑库,多个schema代表多个逻辑库。

    dataNode是逻辑库对应的分片,如果配置多个分片只需要多个dataNode即可。

    dataHost是实际的物理库配置地址,可以配置多主主从等其他配置,多个dataHost代表分片对应的物理库地址,下面的writeHost、readHost代表该分片是否配置多写,主从,读写分离等高级特性。

    以下例子配置了两个writeHost为主从。

    <schema name="user" checkSQLschema="false" sqlMaxLimit="100" dataNode="user" />
    <schema name="pay" checkSQLschema="false" sqlMaxLimit="100" dataNode="pay" >
    <table name="order" dataNode="pay1,pay2" rule="rule1"/>
    </schema>

    <dataNode name="user" dataHost="host" database="user" />
    <dataNode name="pay1" dataHost="host" database="pay1" />
    <dataNode name="pay2" dataHost="host" database="pay2" />

    <dataHost name="host" maxCon="1000" minCon="10" balance="0"
    writeType="0" dbType="mysql" dbDriver="native">
    <heartbeat>select 1</heartbeat>
    <!-- can have multi write hosts -->
    <writeHost host="hostM1" url="192.168.0.2:3306" user="root" password="root" />
    <writeHost host="hostM2" url="192.168.0.3:3306" user="root" password="root" />
    </dataHost>

    编辑MYCAT_HOME/conf/schema.xml文件,增加对物理数据表映射信息:


    一、schema节点中各属性说明:
    name:制定逻辑库名称;
    checkSQLschema:如果为true,执行select * from TESTDB.travelrecord,则会修改为select * from travelrecord;即把表示schema的字段去掉;
    sqlMaxLimit:当设置该值时,每条查询SQL语句,如果没有加上limit语句,MyCat也会自动的加上。例如值为100,则加上limit 100;


    二、table节点中各属性说明:
    name:指定物理表名称;
    primaryKey:指定物理表主键名称;例如:分片的规则是使用非主键进行分片的,那么在使用主键查询的时候,就会发送查询语句到所有的配置的DN上,如果使用该属性配置真实表的主键。那么MyCat会缓存主键与具体DN的信息,那么再次使用非主键进行查询的时候就不会进行广播式查询,就会直接发送语句给具体的DN,但是尽管配置该属性,如果缓存并没有命中的话,还是会发送语句给具体的DN,来获取数据。
    autoIncrement:指定主键是否采用自增长策略,如果不需要自增长可不用配置;
    dataNode:指定表所在的逻辑数据节点,如果有多个节点可使用逗号分隔,也可使用表 达式dn$0-99 指定在0-99这100个节点上都使用(如果是一个节点上有多个库可使用db1$0-99);
    rule:指定路由规则;
    ruleRequired:该属性用于指定表是否绑定分片规则,如果为true,但是没有配置rule的话,程序会报错
    type:定义逻辑表的类型,目前只有“全局表”和“普通表”两种类型。
    全剧表:global/普通表:不指定该值
    needAddLimit:指定表是否需要自动的在每条语句加上limit 100限制,如果语句中有limit则不会在次添加,默认true

    三、childTable节点中各属性说明:
    name:定义子表的表名
    joinKey:插入子表的时候会使用这个列的值查找父表存储的数据节点
    parentKey:属性指定的值一般为与父亲建立关系的列名。程序首先会获取joinKey的值,再通过parentKey属性指定的列名产生查询语句,通过执行该语句得到父表存储在哪个分片上,从而确定子表存储的位置。
    primaryKey:同table标签一样
    needAddLimit:同table标签一样


    逻辑数据节点与物理主机配置:

     


    四、dataNode节点中各属性说明:
    name:指定逻辑数据节点名称;
    dataHost:指定逻辑数据节点物理主机节点名称;
    database:指定物理主机数据库。如果一个节点上有多个库,可使用表达式db$0-99,表示指定0-99这100个数据库;


    五、dataHost 节点中各属性说明:
    定义了具体的数据库实例额、读写分离配置和心跳语句。

    name:物理主机节点名称;
    maxCon:指定物理主机服务最大支持1000个连接;指定每个读写实例都会使用这个属性来实例化出连接池的最大连接。
    minCon:指定物理主机服务最小保持10个连接;指定每个读写实例连接池的最小连接,初始化连接池的大小
    writeType:指定写入类型;
    l 0,所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties
    l 1,所有写操作都随机的发送到配置的writeHost,1.5后废除不推荐
    dbType:指定数据库类型;
    dbDriver:指定数据库驱动;目前可选的值有native和JDBC。
    balance:指定物理主机服务的负载模式。负载均衡类型,目前取值有3种:
    l 0,不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
    l 1,全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡;
    l 2,所有的readHost与writeHost都参与select语句的负载均衡,也就是说,当系统的写操作压力不大的情况下,所有主机都可以承担负载均衡;
    l 3,所有读请求随机的分发到writeHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3没有。
    switchType:
    -1 表示不自动切换
    1 默认值,自动切换
    2 基于MySQL主从同步的状态决定是否切换
    心跳语句为 show slave status
    3 基于MySQL galary cluster的切换机制(适合集群)(1.4.1)
    心跳语句为show status like ‘sweep%'
    tempReadHostAvailable:
    如果配置了这个属性 writeHost下面的readHost仍旧可用,默认0,可配置(0、1)



    一个dataHost元素,表明进行了数据同步的一组数据库,DBA需要保证这一组数据库服务器是进行了数据同步复制的。writeHost相当于Master DB Server,而其下的readHost则是与从数据库同步的Slave DB Server。当dataHost配置了多个writeHost的时候,任何一个writeHost宕机,Mycat 都会自动检测出来,并尝试切换到下一个可用的writeHost;

    MyCAT支持高可用性的企业级特性,根据您的应用特性,可以配置如下几种策略:
    l 后端数据库配置为一主多从,并开启读写分离机制;
    l 后端数据库配置为双主双从(多从),并开启读写分离机制;
    l 后端数据库配置为多主多从,并开启读写分离机制;
    后面两种配置,具有更高的系统可用性,当其中一个写节点(主节点)失败后,Mycat会侦测出来(心跳机制)并自动切换到下一个写节点,MyCAT在任何时候,只会往一个写节点写数据;

    下面是典型的双主双从的Mysql集群配置:


    六、heartbeat标签
    这个标签指明用于和后端数据库进行心跳检查的语句。
    Mysql可以使用 select user()
    Oracle select 1 from dual
    主从切换必须是:show slave status

    七、writeHost标签、readHost标签
    如何writeHost指定的后端数据库宕机,那么该下面的所有readHost都不可用。

    host:标识不同的实例。一般writeHost用*M1,readjust用*S1
    url:实例连接地址
    user :用户名
    password:密码
    weight:权重配置在readhost中作为读节点的权重(1.4以后)
    usingDecrypt:是否对密码加密默认0 否,开启 1


  • 相关阅读:
    入职一家新公司
    简单的线性数据比较
    python编程导论读书笔记【4】终章
    Hadoop构建数据仓库实践读书笔记【3】__数据仓库设计基础
    清北最后冲刺 张浩威 吃鱼
    新汉诺塔
    小朋友的数字
    硬币购物
    HH的项链
    求逆序对 && 逆序对数列
  • 原文地址:https://www.cnblogs.com/756623607-zhang/p/6850933.html
Copyright © 2011-2022 走看看