MyCat初体验----数据分片(一)

前提

MyCat版本 :1.6.7.4
MySQL版本 :5.7.26

1.下载

MyCat的一些介绍,MyCat的下载地址,直接解压缩即可,无需安装,这里就不在过多介绍了。

2.配置

其实简单分片测试需要改动的地方不多,但是首次接触的情况下,难免对很多东西不了解,改东西也容易改错,多多少少会出现问题,下面我们就简单的来看下需要我们进行改动的文件。

2.1.schema.xml

MyCat的配置文件都放在MyCat目录下的conf文件夹下,首先我们来看下schema文件。schema文件是MyCat的重要配置文件之一,管理着逻辑库、表、分片规则、数据节点以及数据源。

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

	<schema name="TESDB" checkSQLschema="true" sqlMaxLimit="100">
		<!-- auto sharding by id (long) -->
		<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
		<!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"
			/> -->
	</schema>
	<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
		/> -->
	<dataNode name="dn1" dataHost="localhost1" database="db1" />
	<dataNode name="dn2" dataHost="localhost1" database="db2" />
	<dataNode name="dn3" dataHost="localhost1" database="db3" />
	<!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" />
	 <dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" />
	<dataNode	name="jdbc_dn2" dataHost="jdbchost" database="db2" />
	<dataNode name="jdbc_dn3" 	dataHost="jdbchost" database="db3" /> -->
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<!-- can have multi write hosts -->
		<writeHost host="hostM1" url="localhost:3306" user="root"
				   password="123456">
		</writeHost>
		<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
	</dataHost>
	<!--
		<dataHost name="sequoiadb1" maxCon="1000" minCon="1" balance="0" dbType="sequoiadb" dbDriver="jdbc">
		<heartbeat> 		</heartbeat>
		 <writeHost host="hostM1" url="sequoiadb://1426587161.dbaas.sequoialab.net:11920/SAMPLE" user="jifeng" 	password="jifeng"></writeHost>
		 </dataHost>

	  <dataHost name="oracle1" maxCon="1000" minCon="1" balance="0" writeType="0" 	dbType="oracle" dbDriver="jdbc"> <heartbeat>select 1 from dual</heartbeat>
		<connectionInitSql>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'</connectionInitSql>
		<writeHost host="hostM1" url="jdbc:oracle:thin:@127.0.0.1:1521:nange" user="base" 	password="123456" > </writeHost> </dataHost>

		<dataHost name="jdbchost" maxCon="1000" 	minCon="1" balance="0" writeType="0" dbType="mongodb" dbDriver="jdbc">
		<heartbeat>select 	user()</heartbeat>
		<writeHost host="hostM" url="mongodb://192.168.0.99/test" user="admin" password="123456" ></writeHost> </dataHost>

		<dataHost name="sparksql" maxCon="1000" minCon="1" balance="0" dbType="spark" dbDriver="jdbc">
		<heartbeat> </heartbeat>
		 <writeHost host="hostM1" url="jdbc:hive2://feng01:10000" user="jifeng" 	password="jifeng"></writeHost> </dataHost> -->

	<!-- <dataHost name="jdbchost" maxCon="1000" minCon="10" balance="0" dbType="mysql"
		dbDriver="jdbc"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1"
		url="jdbc:mysql://localhost:3306" user="root" password="123456"> </writeHost>
		</dataHost> -->
</mycat:schema>

schema标签

一个schema标签代表一个逻辑库,每个逻辑库都有自己的相关配置,可以根据情况定义多个逻辑库。

name属性用于定义逻辑库的名称。
checkSQLschema属性则用于检测SQL语句中带了逻辑库名称是否去掉。
例如

select * from TESTDB.travelrecord;

如果为true,则去掉,语句简化为

select * from travelrecord;

但是非逻辑库名称,则无效,例如

select * from db1.travelrecord;

其中db1不会被删除。

注意:Linux 下部署安装MySQL,默认不忽略表名大小写,需要手动到/etc/my.cnf 下配置lower_case_table_names=1使Linux环境下MySQL忽略表名大小写,否则使用MyCAT的时候会提示找不到表的错误!

sqlMaxLimit用于定义默认显示信息的数量,例如定义为100

select * from TESTDB.travelrecord;

实际等同于

select * from TESTDB.travelrecord limit 100;

当然,如果SQL语句中显示指定了limit,则不受该属性约束。

table标签

逻辑库中定义的逻辑表。
name用于定义逻辑表的名称。
dataNode定义这个逻辑表所属的dataNode,该属性的值需要的dataNode标签中name属性的值相互对应。
rule指定逻辑表需要使用的规则名称,该名称需在rule.xml中定义,具体可参考rule.xml相关介绍。

dataNode标签

用于定义MyCat数据节点,也就是数据分片,通俗点讲一个dataNode对应一个物理数据库。
name定义数据节点的名称,table标签中dataNode属性使用。
dataHost对应dataHost标签中的name属性值。
database对应的具体物理数据库。

dataHost标签

name dataHost名称,供dataNode的dataHost使用。
maxCon 连接池最大连接数
minCon 连接池最小连接数
dbType 数据库类型
dbDriver 连接数据库的Driver类型

heartbeat标签

用于和后端数据库进行心跳检查的语句。

writeHost标签

host一般writeHost我们使用*M1,readHost我们用*S1
url 物理数据库host+端口 localhost:3306
user 物理数据库用户名
password 物理数据库密码

虽然每个属性都有自己的意义,但是如果不做深入研究,只需要注意几个标签的几个属性即可。

schema标签 name属性
table标签 name、dataNode属性
dataNode标签 name、datahost、database属性
dataHost标签 name属性
writeHost标签 url、user、password

当然如果仅做测试,目前只需要修改writeHost标签的几个属性即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章