• 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数据同步

  • 相关阅读:
    Python IDLE快捷键一览
    面试题——中
    面试题——君
    面试题——太(下)
    面试题——2面常见问题
    MYSQL数据库设计规范与原则
    字符串操作
    集合
    java-数组
    java异常处理机制
  • 原文地址:https://www.cnblogs.com/fengwenzhee/p/14279024.html
Copyright © 2020-2023  润新知