<?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>
mycat 之datanode datahost writehost readhost 区别
最新推荐文章于 2022-09-02 18:00:00 发布
可以这样理解:
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 做数据切分(成本低)