• 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 做数据切分(成本低)










  • 相关阅读:
    软件工程作业3.28
    毕业论文管理系统建模图
    软件工程建模图作业
    酒店管理系统
    闪屏和功能引导页面代码编写
    Android算法编程代码
    3.28软件工程作业
    毕业论文管理系统
    图书管理系统建模图
    酒店预订系统故事
  • 原文地址:https://www.cnblogs.com/jpfss/p/8204452.html
Copyright © 2020-2023  润新知