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










  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值