zoukankan      html  css  js  c++  java
  • mycat 之datanode datahost writehost readhost 区别(转)

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


            <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
                    <!-- auto sharding by id (long) -->
                    <table name="file_data_lct_1" dataNode="dn1,dn2" primaryKey="id"  rule="sharding-by-murmur" autoIncrement="true" needAddLimit="true"/>
                    <table name="mycat_sequence" primaryKey="name" dataNode="dn1" />
            </schema>


            <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
                    /> -->
            <dataNode name="dn1" dataHost="localhost1" database="resource" />
            <dataNode name="dn2" dataHost="localhost2" database="crmdktest2"/>


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

                    </writeHost>

                    <writeHost host="hostM2" url="10.100.19.210:3306" user="public"
                               password="123456">
                            <readHost host="hostS4" url="10.100.19.210:3306" user="public" password="123456" />
                    </writeHost>
            </dataHost>


              <dataHost name="localhost2" maxCon="1000" minCon="10" balance="3"
                               writeType="0"   dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                    <heartbeat>select user()</heartbeat>
                    
                    <!-- can have multi write hosts -->
                    <writeHost host="hostM3" url="10.100.13.238:3306" user="crmdk_admin"
                                       password="crmdkadmin123!@#">
                            <readHost host="hostS5" url="10.100.13.238:3306" user="crmdk_admin" password="crmdkadmin123!@#" />


                    </writeHost>


            </dataHost>

    </mycat:schema>






    可以这样理解:


    mysql 的主从架构大家都知道,一主多从,或者多主多从,  这里的主 对应的就是 writehost ,从就是readhost,

    主从之间数据一致,只是读写分离,mycat 认为这就是一个datahost.


    那为什么mycat 配置那么多datahost?

    做数据分片使用,那数据分片是什么,不同datahost 上的 对应的数据源的数据内容(同一张表)是不同的。

    datahost1 是一套主从架构
    datahost2 是一套主从架构。
    两套架构里都有同一张表。

    数据存储切分依靠的是mycat的算法,插入一条数据的时候,mycat 首先会判断应该存储到那个datanode上,然后再具体的库里执行语句。




    datahost 上可以有多个库(ip ,用户名 密码 )
    datanode 就是datahost 上的一个库。


    总结 :
    datahost   就是一个一台机器的数据库的实例的ip  用户名密码连接看到的内容。
    datanode 就是 datahost 上的一个用户创建的具体的database.
    writehost  就是对datahost 的写权限。
    readhost 就是对datahost 的读权限。



    使用mycat的条件:
     1)多个datahost 多数据切分 (部署多个数据库实例,难度较大,成本高) 
    2)同一个datahost 下创建多个datanode 做数据切分(成本低)










  • 相关阅读:
    Java结束线程的三种方法(爱奇艺面试)
    Threadlocal 传递参数(百度二面)
    数据一致性 kafka 是保存副本 leader读写,follower 只备份 而 zookeeper是 leader 读写,follower负责读
    Mysql 间隙锁原理,以及Repeatable Read隔离级别下可以防止幻读原理(百度)
    SOA,SOAP,RPC,以及 RPC协议与 REST 协议之间的关系(搜狗)
    select、poll、epoll之间的区别(搜狗面试)
    windows日志查看-非法关机判断方法
    望帝春心托杜鹃 中望帝的由来~
    深入解读Quartz的原理
    Hibernate性能优化之EHCache缓存
  • 原文地址:https://www.cnblogs.com/jpfss/p/8204452.html
Copyright © 2011-2022 走看看