开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(一):MyCat-入门-分片测试-schema.xml 配置】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/755/detail/13246
MyCat-入门-分片测试-schema.xml 配置
配置 schema.xml
MyCat 当中分片的配置。对于分片的配置会涉及到,MyCat 当中的两份配置文件,一份是 MyCat 的核心配置文件 schema.xml,另外一份是 server.xml。
1、对于 MyCat 的配置文件 schema.xml 这份配置文件,是 MyCat 的核心配置文件,所有关于 MyCat 当中的逻辑库、逻辑表、分片规则、数据节点、数据源等相关配置都是需要在这份配置文件当中配置的。打开这份配置文件,查看配置文件的内容。
2、使用 VI 编辑器,打开这份配置文件,使用 VI 编辑器来编写配置文件的时候,实际上并不是特别方便。因为这里面如果标签比较多很容易出错,所以这个时候我们在进行编辑的时候,采用一个工具, Notepad++ 当中的工具,插件会有一个FTP 的插件,点 Npp FTP 这个插件,点 show Npp FTP window,如下图:
会打开一个窗口,在这个里面来配对一下连接远程服务器。
点击 Add new ,弹出一个窗口,修改名称为 MyCat1,需要连接 192.157 这台服务器,端口号是 22,连接方式是 SFPT ,用户名 root,密码 itcast。
点击下图所示图标,进行连接。
3、查看根目录,刷新展示根目录下所有的文件夹。对于刚才安装的 MyCat 来说,它是存放在 user—local 这个目录下的,这里面有一个 MyCat,在 MyCat 当中有一个 conf,conf 当中有一个 schema.xml,我们要修改的是这份配置文件,双击打开。在这份配置文件中,如 schema、table、dataNode 在 MyCat 的核心概念中提到过。
schema 配置的是逻辑库,table 配置的是逻辑表,dataNode 是数据节点,dataHost 是节点主机,在这份配置文件当中,主要配置的就是这些信息。
4、schema:标签用于定义 Mycat 实例中的逻辑库
Table:标签定义了 MyCat 中的逻辑表, rule 用于报定分片规则, auto−sharding-long 的分片规则是按ID值的范围进行分片,1-5000000 为第 1 片,5000001-10000000 为第 2 片……具体设置我们会在第四节中讲解。
dataNode:标签定义了 Mycat 中的数据节点,也就是我们通常说所的数据分片。
dataHost:标签在 mycat 逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳活句。
5、要配置逻辑库的操作,在这里面附有一个逻辑库,逻辑库下面有一个 TB_TEST 逻辑表,逻辑表又要进行分片,分到三个节点主机上。
6、首先来看 schema 这里会有一个逻辑库,逻辑库我们叫他 ITCAST。
<schema name="ITCAST"checkSQLschema=
"true"sqlMaxLimit="100">
只修改需要修改的部分,其他默认固定的东西不要动。table指的是逻辑表,逻辑表的表名叫 TB_TEST。
<table name="TB_TEST"dataNode="dn1,dn2,dn3"rule
="auto-sharding-long"/>
table 当中有一个属性叫 dataNode,这个 dataNode 指的是逻辑表,指在哪些数据节点中存在,这张表中的数据到底在哪些数据节点中存放呢?
dn1,dn2,dn3 实际上是一个别名,他引用的是下面 dataNode 当中的内容值。
<dataNode name="dn1"dataHost="localhost1"database
="db1"/>
<dataNode name="dn2"dataHost="localhost1"database
="db2"/>
<dataNode name="dn3"dataHost="localhost1"database
="db3"/>
dataNode 指的是 dataHost ,哪个 dataHost?localhost1 引用的是 <dataHost name="localhost 1"maxCon="1000"minCon
="10" balance="0"
引用的是下图所示地址。
还要指定 database 数据库,数据节点关联的是 db1 这个数据库。
<dataNode name="dn1"dataHost="localhost1"database
="db1"/>
<dataNode name="dn2"dataHost="localhost1"database
="db1"/>
<dataNode name="dn3"dataHost="localhost1"database
="db1"/>
dn1 关联的是 localhost1,对于我们来说会有三个 dataHost,dn1 对应 db1,dn2 对应 db2,所以这里不应该是 localhost 1,而是 localhost 2,localhost 3,但是在 local host 123 这三个节点中,都会有一个同名的数据库叫 db1。
dataHost 指的是下面 dataHost 的内容值。
<dataHost name="localhost 1"maxCon="1000"minCon
="10"balance="0"
writeType="0" dbType="mysql" dbDriver="native"switchType
="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1"url="localhost:3306"user
="root"password="123456">
</writeHost>
</dataHost>
既然有 local host 1,local host 2,local host 3,也就是说这个内容值也要配置多套。
<dataHost name="localhost 2"maxCon="1000"minCon
="10"balance="0"
writeType="0" dbType="mysql" dbDriver="native"switchType
="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1"url="localhost:3306"user
="root"password="123456">
</writeHost>
</dataHost>
<dataHost name="localhost 3"maxCon="1000"minCon
="10"balance="0"
writeType="0" dbType="mysql" dbDriver="native"switchType
="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1"url="localhost:3306"user
="root"password="123456">
</writeHost>
</dataHost>
7、我们继续来看 dataHost 当中的配置,在 dataHost 当中 local host 1 是它的节点名称,这些属性大家目前先不关心。
<dataHost name="localhost 1"maxCon="1000"minCon
="10"balance="0"
writeType="0" dbType="mysql" dbDriver="native"switchType
="1" slaveThreshold="100">
紧接着还有一个
heartbeat(<heartbeat>select user()</heartbeat>),这个是 MyCat 当中的心跳,就是监测下面这些 MySQL是否还能正常运行,是心跳监测体制,我们也不用动。
接下来还有一个叫做 writeHost,数据写入节点是哪一个,也就是我们对应的数据源。最终我们分片的数据,是要存放在数据库当中的,存放在 MySQL 当中的数据库,要指定关联的是哪个 MySQL 服务,所以我们需要修改下图光标所是地方。
修改如下图,密码要改成自己的密码 itcast。
8、这样这份配置文件就基本完成了,回过头来,我们简单解读一下刚才所做的配置。
首先在上面 scheme 当中( !DOCTYPE mycat:schema SYSTEM"schema. dtd">),我们配置了逻辑库的库名,在这个逻辑库当中只有一张逻辑表 TB_TEST,这张逻辑表由于进行分片,分片这张表会存在三个节点当中,分别是 dn1,dn2,dn3,这三个节点分别关联 local host 1,也就是 192.168.192.157:3306 这台数据库,关联的是这台数据库中 db1 这个数据库; local host 2 关联的是 192.168.192.158 上面的 db1; local host 3 关联的是 192.168.192.159 上面的 db1,这样关于 schema.xml 当中的逻辑库,逻辑表,以及数据节点这块的配置已经完成了。








