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










  • 相关阅读:
    webpack source map
    webpack 多页面应用打包
    webpack 资源内联
    webpack 移动端 CSSpx 自动转换成 rem
    webpack postcss插件
    css实现banner背景图上文字效果+
    css实现标题下划线效果
    Day 88 Django_DRF 序列化
    Day 87 VUE——xmall_front 案例
    Day 86 VUE——Vuex
  • 原文地址:https://www.cnblogs.com/jpfss/p/8204452.html
Copyright © 2011-2022 走看看