通过上节课的学习,我们主要是关注其中的四个配置文件,分别是如下
1、配置逻辑库、逻辑表等相关信息
xxxxxxxxxx
cd /usr/local/mycat/conf && vim schema.xml
2、配置MyCat运行的服务信息,例如用户及其用户权限
xxxxxxxxxx
cd /usr/local/mycat/conf && vim server.xml
3、配置分片规则
xxxxxxxxxx
cd /usr/local/mycat/conf && vim rule.xml
4、配置单台分片节点服务器的id值上限,默认是500万
xxxxxxxxxx
cd /usr/local/mycat/conf && vim autopartition-long.txt
我们会在下面详细介绍schema.xml、server.xml、rule.xml配置文件
schema.xml作为MyCat中最重要的配置文件之一,涵盖了MyCat的逻辑库、逻辑表、分片规则、分片节点及数据源的配置 主要包含以下三组标签(我们打开schema.xml文件后,会看到以html格式的文本,里面都是一些标签,其中我们会详细学三组重要的标签)
一、 schema标签 schema标签用于定义MyCat实例中的逻辑库,一个MyCat实例中,可以有多个逻辑库,可以通过schema标签来划分不同的逻辑库。 MyCat中的逻辑库的概念,等同于MySQL中的数据库概念,需要操作某个逻辑库下的表时,也需要切换逻辑库(use xxx)。
核心属性:
1、name: 指定自定义的逻辑库库名
2、checkSQLschema: 在SQL语句操作时指定了数据库名称,执行时是否自动去除。true: 自动去除,false: 不自动去除。举例如下 true: 在没有use DB01的情况下,可以直接使用DB01.tb_order来查看表数据 false: 必须先use DB01,才能查看BD01数据库里面的表数据
3、sqlMaxLimit: 如果未指定limit进行查询,列表查询模式查询多少条记录。即在不手动指定limit情况下,最多可查询多少条记录
4、table: schema标签里面的table标签定义了MyCat中逻辑库schema下的逻辑表,所以需要拆分的表都需要在table标签中定义。有如下属性 (1)name: 定义逻辑表表名,在该逻辑表下唯一 (2)dataNode: 定义逻辑表所属的dataNode,该属性需要与dataNode标签中的name相对应。多个dataNode,用逗号分隔 (3)rule: 分片规则的名字,分片规则名字是在rule.xml中定义的。注意只有使用分表的时候才有,如果是使用分库的话,是不写rule属性的 (4)primaryKey: 逻辑表对应真实表的主键 (5)type: 逻辑表的类型,目前逻辑表只有全局表和普通表,如果为配置,就是普通表。配置为global,就是全局表
二、 dataNode标签 dataNode标签中定义了MyCat中的数据节点,也就是我们通常说的数据分片。一个dataNode标签就是一个独立的数据分片
核心属性:
1、name: 定义数据节点名称
2、dataHost: 数据库实例主机名称,引用自dataHost标签中name属性
3、database: 定义分片所属数据库
三、 dataHost标签 dataHost标签在MyCat逻辑库中作为底层标签存在,直接定义了具体的数据库实例、读写分离、心跳语句
核心属性:
1、name: 唯一标识,供上层标签使用
2、maxCon/minCon: 最大连接数/最小连接数
3、balance: 负载均衡策略,取值0,1,2,3共4种取值,分别对应了不同的负载均衡策略。后面学读写分离的时候会重点介绍
4、writeType: 写操作的分发方式。0表示所以的写操作都转发到第一个writeHost,第一个挂了,才会切换到第二个。1表示写操作随机分发到配置的writeHost
5、dbDriver: 数据库驱动,支持两种,分别是native、jdbc
rule.xml里面的是分片规则,定义所有拆分表的规则,在使用过程中可以灵活的使用分片算法,或者对同一个分片算法使用不同的参数,来达到分片过程的可配置化。 主要包含以下两类标签: tableRule、Function
server.xml配置文件包含了MyCat的系统配置信息。 主要包含以下两个重要的标签:system、user
一、system标签 系统在运行时的参数及配置信息。也就是对应的系统配置项及其含义,里面可以自定义配置MyCat的端口,默认是8066端口。后面还会讲9066,是MyCat的管理端口
二、user标签 主要配置的是当前MyCat服务中间件,能够被哪些用户访问,用户名是什么,密码是什么,用户能够访问哪些数据库,以及访问数据库时所具备的权限, 简单说就是配置的是用户及其用户所具备的权限信息
有以下属性:
1、user name: 用户名
2、property password: 密码
3、property schemas: 该用户可以访问的逻辑库,多个逻辑库之间用逗号分隔
4、check: 是否开启DML权限检查,默认为false
5、schema name:配置指定逻辑库的权限
6、table dml: 配置指定逻辑表的权限,用四位的数字表示,每一位分别表示增、查、改、删,例如1110,表示该用户拥有增查改,没有删的权限。 可以出现多个权限可选的话,会默认采用就近原则
7、property name: 是否只读,默认为false