dataHost标签
作为schema.xml中最后一个标签,该标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例,读写分离配置和心跳语句。
其配置如下:
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="localhost:3306" user="root" password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS1" url="localhost:3306" user="root" password="123456"/>
</writeHost>
<writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/>
</dataHost>
dataHost标签相关属性如下:
属性名 | 值 | 数量限制 | 描述 |
---|---|---|---|
name | String | (1) | dataHost名称 |
maxCon | Integer | (1) | 读写实例连接池的最大连接,标签内嵌套的 writeHost、readHost 标签都会使用这个属性的值来实例化出连接池的最大连接数 |
minCon | Integer | (1) | 读写实例连接池的最小连接 |
balance | Integer | (1) | 负载均衡类型balance=“0”,不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。balance=“1”,全部的 readHost 与 stand by writeHost 参与 select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。balance=“2”,所有读操作都随机的在 writeHost、readhost 上分发。balance=“3”,所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力 |
writeType | Integer | (1) | writeType=“0”, 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .writeType=“1”,所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。switchType 属性 |
dbType | String | (1) | 后端连接的数据库类型 |
dbDriver | String | (1) | 指定连接后端数据库使用的 Driver,目前可选的值有 native 和 JDBC |
writeHost和readHost标签
这两个标签都指定后端数据库的相关配置给mycat,用于实例化后端连接池,唯一不同的是,writeHost指定写实例,readHost指定读实例,组着这些读写实例来满足系统的要求
在一个dataHost内可以定义多个writeHost和readHost,但是如果writeHost指定的后端数据库宕机,那么这个writeHost绑定的所有readHost都将不可用,另一方面,由于这个writeHost宕机系统会自动检测到,并切换到备用的writeHost上去。
这两个标签属性相同,属性如下:
属性名 | 值 | 数量限制 | 描述 |
---|---|---|---|
host | String | (1) | 用于标识不同实例,一般 writeHost我们使用M1,readHost 我们用S1。 |
url | String | (1) | 后端实例连接地址,如果是使用 native 的 dbDriver,则一般为 address:port 这种形式。用 JDBC 或其他的dbDriver,则需要特殊指定。当使用 JDBC 时则可以这么写:jdbc:mysql://localhost:3306/ |
password | String | (1) | 后端存储实例需要的密码。 |
user | String | (1) | 后端存储实例需要的用户名字。 |
weight | String | (1) | 权重 配置在 readhost 中作为读节点的权重(1.4 以后)。 |
usingDecrypt | String | (1) | 是否对密码加密默认 0 否 如需要开启配置 1,同时使用加密程序对密码加密 |