zoukankan      html  css  js  c++  java
  • mycat中间件安装与使用

    前提:

    安装JDK版本在7.0及其以上

    1、下载:

    下载地址在:http://dl.mycat.io/      选择1.6-release版本下载

    2、安装:

    直接解压即可:

    tar -zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

    3、配置:

    配置JDK环境变量,mycat环境变量

    vim /etc/profile

    MYCAT_HOME=/usr/local/Mycat

    vim /etc/hosts      配置集群对应IP

     

    wrapper.conf:用来配置JVM虚拟机内存

    wrapper.java.command=/lib/jvm/bin/java      #JAVA目录下JAVA命令所在

    wrapper.working.dir=..

    ---------------------------JVM参数调优-------------------------------------

    wrapper.java.additional.1=-DMYCAT_HOME=.
    wrapper.java.additional.2=-server
    wrapper.java.additional.3=-XX:MaxPermSize=64M
    wrapper.java.additional.4=-XX:+AggressiveOpts
    wrapper.java.additional.5=-XX:MaxDirectMemorySize=2G
    wrapper.java.additional.6=-Dcom.sun.management.jmxremote
    wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
    wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
    wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false
    wrapper.java.additional.10=-Xmx4G
    wrapper.java.additional.11=-Xms1G

    # Java Additional Parameters
    #wrapper.java.additional.1=
    wrapper.java.additional.1=-DMYCAT_HOME=.
    wrapper.java.additional.2=-server
    wrapper.java.additional.3=-XX:MaxPermSize=64M
    wrapper.java.additional.4=-XX:+AggressiveOpts
    #堆内存适度大小,直接映射内存尽可能大,两种一起占据服务器的1/2-2/3的内存
    wrapper.java.additional.5=-XX:MaxDirectMemorySize=6G
    wrapper.java.additional.6=-Dcom.sun.management.jmxremote
    wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
    wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
    wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false
    #无论扩展还是缩减新生代空间或老年代空间都需要进行Full GC,而Full GC会降低程序的吞吐量并导致更长的延迟。
    wrapper.java.additional.10=-Xmx4G
    wrapper.java.additional.11=-Xms4G

    mycat配置主要有三个文件配置,都在conf目录下。分别是:server.xml     schema.xml      rule.xml

    server.xml:主要用来配置连接mycat的用户与密码。

    <user name="root">        #配置连接mycat的用户名
      <property name="password">123456</property>      #配置连接mycat的密码
        <property name="schemas">test,test1</property>    #配置数据库名,逻辑数据库,与下面schema.xml配置文件中的逻辑库对应,逻辑库是在mycat上存在的库

        <!-- 表级 DML 权限设置 -->
        <!--
        <privileges check="false">
          <schema name="test" dml="0110" >
            <table name="test" dml="0000"></table>
          </schema>

          <schema name="test1" dml="0110" >
            <table name="test" dml="0000"></table>
          </schema>
        </privileges>
        -->
    </user>

    schema.xml:主要用来配置数据库设置

    <?xml version="1.0" ?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="test" checkSQLschema="false" sqlMaxLimit="100" >        #逻辑数据库名称,对应上面server.xml里的个数,有两个就写两个schema标签
          <table name="test" primaryKey="id" type="global" autoIncrement=“true” dataNode="dn1,dn2,dn3" rule="mod-long" ></table>    #这里实现分库分表的标签。dataNode对应不同的数据节点,name为表名,rule为分表规则,这里一般在企业里用的最多的时取模分表,可控性高。分表的数量要与rule.xml中的数量配置一致

          <table name="table" primaryKey="id" type="global" autoIncrement=“true” dataNode="dn1" rule="mod-long" ></table>
        </schema>

        <schema name="test1" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2">
          <!—配置需要分片的表-->
          <table name=“test” primaryKey="id" type="global" autoIncrement=“true” dataNode=”dn2”/>
        </schema>

    #如果不需要分表,那么直接可以:注意我这里是两个逻辑库,所以有两个标签,dataNode对应到下面的<dataNode>标签,如果有第三个库,那么就增加一个schema标签同时dataNode设置为dn3,以此类推

    <schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>

    <schema name="test1" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2"></schema>

    #节点名,与schema或table中dataNode对应    dataHost:数据库实例名称,也可以是数据节点的IP别名   database:物理数据库中数据库名
    <dataNode name="dn1" dataHost="192.168.88.129" database="test"/>
    <dataNode name="dn2" dataHost="192.168.88.129" database="test1"/>
    
    
    如果需要分表,那么dataNode标签应该这样定义:对应上面的table标签。注意这里是上面有table标签,下面才有的这三个dataNode。name对应上面table标签里的dataNode。
    <dataNode name="dn1" dataHost="192.168.88.129" database="test"/>
    <dataNode name="dn2" dataHost="192.168.88.129" database="test1"/>
    <dataNode name="dn3" dataHost="192.168.88.129" database="test2"/>
     

    #dataHost:物理数据库名,与dataNode中dataHost对应 balance:负载均衡方式,下面有说明 writeType:写入方式 dbType:数据库类型 <dataHost name="db1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100"> #心跳检查语句,后面有分号 <heartbeat>show slave status</heartbeat> <writeHost host="hostM1" url="192.168.88.129:13306" user="root" password="123456">    #这里配置数据库账号和密码,读写节点 <readHost host="hostS2" url="192.168.88.133:13306" user="root" password="123456"/> </writeHost> </dataHost> </
    mycat:schema>

    #在一主一从环境中,负载均衡与读写分离可以这样设置:
    <dataHost name="db1" maxCon="1000" minCon="10" balance="1" writeType="0"
                  dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
            #心跳检查语句,后面有分号
            <heartbeat>show slave status;</heartbeat>
            <writeHost host="hostM1" url="192.168.88.129:13306" user="root" password="123456"/>    #这里配置数据库账号和密码,读写节点
        <writeHost host="hostS1" url="192.168.88.133:13306" user="root" password="123456"/>      #这里将writeHost标签写在外面就代表了高可用的备机
        </dataHost>
    </mycat:schema>
     

    balance:

    负载均衡类型,目前的取值有 3 种:

    1.balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 write Host 上。 

    2.balance="1",写操作在主,读操作在从
    3.balance="2",所有读操作都随机的在 write Host、readhost 上分发。 
    4.balance="3",所有读请求随机的分发到 wiriter Host 对应的 readhost 执行,writer Host 不负担读压

    关于分片表中dataNode和dataHost的理解:

      

      Mycat 目前没有出来跨分片的事务强一致性支持,目前单库内部可以保证事务的完整性,如果跨库事务, 在执行的时候任何分片出错,可以保证所有分片回滚,但是一旦应用发起 commit 指令,无法保证所有分片都成 功,考虑到某个分片挂的可能性不大所以称为弱 xa。           ----摘自mycat官方文档

      参考:https://blog.csdn.net/u013898617/article/details/80402956

     
  • 相关阅读:
    Python读写文件学习笔记
    前端轻量级、简单、易用的富文本编辑器 wangEditor 的基本用法
    选择本地文件上传控件 input标签
    push 和 append 以及appendchild 用法和区别
    关于时间获取和时间戳的换算
    动态设置html根字体大小(随着设备屏幕的大小而变化,从而实现响应式)
    JS 判断是否为安卓或IOS系统
    JS动态获取 Url 参数
    for 循环遍历数据动态渲染html
    VUE框架下安装自带http协议
  • 原文地址:https://www.cnblogs.com/magmell/p/9550087.html
Copyright © 2011-2022 走看看