zoukankan      html  css  js  c++  java
  • mycat配置数据库集群

    所有的集群配置,都必须配置多主多从模式,即多个master节点相互之间配置主从,如,master1和slave1为第一组主从,master2和slave2为第二组主从,master1和master2互为对方的主从。 

    如下配置方式为两个主从模型,两个writeHost互为主从(缺陷:可能有I/O延迟问题)

    配置解释:

    balance:0 //不开启读写分离,所有读操作都发送到当前可用的writeHost上

    balance:1 //全部的readHost与stand by writeHost 参与select 语句的负载均衡(常用)

    balance:2 //所有的读操作都随机的在writeHost、readHost上分发

    balance:3 //所有的读操作都随机的分发到writeHost对应的readHost执行,writeHost不负担读压力

    writeType:0自动主从(在1.4以后支持了主从关系,但是并没有支持主从复制) 也就是mycat会自动分配主从,如果说在同一个dataHost标签中配置了多个writeHost, 则mycat会自动分配主从(常用)

    所有写操作发送到配置的第一个writeHost,第一个挂了切换到第二个,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties

    writeType:1所有写操作都随机的发送到配置的 writeHost(1.5版本之前生效)

    switchType:无论是-1还是1都根据的是mycat所自带的主从关系

    switchType:-1不自动切换 writeHost配置的规则为一台主节点一台从节点 如果主节点宕机,从节点还是从节点,并不会自动切换为主节点

    switchType:1自动切换 根据的是mysql所配置主从关系(常用)

    switchType:2根据mysql配置主从进行切换(监视mysql的主从心跳) Slave_IO_Runing(YES) Slave_SQL_Running(YES)(可以解决I/O延迟问题)

    当心跳检测获取的数据发现了I/O延迟,则读做自动定位到writeHost中,如果没有延迟,则读操作自动定位到readHost中,建议为不同的表格定位不同的dataHost节点

    3:和2一样,只是2为单节点,3为集群模式

     第一种集群配置方案如下:

    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
                  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
            <heartbeat>select user()</heartbeat>
            <!-- can have multi write hosts -->
            <writeHost host="hostM1" url="192.168.209.130:3306" user="root"
                       password="123456">
                <!-- can have multi read hosts -->
                <readHost host="hostS2" url="192.168.209.130:3306" user="root" password="123456" />
            </writeHost>
        <writeHost host="hostM2" url="192.168.209.130:3306" user="root"
                       password="123456">
                <!-- can have multi read hosts -->
                <readHost host="hostS2" url="192.168.209.130:3306" user="root" password="123456" />
            </writeHost>
    </dataHost>

     第二种集群配置方案如下:

    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
          
            <table name="company"   dataNode="dn1,dn2,dn3" rule="crc32slot" />
            <table name="goods"   dataNode="dn4,dn5,dn6" rule="crc32slot1" /> //在mycat中,rule.xml中定义的分片规则只能给一个表格使用,如果有多个表格使用同一个分片规则,需要在rule.xml中再复制一个tableRule节点
     </schema>
        <dataNode name="dn1" dataHost="localhost1" database="db1" />
        <dataNode name="dn2" dataHost="localhost1" database="db2" />
        <dataNode name="dn3" dataHost="localhost1" database="db3" />

        <dataNode name="dn4" dataHost="localhost2" database="db1" />
        <dataNode name="dn5" dataHost="localhost2" database="db2" />
        <dataNode name="dn6" dataHost="localhost2" database="db3" />

      
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
                  writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">
            <heartbeat>show slave status</heartbeat>
            <!-- can have multi write hosts -->
            <writeHost host="hostM1" url="192.168.209.130:3306" user="root"
                       password="123456">
            </writeHost>
            <writeHost host="hostS1" url="192.168.209.130:3306" user="root"
                       password="123456" />
        </dataHost>
      

        <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
          writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
          <heartbeat>show slave status</heartbeat>
    <!-- can have multi write hosts -->
          <writeHost host="hostM2" url="192.168.209.130:3306" user="root"
        password="123456">
          </writeHost>
          <writeHost host="hostS1" url="192.168.209.130:3306" user="root"
          password="123456" />
    </dataHost>

    上图为一套高可用集群,任意一个节点done机都有备份可以替代

    在所有Mycat服务所在主机中增加状态检查服务脚本,此操作为HaProxy提供对Mycat服务状态检查的依据,本案例中使用xinetd实现。通过xinetd,Haproxy可以用httpchk来检测Mycat的存活状态,(xinetd即extened internet daemon,是新一代的网络守护进程服务程序,又

    叫超级Internet服务器,经常用来管理多种轻量级internet服务)

    注意:第一种集群配置中需要手动配置两台master主主同步,两台master的mysql配置文件需要在[mysqld]下加上

    log-slave-updates=true(又做主又做从)

    然后开启主主同步,方法与读写分离配置主从方法一样,这样其中一台master done机重启,会自动与另一台master数据同步

  • 相关阅读:
    Good Bye 2014 B. New Year Permutation(floyd )
    hdu 5147 Sequence II (树状数组 求逆序数)
    POJ 1696 Space Ant (极角排序)
    POJ 2398 Toy Storage (叉积判断点和线段的关系)
    hdu 2897 邂逅明下 (简单巴什博弈)
    poj 1410 Intersection (判断线段与矩形相交 判线段相交)
    HDU 3400 Line belt (三分嵌套)
    Codeforces Round #279 (Div. 2) C. Hacking Cypher (大数取余)
    Codeforces Round #179 (Div. 2) B. Yaroslav and Two Strings (容斥原理)
    hdu 1576 A/B (求逆元)
  • 原文地址:https://www.cnblogs.com/fengwenzhee/p/14279024.html
Copyright © 2011-2022 走看看